DotFix :: Портал разработки и защиты программ
Главная
Программы
Статьи
Разное
Форум
Контакты
Автор: bi0w0rM. Дата публикации: 17.08.2004

Распаковка tElock 0.98

[ Распаковка tElock 0.98 ]

0. Что нужно:
- любая прога с tElock 0.98
- кучка съедобных мозгов
- руки, управляемые этими мозгами
- подстриженные ногти, чтоб удобно барабанить по клаве
- OllyDbg 1.10 с плугинами и прочей херью
- ImpRec 1.6f + плугин bi0w0rM’а для tElock

1. Поиск OEP
Найти OEP совсем легко. Засовываем прогу в OllyDbg, заходим в Debugging Options->Exceptions и игнорим все типы исключений:



Ну и воспользуемся плугином для прятания IsDebuggerPresent, нажмем Hide.
Теперь думаем... когда будет распаковываться 2-я секция(тут olly сказал, что она содержит data), то по идее 1-я секция(секция кода) должна быть уже распакована, а нам как раз в нее и надо :) Тогда заходим в OllyDbg Memory Map(Alt+M) и ставим memory breakpoint на запись второй секции:



пускаем прогу, брякнулись здесь:
CODE NOW!

006BDDA8 AA STOS BYTE PTR ES:[EDI]
006BDDA9 69D2 A5B0CD4B IMUL EDX,EDX,4BCDB0A5
006BDDAF F9 STC
006BDDB0 72 02 JB SHORT lawyerr.006BDDB4



В EDI VirtalAddress второй секции... Теперь надо бы попасть в секцию кода, то есть словить момент, когда EIP окажется в ее адресном пространстве. поэтому можно предположить, что если мы поставим memory breakpoint on access на эту секцию, то он нигде больше не сработает, кроме как на OEP, ставим memory breakpoint on access первой секции :) И бряк должен сработать на "on execution", прямо на OEP:

CODE NOW!

0061E0AC 55 PUSH EBP
0061E0AD 8BEC MOV EBP,ESP
0061E0AF 83C4 E8 ADD ESP,-18
0061E0B2 53 PUSH EBX
0061E0B3 56 PUSH ESI
0061E0B4 33C0 XOR EAX,EAX
0061E0B6 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0061E0B9 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
0061E0BC 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0061E0BF B8 F4D96100 MOV EAX,lawyerr.0061D9F4
0061E0C4 E8 4FA2DEFF CALL lawyerr.00408318



спертых байтов нет, красота! Пропишем в ImpRec RVA адрес OEP - 21E0AC(то есть VA_адрес(0061E0ACh) - ImageBase(00400000h)). Пропишем в ImpRec такой OEP, RVA и размер таблицы импорта он определит вроде правильно. Жмем IAT AutoSearch, Get Imports. видим, что не все функции определились. в версии 1.6 есть хорошая опция - Disassemble/HexView, дизасмим любую кривую функцию:



Хехе :) Производится переход по DWORD значению из адреса C00734+1 - по этому адресу лежит адрес нужной API-функции, хитр0 :) для таких целей был написан плугин, поставляется с ImpRec, но его не достаточно для версии 0.98! Поэтому я взялся за написание. Этот плагин можно взять здесь . После него импорт можно прикрутить к дампу(Fix Dump...). вот и все!

bi0w0rM

Комментарии
отсутствуют

Добавление комментария

Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий:



04.09.2011 Долгожданный релиз VB Decompiler. Масса улучшений декомпиляции Native Code. Значительно расширенна и обновлена справочная система на русском и английском языках.
20.12.2010 DotFix Software поздравляет наших клиентов и посетителей сайта с наступающим Новым Годом и рождеством! Желаем приятно провести праздники и успехов в новом году!
28.11.2010 Выпущена новая версия защиты DotFix NiceProtect. Основные изменения коснулись обфускатора Delphi программ. Теперь имеется полная поддержка Tab и Page контролов на формах, что обеспечивает максимальную совместимость обфускации с Delphi XE программами.
21.10.2010 Обновлен декомпилятор Visual Basic программ до версии 8.1. Декомпиляция P-Code программ становится все более идеальной, также проделана большая работа по улучшению анализа Native Code и .NET приложений.
16.09.2009 Полностью обновлен движок сайта! Теперь все ссылки имеют читаемый понятный вид, разного рода глюки на страницах убраны. И теперь сайт полноценно работает на второй версии нашего движка.
Архив новостей
Яндекс цитирования

Движок сайта: DotFix Engine v0.2
Администрация сайта:
Что в переводе означает природный камень .; вкладыш к диплому, фото .