Re[4]: ну, мне надо найти все глобальные статические функции
От: ksd Россия  
Дата: 01.07.16 10:40
Оценка:
Здравствуйте, EreTIk, Вы писали:

ETI>Здравствуйте, ksd, Вы писали:

ksd>>Без гуя сложновато, пока пользуюсь arkdasm. Вообще хотелось бы, чтобы дасм позволял искать по бинарному коду, как по текстовым исходникам

ETI>HIEW такое умеет:

ETI>

ETI>С той же самой версии 5.00 ТОЛЬКО В РЕЖИМЕ ДИЗАССЕМБЛЕРА можно искать команды по шаблону. (Про шаблоны см. выше). То есть если при вводе ассемблерной команды встречается в строке любой символ шаблона то пойдет поиск по шаблону, если нет — команда просто ассемблируется. Насильно ассеблировать команду можно комбинацией CtrlEnter, например при 'mov eax,[eax*2]'

ETI>Например: в режиме Decode <F7><F7>"mov ax,*" будет искать "mov ax,1234h", "mov ax,sp", и т.д.


ksd>>...например, хорошую удобную таблицу опкодов, чтобы сделать хотя бы правильный перебор всех инструкций и выделить все возможные call-ы.

ETI>А чем мануал от Intel не устраивает?
ETI>

ETI>Volume 2: Includes the full instruction set reference, A-Z, in one volume. Describes the format of the instruction and provides reference pages for instructions.


ETI>Только перебором опкодов всех функций не найти. Например, таблица виртуальных функций в C++: адреса функций хранятся в таблицах произвольной длины, нет прямых call/jmp на адреса начала функций, а вызовы происходят опосредовано. Как-то так (вызов IUnknown::Release на x86):

ETI>
ETI>mov          ecx,[eax][8]
ETI>call         ecx
ETI>

класс-мемеберы не очень нужны на данный момент.

ETI>Или другой пример: адрес функции (не вызываемой напрямую), переданный как параметр в другую функцию — обработчик оконной процедуры, например.

да, это тяжелый случай...

ETI>На x64 в PE есть огромная подсказка в виде RUNTIME_FUNCTION: CodeMachine: X64 Deep Dive.

ETI>В этой теме было обсуждение
Автор: Евгений Музыченко
Дата: 04.02.16
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.