eXeL@B —› Софт, инструменты —› Ассемблер OllyDbg 1.10 |
Посл.ответ | Сообщение |
|
Создано: 26 августа 2011 17:52 · Личное сообщение · #1 Задача такова - получить из асм инструкций код оптимизированный по размеру. А теперь результаты работы Олькиного ассемблера: Code:
Здесь оптимизация имеется, а можно ли ещё короче? Code:
В 1 варианте оптимизация есть, а во 2 нет, это Олька глючит или так и должно быть? Code:
1 с оптимизацией, 2 без, а в 3 ещё доп. байт появился, откуда? Code:
Оптимизации нет никакой, возможна ли? Примеры можно продолжать и далее, но 12 байт на одну инструкцию просто убивают... В итоге декомпилированный код просто не помещается в отведенное ему в функции место. ----- Everything is relative... |
|
Создано: 26 августа 2011 18:49 · Личное сообщение · #2 Числа больше 0x80 четырёхбайтные, потому что смещение знаковое. Если задать смещение одним байтом 0x80, то это будет рассматриваться как -0x80 Code:
В последнем случае - единственный вариант для одной инструкции. Но если куча таких mov'ов со смещениями больше 0x80, то можно оптимизировать только всё вместе типа так: Code:
----- IZ.RU |
|
Создано: 26 августа 2011 19:14 · Поправил: Vamit · Личное сообщение · #3 префикс ds: вставился За префикс спасибо, не обратил внимание, надо будет потереть префиксы по умолчанию ...ptr ds:[esp + ... Так LEA EDX,[ESP+7C], конечно можно, только в исходном коде этого точно не было и он помещался в отведенное место в функе + ещё должно остаться свободное место от маркеров вм, а у меня в некоторых функциях не хватает по 10-20 байт места. ----- Everything is relative... |
|
Создано: 26 августа 2011 19:18 · Личное сообщение · #4 |
|
Создано: 26 августа 2011 20:13 · Поправил: Vamit · Личное сообщение · #5 Я и так получаю все варианты и из них выбираю оптимальный по размеру Code:
только больше двух разновидностей не встречал, а все остальные варианты одинаковы. ----- Everything is relative... |
|
Создано: 18 сентября 2011 00:20 · Личное сообщение · #6 Чтобы не создавать новую тему... наткнулся на FullDisasm, альтернативный движок для оли This is a plugin for OllyDbg 1.10 and Immunity Debugger 1.xx to replace the old disasm engine by a more recent one: BeaEngine 4.0. You just have to press Ctrl+W to change the disasm engine. If you want to use BeaEngine only on selected lines, then just press Ctrl+X. With this plugin, you can decode recent instructions for the following technologies : MMX, FPU, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 , VMX, CLMUL and AES. You can even decode undocumented instructions usually used in malicious codes. If you want to use a specific syntax, BeaEngine allows you to disassemble code in masm32 syntax, nasm syntax, GoAsm syntax or GNU Assembler syntax. http://www.beaengine.org/downloads/FullDisasm_OllyDbg.zip |
|
Создано: 18 сентября 2011 01:04 · Поправил: ajax · Личное сообщение · #7 Vamit походу, играцца самому, кодооптимизаторов по байтам не встречалось, типа mov ebx, 0x000000A7 = xor ebx,ebx; mov bl,0A7h. иной раз eax/rax заюзать, длины с ним меньше, при условии, что не критичен. если касаемо вмпрота, то могу подсобить (стопудово, не скрипт будет), но от шаблонов не уйти ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 18 сентября 2011 11:40 · Личное сообщение · #8 |
|
Создано: 18 сентября 2011 11:40 · Личное сообщение · #9 |
|
Создано: 18 сентября 2011 11:55 · Поправил: ajax · Личное сообщение · #10 |
|
Создано: 18 сентября 2011 14:41 · Поправил: bowrouco · Личное сообщение · #11 |
eXeL@B —› Софт, инструменты —› Ассемблер OllyDbg 1.10 |