Метод патчения модуля DLL

Discussion in 'Реверсинг' started by krobol, 12 Dec 2009.

  1. krobol

    krobol Elder - Старейшина

    Joined:
    10 Feb 2008
    Messages:
    54
    Likes Received:
    7
    Reputations:
    0
    В программе подгружаются модули .DLL

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

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

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

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

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

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

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

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    лоадер написать
     
  3. krobol

    krobol Elder - Старейшина

    Joined:
    10 Feb 2008
    Messages:
    54
    Likes Received:
    7
    Reputations:
    0
    Попробовал ABEL loader generator, не получается.

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

    Что можно сделать?
     
  4. -=Nicon=-

    -=Nicon=- Banned

    Joined:
    26 Sep 2008
    Messages:
    18
    Likes Received:
    3
    Reputations:
    0
    А на Assemblere как вариант свой loader написать не побывали?
     
  5. krobol

    krobol Elder - Старейшина

    Joined:
    10 Feb 2008
    Messages:
    54
    Likes Received:
    7
    Reputations:
    0
    Это я не осилю =)
    Я могу написать коротенькую программу - jmp на функцию, функция меняет байты, возврат. Что я и сделал.
    А для лоадера нужно win api. Да и сам принцип не понятен.

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

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

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    добавлю свое имхо - распаковать dll вообще и сделать все манипуляции что надо не заморачиваясь с лоадерами
     
  7. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    ...и искать подводные камни с проверками, хотя как правило банальный GetFIleSize прикрутили или самопальную CRC, поэтому есть смысл поставить бряки на CreateFile и CreateFileMapping
     
    #7 s0l_ir0n, 13 Dec 2009
    Last edited: 13 Dec 2009
    Dark~Angel likes this.
  8. Sunzer

    Sunzer Member

    Joined:
    17 May 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    2
    Распакуй длл, пропатчи да и все. Можешь в принципе и в памяти патчить, только гемороя больше.
     
  9. -=Nicon=-

    -=Nicon=- Banned

    Joined:
    26 Sep 2008
    Messages:
    18
    Likes Received:
    3
    Reputations:
    0
    Если, лодерЯ вам не осилить, то попробуйте распаковать запакованную длл, как выше уже было сказано.

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

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

    П.С А что за программа, если не секрет?
     
    #9 -=Nicon=-, 14 Dec 2009
    Last edited: 14 Dec 2009
  10. krobol

    krobol Elder - Старейшина

    Joined:
    10 Feb 2008
    Messages:
    54
    Likes Received:
    7
    Reputations:
    0
    Если патчить саму проверку, то это придётся делать в каждой программе + основной файл (.exe) постоянно обновляется. Т.е. придётся патчить постоянно.
     
    #10 krobol, 14 Dec 2009
    Last edited: 15 Dec 2009