Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[C++] Получение адреса функции
#1
Вопрос в том как получить адрес начала инструкции функции?
Так как делаю я меня не устраивает ибо по получаемому мною адресу лежит команда jmp на начало инструкции,а не сама инструкция.
Ответ
#2
Привет, Возможно поможет снеговик ( snowman )
[Изображение: 20612c01dccd4b3a9de0d7fa8f524ffc.png]

Нажмешь как поставишь его в иду F3 и получишь то что на скриншоте
с началом адреса инструкции , и куда ( если есть ) идет переход , прыжок в данном примере jmp.

ps возможно пригодиться, если правильно понимаю вопрос.
Ответ
#3
Если нужно вычислить адрес куда ведет этот переход то я считаю так:

PHP код:
<?php 
unsigned int calcRealAddr
(unsigned char *addr)
{
if (*
addr == 0xE9)//код оператора JMP
{
//jmp operand found, calc jump addr
unsigned int jmpAddr = (unsigned int)addr + (*(int*)((unsigned int)addr + 1)) + 5;
return
calcRealAddr((unsigned char*)jmpAddr);
}
return (
unsigned int)addr;
}

Причем функция рекурсивная. Если по адресу перехода будет опять jmp будет считать дальше.
Ответ
#4
Чем собственно джамп не устраивает?

Подозреваю у вас проблема с установкой хука на джамп, так как инструкции JMP имеют относительную адресацию, а вы не пересчитываете смещение после переноса кода (либо делаете это не верно).

Ну есть прям совсем не получается то можно вот:

Код:
#define JMP_VALUE(addr) (*(DWORD*)((addr) + 1))
#define FOLLOW_JMP(addr) (JMP_VALUE(addr) + (DWORD)(addr) + 5)
#define FOLLOW_JUMPS(a) while (IS_JMP(a)) \
{ \
    a = FOLLOW_JMP(a); \
}
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Тащим IP адреса из под VPN P3iNN 1 2,385 02-08-2015, 01:30 AM
Последний пост: pickwick
  Получение значений в другой функц Effas 12 3,445 12-21-2011, 11:11 PM
Последний пост: hex1r0
  Получение переменных .. Effas 13 4,630 11-30-2011, 01:18 PM
Последний пост: hex1r0
  Скрыть ип адреса групы (пользователей) Tonchi 1 3,723 02-17-2009, 04:23 PM
Последний пост: Redvain

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)