Посл.ответ |
Сообщение |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 08 октября 2007 21:57 · Личное сообщение · #1
Обнаружил такую вещь:
код на Delphi:
procedure MyProc;
asm
nop
nop
nop
ret
end;
сгенерированный код:
.text:00459769 loc_459769: ; DATA XREF: sub_459778+15o
.text:00459769 imul esi, [ecx+esi+0], 90C08B00h
.text:00459771 nop
.text:00459772 nop
.text:00459773 retn
Вопрос вот в чём, почему первую иструкцию компиллер заменил на imul esi, [ecx+esi+0], 90C08B00h, и зачем это вообще нужно  , а вот если первая инструкция не NOP, то всё компиллится нормально как есть.
| Сообщение посчитали полезным: |
|
Ранг: 30.1 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 08 октября 2007 22:43 · Личное сообщение · #2
а какой прогой ты асм код проверяеш?
| Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 08 октября 2007 23:07 · Личное сообщение · #3
да ида это, по листингу видно
alexey_k
а фиг его знает почему так, посмотри в отладчике, просто может нееверно отдиззасмила...
----- [nice coder and reverser] | Сообщение посчитали полезным: |
 Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 09 октября 2007 00:19 · Личное сообщение · #4
а может просто нефиг делать
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 09 октября 2007 00:21 · Личное сообщение · #5
в листингах аффтара нет опкодов... а жаль...
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 34.1 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 09 октября 2007 00:57 · Личное сообщение · #6
Листинг из Оли:
00454DD1 . 697431 00 008BC090 imul esi,dword ptr ds:[ecx+esi],90C08B00
00454DD9 . 90 nop
00454DDA . 90 nop
Компилит всё нормально, просто дизасмит косяково, тот же DeDe всё правильно вывел:
_http://arzbot.fr1ka.net/mr/dir=Graph/&file=dizasm.png
| Сообщение посчитали полезным: |
Ранг: 30.1 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 09 октября 2007 01:07 · Личное сообщение · #7
да неправильно дизасемблит
008BC0 90 imul esi,
вот твой ноп
| Сообщение посчитали полезным: |
Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник
|
Создано: 09 октября 2007 03:17 · Поправил: drin · Личное сообщение · #8
Crazy_Death пишет:
да неправильно дизасемблит
008BC090 imul esi,
да-да, его даже здесь, в первом листинге, видно: .text:00459769 imul esi, [ecx+esi+0], 90C08B00h
| Сообщение посчитали полезным: |
 Ранг: 116.6 (ветеран), 8thx Активность: 0.05↘0 Статус: Участник
|
Создано: 09 октября 2007 05:36 · Поправил: dermatolog · Личное сообщение · #9
2 alexey_k:
00454DD1: db 69,74,31,00,00,8B,C0
00454DD8: nop
00454DD9: nop
00454DDA: nop
00454DDB: ret
По адресам 00454DСC..00454DD7 у тебя лежат данные - это хорошо видно из листинга Olly. Твоя процедура начинается по адресу 00454DD8, так что не морочь всем голову по поводу компилятора Delphi.
P.S. db 55,6E,69,74,31 = 'Unit1'
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 09 октября 2007 08:18 · Личное сообщение · #10
посиб за разъяснения! тема закрыта.
| Сообщение посчитали полезным: |