Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 14:47
Оценка:
Дизассемблирую экзешник, в точке входа вижу примерно следующее:

PUSHAD
MOV ESI, 0041900
LEA EDI, [ESI, FFFE8000]
OR EDI, -1
...


Как понять что здесь происходит, для чего это делается?
Re: Ликбез по ассемблеру
От: __INFINITE Россия  
Дата: 06.11.06 14:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>
А>PUSHAD
А>MOV ESI, 0041900
А>LEA EDI, [ESI, FFFE8000]
А>OR EDI, -1
А>...
А>


А>Как понять что здесь происходит, для чего это делается?


Каким дизассемблером? Как вот я понял:
1) esi := 0x00041900
2) edi := esi — 18000
3) edi := edi | 0xffffffff //Это поидее все равно, что edi := -1, и тогда 2) ненужно.

Короче, это какая-то ерунда — она смысла по-моему не имеет. Хотя, может быть если видеть что потом...
Re[2]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 15:04
Оценка:
Здравствуйте, __INFINITE, Вы писали:

__I>Здравствуйте, Аноним, Вы писали:


А>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>>
А>>PUSHAD
А>>MOV ESI, 0041900
А>>LEA EDI, [ESI, FFFE8000]
А>>OR EDI, -1
А>>...
А>>


А>>Как понять что здесь происходит, для чего это делается?


__I>Каким дизассемблером? Как вот я понял:

__I>1) esi := 0x00041900
__I>2) edi := esi — 18000
__I>3) edi := edi | 0xffffffff //Это поидее все равно, что edi := -1, и тогда 2) ненужно.

Да я понимаю что инструкция mov esi, 0041900 помещает в регистр esi число 0041900
Мне нужно понять смысл этих действий, что вообще прога делает.
Re[2]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 15:12
Оценка:
Здравствуйте, __INFINITE, Вы писали:

__I>Здравствуйте, Аноним, Вы писали:


А>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>>
А>>PUSHAD
А>>MOV ESI, 0041900
А>>LEA EDI, [ESI, FFFE8000]
А>>OR EDI, -1
А>>...
А>>


А>>Как понять что здесь происходит, для чего это делается?


__I>Каким дизассемблером? Как вот я понял:

__I>1) esi := 0x00041900
__I>2) edi := esi — 18000
__I>3) edi := edi | 0xffffffff //Это поидее все равно, что edi := -1, и тогда 2) ненужно.

__I>Короче, это какая-то ерунда — она смысла по-моему не имеет. Хотя, может быть если видеть что потом...


Ну, с последней инструкцией ошибся немного. Там на самом деле OR EBP, -1
Но суть не в этом. Как понять что вообще эта хренотень делает целиком?
Re[3]: Ликбез по ассемблеру
От: ДимДимыч Украина http://klug.org.ua
Дата: 06.11.06 15:42
Оценка: 3 (1) +2 :)
Здравствуйте, Аноним, Вы писали:

А>Но суть не в этом. Как понять что вообще эта хренотень делает целиком?


Однажд...


Я хочу понять, о чем этот рассказ целиком...
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 15:57
Оценка:
Здравствуйте, __INFINITE, Вы писали:

__I>Здравствуйте, Аноним, Вы писали:


А>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>>LEA EDI, [ESI + FFFE8000]


Квадратные скобочки что означают? К чему прибавляется число — к значению в регистре ESI или к числу которое находится в памяти по адресу ESI ? Или в EDI загружается адрес который вычисляется как значение ESI + 0xFFFE8000 ?
Re[3]: Ликбез по ассемблеру
От: ДимДимыч Украина http://klug.org.ua
Дата: 06.11.06 16:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>LEA EDI, [ESI + FFFE8000]


А>Квадратные скобочки что означают? К чему прибавляется число — к значению в регистре ESI или к числу которое находится в памяти по адресу ESI ? Или в EDI загружается адрес который вычисляется как значение ESI + 0xFFFE8000 ?


В данном случае lea используется для трехоперандного сложения, т.е.

edi := esi — 0x18000
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re: Ликбез по ассемблеру
От: LaptevVV Россия  
Дата: 06.11.06 16:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>
А>PUSHAD
А>MOV ESI, 0041900
А>LEA EDI, [ESI, FFFE8000]
А>OR EDI, -1
А>...
А>


А>Как понять что здесь происходит, для чего это делается?

