Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Пооптимизируем код :-) |
Посл.ответ | Сообщение |
|
Создано: 12 мая 2008 09:38 · Поправил: Zloy · Личное сообщение · #1 Вот ознакомьтесь товарищи,написал на асме процедурку получения адресов апи фунций по их хешам ![]() ![]() Сам код в виде BIN->DB ;68 bytes long
Также тестовая программа на Flat Assembler: ;By ZloY (x) 2008
Вот собственно помогите отпимизировать процедуру получения адреса или я залез уже выше крыши? Хотя мне кажеться вот тут: mov edi,[edx+0x20];Name Pointers RVA
Можно отпимизировать на 1-2 байта ![]() ![]() |
|
Создано: 12 мая 2008 13:08 · Личное сообщение · #2 |
|
Создано: 16 мая 2008 03:27 · Поправил: S_T_A_S_ · Личное сообщение · #3 Имена некоторых команд говорят сами за себя - popa ![]() Если сохранять только регистры в соответствии с распространёнными соглашениями о вызовах - ebx esi edi (ebp здесь не используется, а esp восстанавливается и так) - в сумме будут теже 6 байт, вроде выгоды нет... пока не начнёшь передавать параметры в регистрах - -4 байта на чтение module handle. Передавать можно сразу в ebx - и не надо будет его сохранять ![]() В общем получается вот такое начало: .getproc: ; ebx - module handle mov eax,[ebx+3Ch];pe header mov edx,[eax+78h + ebx];export table rva add edx,ebx ;module handle ;... Да, самое главное забыл ![]() ![]() |
|
Создано: 16 мая 2008 06:57 · Личное сообщение · #4 |
![]() |
eXeL@B —› Программирование —› Пооптимизируем код :-) |