Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Инлайе патч в DLL
Посл.ответ Сообщение

Ранг: 6.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 сентября 2005 22:55
· Личное сообщение · #1

Ситуация такая, dll запакована UPX'ом, грузится почти всегда по разным адресам,
а мне нужно один джамп с условного на безусловный поменять.
Распаковывается она легко(upx -d dll), но я хочу сделать инлайн патч.
Жестко прописанные адреса естественно в пролете и пришлось сделать так(fasm):

use32
org 009361C2h

;0FFF43831h = (address of je not_expired) - (address of our patch)
call delta
delta:
pop ebp
sub ebp, 5 ;length of call delta
;0F84 EE010000 нужно заменить на E9 EF010000
mov dword[ebp+0FFF43831h], 0001EFE9h
mov byte [ebp+0FFF43835h], 00h
jmp 00871344h;jmp to OEP


В итоге все работает, но неужели нет способа легче??

Кстати программа Alcohol 120% Bepcия 1.9.5 ( Build 3105 )(Trial Version) ,
библиотека AXShlEx.dll. Прикол в том, что вызывается она не только из Алкоголя,
но и из файловых менеджеров, из диалога открытия файлов и т.п. точнее из нее загружаются иконки.



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 13 сентября 2005 23:02
· Личное сообщение · #2

вот http://www.exelab.ru/f/action=vthread&forum=1&topic=2831
не UPX конечно, но метода должна быть ясна



Ранг: 6.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 сентября 2005 23:21 · Поправил: Zyzomys
· Личное сообщение · #3

Спасибо Asterix, видимо единственный способ - это адресация относительно какого то места впамяти. Разница в том что Aspack заносит в ebp адрес загрузки , а здесь пришлось его самому добывать.



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 14 сентября 2005 00:55
· Личное сообщение · #4

Zyzomys
В UPX принцип тот же, там тоже где-то лежит адрес загрузки,
не скажу точно где - не помню




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 14 сентября 2005 12:53
· Личное сообщение · #5

Можно со стэка вытащить (как и делает UPX) - первый параметр для DllMain это hInstance - т.е. реальный адрес загрузки.


 eXeL@B —› Основной форум —› Инлайе патч в DLL
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати