Здравствуйте, Аноним, Вы писали:
А>Дизассемблирую экзешник, в точке входа вижу примерно следующее:
А>
А>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[2]: Ликбез по ассемблеру
От:
Аноним
Дата:
06.11.06 15:57
Оценка:
Здравствуйте, __INFINITE, Вы писали:
__I>Здравствуйте, Аноним, Вы писали:
А>>Дизассемблирую экзешник, в точке входа вижу примерно следующее:
А>>LEA EDI, [ESI + FFFE8000]
Квадратные скобочки что означают? К чему прибавляется число — к значению в регистре ESI или к числу которое находится в памяти по адресу ESI ? Или в EDI загружается адрес который вычисляется как значение ESI + 0xFFFE8000 ?
Здравствуйте, Аноним, Вы писали:
А>>>LEA EDI, [ESI + FFFE8000]
А>Квадратные скобочки что означают? К чему прибавляется число — к значению в регистре ESI или к числу которое находится в памяти по адресу ESI ? Или в EDI загружается адрес который вычисляется как значение ESI + 0xFFFE8000 ?
В данном случае lea используется для трехоперандного сложения, т.е.
edi := esi — 0x18000
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, Аноним, Вы писали:
А>Дизассемблирую экзешник, в точке входа вижу примерно следующее:
А>
А>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 — базовый регистр — забивается единичками...
Здравствуйте, Аноним, Вы писали:
А>Ну, здорово. А>А нафига это все надо?
С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Ликбез по ассемблеру
От:
Аноним
Дата:
06.11.06 16:54
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Аноним, Вы писали:
А>>Ну, здорово. А>>А нафига это все надо? LVV>С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп
Мне нужно на более глобальном уровне. Как понять что прога делает?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, Аноним, Вы писали:
А>>>Ну, здорово. :) А>>>А нафига это все надо? LVV>>С помощью цепочечных команд реализованы практически все строковые функции в С++: strlen, strcpy, strchr и тп
А>Мне нужно на более глобальном уровне. Как понять что прога делает?
По этому куску кода мы поймём врядли. Но, я думаю, что это часть кода особого секретного модуля в составе ядра Windows Vista.
Здравствуйте, __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 и ты уже об этом знаешь, значит полюбэ в точке входа будут команды распаковщика.