Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Дизасемблирование

Ответить
Настройки темы
Assm - [решено] Дизасемблирование

Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток. Интересует дизасемблирование. Подскажите пожалуйста какую нибудь понятную литературку( лучше чтобы это была небольшая статья на каком нить сайте) по дизасемблированию. В википедии вычитал что оно бывает автоматическое. Это значит что есть программы которые сами производят процесс дизасемблирования? Интересует дизасемблирование не огромных программ а простеньких состоящих в основном из арифметических команд, и команд пересылки( лабораторные работы). Код программ не более 12 строк. Программирование происходит в среде Турбо Делфи (asm.... end Спасибо

Отправлено: 16:49, 31-03-2010

 

Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


BlackEric, а можно поподробнее как это сделать в Турбо Делфи или Делфи 7?

Отправлено: 00:01, 01-04-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить 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....
Я так понимаю, но не уверен, что это и есть то, что нас интересует.

Пробуйте! И отпишитесь о результате. Очень интересно, что получится.

-------
black-eric.livejournal.com


Отправлено: 00:24, 01-04-2010 | #12


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить 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
Благодарности: 63

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg PEExplorer.JPG
(95.1 Kb, 6 просмотров)

Или же еще проще. Через PE Explorer. Дизассемблируем получившийся exeшник и в окошке видим

B81D1D0000 mov eax,00001D1Dh, где левая часть выражения, то что нам нужно
http://forum.oszone.net/attachment.p...1&d=1270068897

-------
black-eric.livejournal.com


Отправлено: 00:54, 01-04-2010 | #14


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


BlackEric, вы видимо не до конца понимаете, что есть дизассемблирование.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 01:11, 01-04-2010 | #15


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


DillerInc, вы правы. мне нужно получить именно то что вы сказали

Отправлено: 01:45, 01-04-2010 | #16


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


Цитата BlackEric:
Или же еще проще. Через PE Explorer »
Такую тривиальную задачу можно старым добрым debug'ом решить
Код: Выделить весь код
C:\>debug
-a
13DC:0100 mov ax,1d
13DC:0103
-d 100 102
13DC:0100  B8 1D 00                                          ...
И получим как раз тот код, что в методичке:
Цитата Snake750:
Исключаяя пояснительные обозначения, получим окончательный вид команды: 1011 000 00011101 00000000 (2)= B8 1D 00(16) »
Только если надо перевести небольшой отрывок кода на ASMе в машинный (бинарный) код, то готовое решение не прокатит - нужно же будет обьяснить, почему mov ax,1d это именно B8 1D 00

Или же Snake750, сам не знает, что ему нужно. В приведенной выдержке из
Цитата Snake750:
описания к данной работе »
описан процесс ассемблирования. Дизассемблирование - это получение из машинного кода "B8 1D 00" ассемблерной команды "mov ax,1d"

хе-хе:
Код: Выделить весь код
C:\>debug
-e 100
13DC:0100  00.b8   00.1d   00.00
-u 100
13DC:0100 B81D00        MOV     AX,001D

-------
"640 K ought to be enough for anybody" Bill Gates, 1981

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:44, 01-04-2010 | #17


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


DillerInc, можно подробнее? Что не так?

-------
black-eric.livejournal.com


Отправлено: 10:32, 01-04-2010 | #18


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


BlackEric, дизассемблирование - это в первую очередь разложение бинарного вида команды на составляющие(писал об этом выше).
Например, какой нам толк от последовательности следующих байт: 8Bh 35h 1Ch 68h 0A8h 00 ?
А скормив указатель на эту последовательность тому же CADt, мы сможем проанализировать поля возвращённой структуры и понять суть команды ровно как и составить её мнемонику:
mov esi, dword ptr [00A8681C]
Просто я думаю, что препод не настолько глуп, чтобы давать такую грошевую задачу как банальный вывод бинарного вида команды.
Цитата BlackEric:
От вас хотят работу с 16 битными регистрами. Делфи же 32х. Возможно он не позволит. »
...никто не отменял использование 16-битных регистров в 32-битных программах.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:56, 01-04-2010 | #19


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


Цитата DillerInc:
мы сможем проанализировать поля возвращённой структуры и понять суть команды ровно как и составить её мнемонику »
В отрыве от контекста ничего мы не сможем понять.
В 16-ричнойразрядной среде эта последовательность совсем по другому смотрится.
Цитата DillerInc:
Просто я думаю, что препод не настолько глуп, чтобы давать такую грошевую задачу как банальный вывод бинарного вида команды. »
Зависит от предмета.
Надо бы, для начала, все задание увидеть.
Правда, есть вероятность, что преподаватель эту ветку тоже прочтет

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Последний раз редактировалось CyberDaemon, 01-04-2010 в 15:18. Причина: опечатался


Отправлено: 13:57, 01-04-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Дизасемблирование

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Дизасемблирование Steyer Программирование и базы данных 2 12-02-2004 22:29




 
Переход