Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Найти адрес джампа


Автор: DaVilka 22.10.2016, 13:46
Получаю адрес джампа с помощью GetProcAdress и сохраняю его в переменную adres (void **adres = 0x12345678).
По этому адресу расположена инструкция джампа по адресу 0х87654321(через отладчик смотрю). Вопрос, как методами с++ получить это адрес, куда прыгает джамп?

Автор: 500mhz 23.10.2016, 07:50
0х87654321+1   

Автор: Sajtran 24.10.2016, 08:06
средствами ОС, например, для Windows  https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspx
только зачем вам этот адрес?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nayti-adres-dzhampa-id580b43e2adbd5f041a5bd1a2#findElement_E7045_580d96c63521881bb85292d6_0

Автор: DaVilka 24.10.2016, 17:12
Sajtran, точно средствами ОС, например, для Windows  ReadProcessMemory? smile Надо для дела

500mhz, бред

Добавлено @ 17:15
Если кому интересен ответ, то разыменовываем указатель, по которому лежит адрес джампа, читаем массив байтов, убираем байт инструкции, меняем байты сторонами, адрес по которому находится джамп плюсуем с получившимся смещением + 5 байт

Автор: Alexey68 6.11.2016, 20:01
Если не ошибаюсь "ковыряете" таблицу импорта IAT (Import Address Table)?
Посмотрите PE формат... 
masm:
Код

.data
value_    dd ?
......
mov  value_, $//адрес где стоим

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)