Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Метод патчения модуля DLL (https://forum.antichat.xyz/showthread.php?t=163086)

krobol 13.12.2009 00:15

Метод патчения модуля DLL
 
В программе подгружаются модули .DLL

Я нашёл в каких местах одного из DLL нужно подменить байты, чтобы в программе стали доступны все лицезированные возможности.

DLL запакована. Quick Unpacker показывает:

PESniffer EP Scan: PEtite v2.1
PEiD scanning... PEtite 2.x [Level 0] -> Ian Luck

В начале файла-DLL находится загрузчик-распаковщик.

Я в распаковщик встроил свой код, который после распаковки меняет нужные байты в памяти.
Т.к. программа проверяет целостность своих файлов, то пришлось ещё добавить нужные байты, чтобы сходилась контрольная сумма.

Всё это до недавнего времени работало, но теперь появилась ещё какая-то доп. проверка целостности файлов, которую мой DLL уже не проходит.

Подскажите, каким образом можно поменять эти очень нужные байты в памяти, не меняя DLL-файл?

ntldr 13.12.2009 01:18

лоадер написать

krobol 13.12.2009 02:49

Попробовал ABEL loader generator, не получается.

Пишет, что это защищённая область памяти DLL

Что можно сделать?

-=Nicon=- 13.12.2009 03:36

А на Assemblere как вариант свой loader написать не побывали?

krobol 13.12.2009 03:50

Это я не осилю =)
Я могу написать коротенькую программу - jmp на функцию, функция меняет байты, возврат. Что я и сделал.
А для лоадера нужно win api. Да и сам принцип не понятен.

Основной exe-шник постоянно обновляется, а DLL в которой защита нет.
Поэтому нужно как-то патчить DLL в памяти после загрузки и распаковки, но не привязываясь к адресу вызова загрузки этой DLL в основной программе.

Насколько я понимаю, это распространённая задача. И решалась она уже не раз. Пробовал искать в гугле, так там куча ссылок на всякие мемпатчи win'7, игр и прочее.
Как это реализовано? Может есть какой нибудь пак, типа ABEL для создания лоадера-мемпатчера dll'ки?

neprovad 13.12.2009 18:47

добавлю свое имхо - распаковать dll вообще и сделать все манипуляции что надо не заморачиваясь с лоадерами

s0l_ir0n 13.12.2009 22:44

...и искать подводные камни с проверками, хотя как правило банальный GetFIleSize прикрутили или самопальную CRC, поэтому есть смысл поставить бряки на CreateFile и CreateFileMapping

Sunzer 14.12.2009 18:31

Распакуй длл, пропатчи да и все. Можешь в принципе и в памяти патчить, только гемороя больше.

-=Nicon=- 14.12.2009 20:10

Цитата:

Сообщение от krobol
Это я не осилю =)
Я могу написать коротенькую программу - jmp на функцию, функция меняет байты, возврат. Что я и сделал.
А для лоадера нужно win api. Да и сам принцип не понятен.

Основной exe-шник постоянно обновляется, а DLL в которой защита нет.
Поэтому нужно как-то патчить DLL в памяти после загрузки и распаковки, но не привязываясь к адресу вызова загрузки этой DLL в основной программе.

Насколько я понимаю, это распространённая задача. И решалась она уже не раз. Пробовал искать в гугле, так там куча ссылок на всякие мемпатчи win'7, игр и прочее.
Как это реализовано? Может есть какой нибудь пак, типа ABEL для создания лоадера-мемпатчера dll'ки?

Если, лодерЯ вам не осилить, то попробуйте распаковать запакованную длл, как выше уже было сказано.

И затем найдите, и пропатчите, проверку СRС, либо проверку на распакованность.

Или банальный вылет на ExitProcess. Вот может пригодиться Распаковщик для Petite 2.1 / 2.2 _http://reversing.kulichki.com/files/unpack/unpetit.rar скормите ему запакованную длл. Удачи!!!

П.С А что за программа, если не секрет?

krobol 14.12.2009 22:07

Если патчить саму проверку, то это придётся делать в каждой программе + основной файл (.exe) постоянно обновляется. Т.е. придётся патчить постоянно.


Время: 01:57