Подскажите пожалуйста. Где можно посмотреть информацию: 1. про написание дизассемблера. 2. о том как работать на IDA. От самых азов. Я конечно так понимаю очень многое, но вот описание, думаю, не помешало бы. Заранее спасибо.
Начать в любом случае следует с дизассемблирования опкодов, главное не наделать при этом ошибок (IDA их немало имеет). Для этого беруться интеловские талмуды и читаються до посинения (пока не придет просветление). Потом придется решить самую сложную задачу - разделение кода и данных. А это уже будет гораздо сложнее. Сначала реши, для чего тебе нужен дизассемблер. Если собираешся создать конкурент IDA, то подумай - а реально ли это сделать одному человеку вообще? Если дизассемблер нужен для анализа кода, создания метаморфа или полиморфа, вывода дизасм листинга в какой-нибудь проге и.т.д. то можно найти готовый дизасм удовлетворяюший таким требованиям. И еще посмотри ветки форума: http://www.wasm.ru/forum/index.php?action=vthread&forum=5&topic=10299 http://www.wasm.ru/forum/index.php?action=vthread&forum=5&topic=6916 и может еще поможет вот это: http://ms-rem.dot-link.net/files/cadt.rar
Простой disassembler написать не сложно Opcodes в тиблице, разбор operands etc. Работающие примеры: <ul type=disc> <li>the bastard/libdisasm http://bastard.sourceforge.net/libdisasm.html <li>disasm в bochs http://bochs.sourceforge.net/ </ul>
для простых опкодов можно потренироваться в debug. этот отладчик входит в любую мелкомягкую ось. обычно просветление приходит после изучения команд вроде push ax/cx/dx/bx... или inc ax/cx.... как правило более сложные команды имеют отличия, если набраны в отладчике, а не скомпилированы из исходника. полезные линки: hxxp://exmortis.narod.ru hxxp://protools.cjb.net
реально ли это сделать одному человеку вообще а скольким чеовекам реально ? Сколко нужно чукчей чтоб вкрутить лампу ? У меня уже пройден этап талдундов. Подскажите дальнейшее направление ? Мне нужно чтоб можно было редактировать и собрирать из того что получилось после дизасемблера. Чужие дизасмы мне не нравятся.
zzzyab увеличение кол-ва разработчиков отнюдь не ведёт к пропорциональному росту скорости и эффективности разработки т.е дизасм исполняемых файлов с получением компилируемого листинга? или только участка кода? в любом случае разобрать файл так, чтобы его можно было безболезненно собрать - задача не тривиальная, оч. много подводных камней, типа структур и т.д. или тебе не важна удобочитаемость полученного кода? ведь при дизасме сколь нибудь навороченной проги ты столкнёшься с тем, что большую часть кода проще переписать заново, ориентируясь на полученный дизасм, а не в тупую копипастить в свой код. одно дело процедура - другое дело модуль целиком. к тому же достаточно многие дизассемблеры генерируют вполне удобоваримый листинг (та же IDA, к примеру) чужие в принципе (если не своё собственное - значит не подходит) или же чужие из рассмотренных? смотрел http://wasm.ru/forum/index.php?action=vthread&forum=5&topic=10355&page=1 ?
Удобочитаемость не важана. При перепечатке с листингов делаються ошибки. Поэтому я хочу чтоб у меня создавались именно асм файлы. Я уже могу дизасмить участки кода в асм файлы, интересно сделать чтобы дизасмилась вся программа целиком. Посмотрел пример по ссылке - с или паскаль (таких куча в инете), я такое не воспринимаю - програмлю только на асме.