Сначала в стек сохраняется что-то... Может команда pushall?
потом загружаются индексные регистры: регистр источника ESI и регистр приемника EDI/ Обычно эти регистры готовятся перед выполнением цепочечной команда...
Причем EDI загружается посредством команды загрузки адреса... В EDI попадает содержимое ESI+FFFE8000
Потом как ты говоришь, EBP — базовый регистр — забивается единичками...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 16:38
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Аноним, Вы писали:


А>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:


А>>
А>>PUSHAD
А>>MOV ESI, 0041900
А>>LEA EDI, [ESI, FFFE8000]
А>>OR EDI, -1
А>>...
А>>


А>>Как понять что здесь происходит, для чего это делается?

LVV>Сначала в стек сохраняется что-то... Может команда pushall?
LVV>потом загружаются индексные регистры: регистр источника ESI и регистр приемника EDI/ Обычно эти регистры готовятся перед выполнением цепочечной команда...
LVV>Причем EDI загружается посредством команды загрузки адреса... В EDI попадает содержимое ESI+FFFE8000
LVV>Потом как ты говоришь, EBP — базовый регистр — забивается единичками...

Ну, здорово.
А нафига это все надо?
Re[3]: Ликбез по ассемблеру
От: LaptevVV Россия  
Дата: 06.11.06 16:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну, здорово.

А>А нафига это все надо?
С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 16:54
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Аноним, Вы писали:


А>>Ну, здорово.

А>>А нафига это все надо?
LVV>С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп

Мне нужно на более глобальном уровне. Как понять что прога делает?
Re[3]: Ликбез по ассемблеру
От: FF  
Дата: 06.11.06 16:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:

А>>>
А>>>PUSHAD
А>>>MOV ESI, 0041900
А>>>LEA EDI, [ESI, FFFE8000]
А>>>OR EDI, -1
А>>>...
А>>>


А>Ну, здорово. :)

А>А нафига это все надо?

Если в точке входа _примерно_ то, что выше, то это похоже UPX (в крайнем случае там другой упаковщик)
Re[5]: Ликбез по ассемблеру
От: __INFINITE Россия  
Дата: 06.11.06 16:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, LaptevVV, Вы писали:


LVV>>Здравствуйте, Аноним, Вы писали:


А>>>Ну, здорово. :)

А>>>А нафига это все надо?
LVV>>С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп

А>Мне нужно на более глобальном уровне. Как понять что прога делает?


По этому куску кода мы поймём врядли. Но, я думаю, что это часть кода особого секретного модуля в составе ядра Windows Vista.
Re[6]: Ликбез по ассемблеру
От: LaptevVV Россия  
Дата: 06.11.06 17:43
Оценка:
Здравствуйте, __INFINITE, Вы писали:

А>>Мне нужно на более глобальном уровне. Как понять что прога делает?


__I>По этому куску кода мы поймём врядли. Но, я думаю, что это часть кода особого секретного модуля в составе ядра Windows Vista.



По 4-м командам — невозможно...
Да и по полному тексту — вряд ли...
Если ЗНАТЬ, для чего она предназначена — то дальше нужно ассемблерный код разбивать на смысловые блоки... Упор — на данные и циклы в первую очередь...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 20:55
Оценка:
Здравствуйте, FF, Вы писали:

FF>Здравствуйте, Аноним, Вы писали:


А>>>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:

А>>>>
А>>>>PUSHAD
А>>>>MOV ESI, 0041900
А>>>>LEA EDI, [ESI, FFFE8000]
А>>>>OR EDI, -1
А>>>>...
А>>>>


А>>Ну, здорово.

А>>А нафига это все надо?

FF>Если в точке входа _примерно_ то, что выше, то это похоже UPX (в крайнем случае там другой упаковщик)


Первый дельный ответ в этом топике. Ладно, попробую распаковать и потом посмотреть чего там делается.
Re[5]: Ликбез по ассемблеру
От: Аноним  
Дата: 06.11.06 21:51
Оценка:
Здравствуйте, Аноним, Вы писали:

FF>>Если в точке входа _примерно_ то, что выше, то это похоже UPX (в крайнем случае там другой упаковщик)


А>Первый дельный ответ в этом топике. Ладно, попробую распаковать и потом посмотреть чего там делается.


А сам ну никак не мог догадаться? Если прога упакована UPX и ты уже об этом знаешь, значит полюбэ в точке входа будут команды распаковщика.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.