Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777 (+6 невидимых)

 eXeL@B —› Программирование —› как сделать лоадер который может патчить dll программы
Посл.ответ Сообщение

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

Создано: 01 августа 2008 05:51
· Личное сообщение · #1

НУ по логике надо сначало создать отладочный цикл. Потом надо дождатся загрузки dll в память программы (LOAD_DLL_DEBUG_EVENT), затем просто использовать WriteProcessMemory для записи нужных байтов. Но вот в чем вопрос: 1. Как обнаружить что именно нужная dll загрузилась? 2. Как записать в dll нужные байты? Если можно покажите пример.



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 01 августа 2008 09:06 · Поправил: SergX
· Личное сообщение · #2

НУ по логике надо сначало намана написать чё надо.

Если я правильно понял то ставишь хук на kernel32\LoadLibraryA.
В своём обработчике LoadLibraryA вызываешь настоящий LoadLibraryA и после загрузки длл проверяешь та ли это либа. Если та то меняем чё надо..

1. Как обнаружить что именно нужная dll загрузилась?
по названию, размеру, сигнатуре, и т.д.

2. Как записать в dll нужные байты?
это зависит от того будешь ты выполняться в середине процесса или снаружи.
если внутри через VirtualProtect меняешь атрибут странички на PAGE_EXECUTE_READWRITE и MOV…
если снаружи то ReadProcessMemory, WriteProcessMemory…



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 01 августа 2008 10:14
· Личное сообщение · #3

между прочим поиск по форуму рулит, даже исходник есть (автор Tim)




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 01 августа 2008 11:55
· Личное сообщение · #4

ewgeny1987
При исключении LOAD_DLL_DEBUG_EVENT заполняется структура LOAD_DLL_DEBUG_INFO и в ней уже
смотришь имя библиотеки. Точнее на сколько я помню там будет лежать адрес по которому будет лежать
указатель на имя библиотеки в памяти. Потом спомощью ReadProcessMemory читаешь этот указатель и
потом ещё раз ReadProcessMemory но уже с адресом этого указателя. Я сам офигиваю от того как
объяснил, так что если будут вопросы, давай свою аську.
SergX
Не, он не хукает, а отлаживает прогу в отладочном цыкле. Хотя в лодыре реально будет просто похукать
LoadLibraryA и смотреть имя загружаемой библиотеки

-----
Research For Food





Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 01 августа 2008 12:28
· Личное сообщение · #5

Если прога сильно запакована, то хукать тяжко буит. Ну во всяком случае отлаживать придется всеравно. А вообще должны быть еще варианты - опиши ситуацию конкретнее, пакована\не пакована прога\длл и че конкретно надо патчить.

-----
invoke OpenFire



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


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