Здравствуйте, ksd, Вы писали:
ksd>Без гуя сложновато, пока пользуюсь arkdasm. Вообще хотелось бы, чтобы дасм позволял искать по бинарному коду, как по текстовым исходникам
HIEW такое умеет:
С той же самой версии 5.00 ТОЛЬКО В РЕЖИМЕ ДИЗАССЕМБЛЕРА можно искать команды по шаблону. (Про шаблоны см. выше). То есть если при вводе ассемблерной команды встречается в строке любой символ шаблона то пойдет поиск по шаблону, если нет — команда просто ассемблируется. Насильно ассеблировать команду можно комбинацией CtrlEnter, например при 'mov eax,[eax*2]'
Например: в режиме Decode <F7><F7>"mov ax,*" будет искать "mov ax,1234h", "mov ax,sp", и т.д.
ksd>...например, хорошую удобную таблицу опкодов, чтобы сделать хотя бы правильный перебор всех инструкций и выделить все возможные call-ы.
А чем
мануал от Intel не устраивает?
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.
Только перебором опкодов всех функций не найти. Например, таблица виртуальных функций в C++: адреса функций хранятся в таблицах произвольной длины, нет прямых call/jmp на адреса начала функций, а вызовы происходят опосредовано. Как-то так (вызов IUnknown::Release на x86):
mov ecx,[eax][8]
call ecx
Или другой пример: адрес функции (не вызываемой напрямую), переданный как параметр в другую функцию — обработчик оконной процедуры, например.
На x64 в PE есть огромная подсказка в виде RUNTIME_FUNCTION:
CodeMachine: X64 Deep Dive.
В этой теме было обсуждениеАвтор: Евгений Музыченко
Дата: 04.02.16