|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Дизасемблирование |
|
Assm - [решено] Дизасемблирование
|
Старожил Сообщения: 175 |
Профиль | Отправить PM | Цитировать Доброго времени суток. Интересует дизасемблирование. Подскажите пожалуйста какую нибудь понятную литературку( лучше чтобы это была небольшая статья на каком нить сайте) по дизасемблированию. В википедии вычитал что оно бывает автоматическое. Это значит что есть программы которые сами производят процесс дизасемблирования? Интересует дизасемблирование не огромных программ а простеньких состоящих в основном из арифметических команд, и команд пересылки( лабораторные работы). Код программ не более 12 строк. Программирование происходит в среде Турбо Делфи (asm.... end Спасибо
|
|
Отправлено: 16:49, 31-03-2010 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать BlackEric, а можно поподробнее как это сделать в Турбо Делфи или Делфи 7?
|
Отправлено: 00:01, 01-04-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 435
|
Профиль | Отправить PM | Цитировать Пробую сходу.
1. От вас хотят работу с 16 битными регистрами. Делфи же 32х. Возможно он не позволит. Но попробуем. У меня bds 2006. Создаю консольное приложение program asmtest; {$APPTYPE CONSOLE} //uses // SysUtils; begin asm mov eax, $1D1D; add eax, $1D10; end; end. Открываем exeшник WinHexом. И ищем в нем HexValue 1D1D. Находим одно единственное вхождение: По offset 11952 есть строка: B8 1D 1D 00 00 05 10 1D 00 00 E8.... Я так понимаю, но не уверен, что это и есть то, что нас интересует. Пробуйте! И отпишитесь о результате. Очень интересно, что получится. |
------- Отправлено: 00:24, 01-04-2010 | #12 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать По-моему, вы что-то не то делаете.
Вам скорее всего нужно именно дизассемблировать команды вашей программы(скомпилированной), чтобы далее можно было разложить коды команд на составляющие. Для этого берёте какой-нибудь CADt by Ms-Rem, далее изучаете формат машинных команд по книге Юрова и начинаете дизассемблировать свою программку.Тогда вы будете выделять из кода т.н. КОП, флаг направления передачи данных, размер этих данных, байт mod r/m, смещение, непосредственный операнд и т.д. За список дизасм-движков благодарю HandMill'а: // продвинутые distorm поддержка x64 beaengine поддержка x64 udis86 поддержка x64 движок от mika0x65 поддержка x64 hde дизассемблер длин, поддержка x64. X86IME ассемблирование инструкций, поддержка x64 X86IME patch to compile in UNIX by nibble pvdasm // устаревшие catchy32 cadt (masm 1.1 version by cyberdoomsystems) [cadt c version] cadt.h cadt.c disit |
------- Отправлено: 00:52, 01-04-2010 | #13 |
Старожил Сообщения: 435
|
Профиль | Отправить PM | Цитировать Или же еще проще. Через PE Explorer. Дизассемблируем получившийся exeшник и в окошке видим
B81D1D0000 mov eax,00001D1Dh, где левая часть выражения, то что нам нужно http://forum.oszone.net/attachment.p...1&d=1270068897 |
------- Отправлено: 00:54, 01-04-2010 | #14 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать BlackEric, вы видимо не до конца понимаете, что есть дизассемблирование.
|
------- Отправлено: 01:11, 01-04-2010 | #15 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать DillerInc, вы правы. мне нужно получить именно то что вы сказали
|
Отправлено: 01:45, 01-04-2010 | #16 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать Цитата BlackEric:
И получим как раз тот код, что в методичке: Цитата Snake750:
Или же Snake750, сам не знает, что ему нужно. В приведенной выдержке из Цитата Snake750:
хе-хе: |
|||
------- Отправлено: 09:44, 01-04-2010 | #17 |
Старожил Сообщения: 435
|
Профиль | Отправить PM | Цитировать DillerInc, можно подробнее? Что не так?
|
------- Отправлено: 10:32, 01-04-2010 | #18 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать BlackEric, дизассемблирование - это в первую очередь разложение бинарного вида команды на составляющие(писал об этом выше).
Например, какой нам толк от последовательности следующих байт: 8Bh 35h 1Ch 68h 0A8h 00 ? А скормив указатель на эту последовательность тому же CADt, мы сможем проанализировать поля возвращённой структуры и понять суть команды ровно как и составить её мнемонику: mov esi, dword ptr [00A8681C] Просто я думаю, что препод не настолько глуп, чтобы давать такую грошевую задачу как банальный вывод бинарного вида команды. Цитата BlackEric:
|
|
------- Отправлено: 12:56, 01-04-2010 | #19 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать Цитата DillerInc:
В 16- Цитата DillerInc:
Надо бы, для начала, все задание увидеть. Правда, есть вероятность, что преподаватель эту ветку тоже прочтет |
||
------- Последний раз редактировалось CyberDaemon, 01-04-2010 в 15:18. Причина: опечатался Отправлено: 13:57, 01-04-2010 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Дизасемблирование | Steyer | Программирование и базы данных | 2 | 12-02-2004 22:29 |
|