Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Вопросы по дизасемблированию

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Вопросы по дизасемблированию
Имя
Сообщение << Старые топики   Новые топики >>
Вопросы по дизасемблированию - 2010-07-08 11:17:39.106666   
Fad.Mypl

Сообщений: 49
Оценки: 0
Присоединился: 2008-08-13 13:17:23.186666
Решил попрактиковаться и вот что получается…
[84][asm.asm-des: /home/asm]$ gdb -q ./a.out Reading symbols from /home/asm/hack/a.out...done. (gdb) set disassembly-flavor intel (gdb) list 1 #include &lt;stdio.h&gt; 2 3 4 int main() 5 { 6 int i; 7 for (i=0; i&lt;10; i++) 8 printf("Hello World\n"); 9 return 0; 10 } (gdb) break main Breakpoint 1 at 0x80483ed: file les2.c, line 7. (gdb) i r eip The program has no registers now. (gdb) run Starting program: /home/asm/hack/a.out Breakpoint 1, main () at les2.c:7 7 for (i=0; i&lt;10; i++) (gdb) i r eip eip 0x80483ed 0x80483ed &lt;main+9&gt; (gdb) x/i $eip 0x80483ed &lt;main+9&gt;: mov DWORD PTR [esp+0x1c],0x0 (gdb) nexti 0x080483f5 7 for (i=0; i&lt;10; i++) (gdb) i r eip eip 0x80483f5 0x80483f5 &lt;main+17&gt; (gdb) x/i $eip 0x80483f5 &lt;main+17&gt;: jmp 0x8048408 &lt;main+36&gt; (gdb) nexti 0x08048408 7 for (i=0; i&lt;10; i++) (gdb) x/i $eip 0x8048408 &lt;main+36&gt;: cmp DWORD PTR [esp+0x1c],0x9 (gdb) x/4i $eip 0x8048408 &lt;main+36&gt;: cmp DWORD PTR [esp+0x1c],0x9 0x804840d &lt;main+41&gt;: jle 0x80483f7 &lt;main+19&gt; 0x804840f &lt;main+43&gt;: mov eax,0x0 0x8048414 &lt;main+48&gt;: leave (gdb) Вообщем нужна помощь в объяснении последних строк
Понимаю что идет сравнение, а вот дальше что то не очень =\\

Post #: 1
RE: Вопросы по дизасемблированию - 2010-07-08 11:24:26.690000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
А что и чем дизасмите? И какие конкретно строки не понятны?
Post #: 2
RE: Вопросы по дизасемблированию - 2010-07-08 11:31:11.696666   
Fad.Mypl

Сообщений: 49
Оценки: 0
Присоединился: 2008-08-13 13:17:23.186666
Код на С. Через GNU gdb. Синтаксис интеловский на нем.
Строки последние…
0x8048408 &lt;main+36&gt;: cmp DWORD PTR [esp+0x1c],0x9 0x804840d &lt;main+41&gt;: jle 0x80483f7 &lt;main+19&gt; 0x804840f &lt;main+43&gt;: mov eax,0x0 0x8048414 &lt;main+48&gt;: leave
То есть первый раз просмотр eip показал что переменная "i" обнуляется по адресу [esp+0x1c]
Далее при продолжении показал уже выше изложенный код.
Хотелось бы узнать как эти строки подробно можно объяснить…
Есть своя точка зрения и хотелось бы просто её поправить если есть какие то недочеты.
Заранее спасибо :)
Post #: 3
RE: Вопросы по дизасемблированию - 2010-07-08 11:46:07.416666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
cmp DWORD PTR [esp+0x1c],0x9 ;
jle 0x80483f7 <main+19> ; если меньше или равно 9, то переходим на <main+19>
mov eax,0x0 ; иначе обнуляем регистр eax
leave  ; восстанавливаем стэк

for (i=0; i<10; i++) - это уже твои комменты? Если да, то по видимому в листинге не хватает инструкции
inc DWORD PTR [esp+0x1c] ;






Post #: 4
RE: Вопросы по дизасемблированию - 2010-07-08 11:52:03.956666   
Fad.Mypl

Сообщений: 49
Оценки: 0
Присоединился: 2008-08-13 13:17:23.186666
for (i=0; i<10; i++) - это кода отрывок

так, а (main+19) это
0x080483f7 <main+19>: mov DWORD PTR [esp],0x80484e0
тут что происходит?
Post #: 5
RE: Вопросы по дизасемблированию - 2010-07-08 12:01:10.926666   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Изменяется значение верхушки стэка на 0x80484e0, судя по всему это адрес какой-то.
Post #: 6
RE: Вопросы по дизасемблированию - 2010-07-08 12:19:43.493333   
Fad.Mypl

Сообщений: 49
Оценки: 0
Присоединился: 2008-08-13 13:17:23.186666
Ок. теперь всё ясно. спасибо. Тему можно закрывать.
Post #: 7
RE: Вопросы по дизасемблированию - 2010-07-22 13:05:02.076666   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
quote:

leave ; восстанавливаем стэк


Удаление кадра стека, выделенного под локальные переменные функции
Post #: 8
Страниц:  [1]
Все форумы >> [Прочее] >> Вопросы по дизасемблированию







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.