1. подскажите хороший x64 дизассемблер/дебаггер, желательно бесплатный, для реверс-инжиниринга прог.
2. подскажите простейший путь найти все статические функции в exe/dll, включая не импортируемые, конечно, например, хорошую удобную таблицу опкодов, чтобы сделать хотя бы правильный перебор всех инструкций и выделить все возможные call-ы.
Mna>Radare2 смотрел?
Без гуя сложновато, пока пользуюсь arkdasm. Вообще хотелось бы, чтобы дасм позволял искать по бинарному коду, как по текстовым исходникам
ksd>>2. подскажите простейший путь найти все статические функции в exe/dll, (...) Mna>IDA Pro видел или принципиально чтoб OSS?
Что такое OSS?
IDA Pro еще не смотрел, не знаю, стоит ли, все же оно сильно платное, придется где-то по торрентам качать и на работу тащщить: могут вопросы появиться у руководства.
Re[2]: да, смотрел такой, пока не очень разобрался
Здравствуйте, b0r3d0m, Вы писали:
ksd>>1. подскажите хороший x64 дизассемблер/дебаггер, желательно бесплатный, для реверс-инжиниринга прог.
B>x64dbg
как то сложно его заставить сделать то, что надо.
Re[3]: да, смотрел такой, пока не очень разобрался
Здравствуйте, 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
Или другой пример: адрес функции (не вызываемой напрямую), переданный как параметр в другую функцию — обработчик оконной процедуры, например.
Здравствуйте, ksd, Вы писали:
Mna>>Radare2 смотрел? ksd>Без гуя сложновато,
Bokken ? https://inguma.eu/projects/bokken
ksd> пока пользуюсь arkdasm. Вообще хотелось бы, чтобы дасм позволял искать по бинарному коду, как по текстовым исходникам
HtEditor? http://hte.sourceforge.net/downloads.html https://github.com/sebastianbiallas/ht
ksd>>>2. подскажите простейший путь найти все статические функции в exe/dll, (...)
Mna>>IDA Pro видел или принципиально чтoб OSS? ksd>Что такое OSS?
Open source software
ksd>IDA Pro еще не смотрел, не знаю, стоит ли, все же оно сильно платное, придется где-то по торрентам качать и на работу тащщить: могут вопросы появиться у руководства.
Snowman decompiler?
Re[2]: x64 дизасм/дебагер и как найти все функции?
Здравствуйте, b0r3d0m, Вы писали:
ksd>>как то сложно его заставить сделать то, что надо. B>Например?
есть dll-ка, надо ее дизассемблировать просто, открываешь, и?...
ладно, так не хочет, запускаем прогу, аттачимся к ней, что то показывает, но пол функционала не понятно, как запустить, как искать нужные строки куски кода?
arkdasm мало отличается. но им выгружаешь asm файл на диск, по asm файлу можно найти то, что надо, в самом гуе посмотреть по адресам дамп: все просто и понятно без мануалов.
Re[4]: ну, мне надо найти все глобальные статические функции
Здравствуйте, 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>В этой теме было обсуждение
Здравствуйте, ksd, Вы писали:
ksd>дд!
ksd>два вопроса:
ksd>1. подскажите хороший x64 дизассемблер/дебаггер, желательно бесплатный, для реверс-инжиниринга прог.
ksd>2. подскажите простейший путь найти все статические функции в exe/dll, включая не импортируемые, конечно, например, хорошую удобную таблицу опкодов, чтобы сделать хотя бы правильный перебор всех инструкций и выделить все возможные call-ы.
ksd>заранее спасибо!
Можешь не тратить время на пробы дизасмов, сразу ищи IDA Pro и пользуйся. Пока еще нет ничего и близко к функционалу иды.