Здравствуйте, 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