Исследование защиты программы InspectExe
Скриншот программы InspectExe
InspectExe - очень удобное расширение стандартного Проводника Windows для просмотра свойств исполняемых файлов. Кроме обычных вкладок добавляются новые вкладки с инструментами для просмотра секций исполняемого файла, функций импорта, ресурсов, параметров PE-заголовка, сертификатов и т.д. В общем, неплохое подспорье для реверсеров при первоначальном анализе своих жертв. InspectExe распространяется в двух вариантах - бесплатном с некоторыми заблокированными функциями и платном, где никаких ограничений, естественно, нет. Сейчас мы попробуем превратить бесплатную версию InspectExe в полнофункциональную, проведя анализ ее защиты, хотя в приличном обществе это называется не иначе как "вор у вора дубинку украл".
Скачиваем дистрибутив, устанавливаем. Запускать тут нечего, так как это динамическая библиотека, которая регистрируется инсталлятором и в дальнейшем подгружается Проводником по мере надобности.
Наг-окно
Нам остается открыть свойства какого-нибудь исполняемого файла и посмотреть как проявляются ограничения незарегистрированной версии. Это два наг-окна примерно такого вида, как на скриншоте. Плюс невозможно посмотреть и скопировать ресурсы.
Диалоговое окно в ресурсах
Откроем InspectExe.dll в редакторе ресурсов и поищем либо строки из наг-окна, либо диалоговые окна, которые с ними связаны. Вот первый наг-скрин. Его индекс в ресурсах - 116, или же 74h в шестнадцатеричной системе счисления. Поищем это значение в дизассемблере.
Code (Assembler) : Убрать нумерацию
- ...
- .text:1000FC44 mov edx, [esp+30h+hWndParent]
- .text:1000FC48 mov eax, dword_1003585C
- .text:1000FC4D push 0 ; dwInitParam
- .text:1000FC4F push offset DialogFunc ; lpDialogFunc
- .text:1000FC54 push edx ; hWndParent
- ; Значение индекса 74h или же 116 в десятеричной системе
- .text:1000FC55 push 74h ; lpTemplateName
- .text:1000FC57 push eax ; hInstance
- ; Открыть диалоговое окно с индексом 116
- .text:1000FC58 call ds:DialogBoxParamA
- .text:1000FC5E cmp eax, 1
- .text:1000FC61 jnz short loc_1000FC38
- .text:1000FC63 lea ecx, [edi+80h]
- .text:1000FC69 call sub_100179A0
- .text:1000FC6E cmp [edi+9Ch], esi
- .text:1000FC74 jnz short loc_1000FC38
- .text:1000FC76 pop edi
- ...
Диалоговое окно в ресурсах
Осталась вторая половина. Этот наг-скрин обычно появляется при переходе между вкладками. Он также без труда находится в ресурсах внутри все той же InspectExe.dll, только под индексом 119 или 77h в шестнадцатеричной системе счисления. В дизассемблере по этому индексу найдется несколько обращений к курсорам, они нас не интересуют, и легко отсеиваются по названиям функций, например:
Code (Assembler) : Убрать нумерацию
- .text:10001296 push 77h ; lpCursorName
- .text:10001298 push eax ; hInstance
- .text:10001299 call ds:LoadCursorA
- .text:1000129F mov hCursor, eax
Code (Assembler) : Убрать нумерацию
- .text:1000FAF0 mov eax, [esp+hWndParent]
- .text:1000FAF4 push 0Ch ; int
- .text:1000FAF6 add ecx, 80h
- .text:1000FAFC push 77h ; int
- .text:1000FAFE push ecx ; int
- .text:1000FAFF push eax ; hWndParent
- .text:1000FB00 mov ecx, offset dword_10035848 ; dwInitParam
- .text:1000FB05 call sub_100125F0
- .text:1000FB0A retn 4
Все ограничения с программы сняты
Вот теперь все, теперь точно все ограничения по функционалу сняты, надоедливые наг-окна нас тоже не побеспокоят. Ну а как вы воспользуетесь свежеукраденной дубинкой - это уже остается целиком на вашей совести.
Просмотров: 6278 | Комментариев: 10
Метки: исследование защиты, реверсинг
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ABRAHAM
(04.04.2013 в 11:01):
thanks for replying ,after turning off dep works well... ;)
ManHunter
(03.04.2013 в 18:48):
Disable your lame DEP and enjoy. And do not use translator next time, please :)
ABRAHAM
(03.04.2013 в 18:25):
Под XP-sp3 показывает DEP ошибка, на самом деле рад, если вы можете пожалуйста, напишите SWF учебник по тем же ... Я мог бы что-то отсутствует ... Пасиб
считать
считать
ManHunter
(07.02.2013 в 19:47):
Никакого готового вареза тут не будет.
Миха- Ламер
(07.02.2013 в 09:54):
А тот "инспектор" с предыдуще странице - он уже подломан = готов к использованию: а то у меня никаких дизассемлеров нет? micklevin@yandex.ru
lammer
(03.02.2013 в 19:46):
INSPECT_EXE_CRYPTO_KEY_0 = 0xF4031B45;
INSPECT_EXE_CRYPTO_KEY_1 = 0x002C1BB7;
INSPECT_EXE_CRYPTO_KEY_2 = 0x30AC96E2;
INSPECT_EXE_CRYPTO_KEY_3 = 0x7EA70182;
INSPECT_EXE_CRYPTO_KEY_4 = 0x04E5F23C;
INSPECT_EXE_CRYPTO_KEY_5 = 0xB560722D;
INSPECT_EXE_CRYPTO_KEY_6 = 0xDAA51A50;
INSPECT_EXE_CRYPTO_KEY_7 = 0x15879BC3;
INSPECT_EXE_CRYPTO_KEY_8 = 0x0C9A4B1D;
INSPECT_EXE_CRYPTO_KEY_9 = 0x15ABCBF8;
INSPECT_EXE_CRYPTO_KEY_10 = 0x01920A3C;
INSPECT_EXE_CRYPTO_KEY_11 = 0xDEADDEED;
INSPECT_EXE_CRYPTO_KEY_1 = 0x002C1BB7;
INSPECT_EXE_CRYPTO_KEY_2 = 0x30AC96E2;
INSPECT_EXE_CRYPTO_KEY_3 = 0x7EA70182;
INSPECT_EXE_CRYPTO_KEY_4 = 0x04E5F23C;
INSPECT_EXE_CRYPTO_KEY_5 = 0xB560722D;
INSPECT_EXE_CRYPTO_KEY_6 = 0xDAA51A50;
INSPECT_EXE_CRYPTO_KEY_7 = 0x15879BC3;
INSPECT_EXE_CRYPTO_KEY_8 = 0x0C9A4B1D;
INSPECT_EXE_CRYPTO_KEY_9 = 0x15ABCBF8;
INSPECT_EXE_CRYPTO_KEY_10 = 0x01920A3C;
INSPECT_EXE_CRYPTO_KEY_11 = 0xDEADDEED;
ManHunter
(30.01.2013 в 21:35):
В HiEW переключаешься на просмотр кода, затем в режим редактирования и там патчишь все на чистом ассемблере.
Руслан
(30.01.2013 в 19:20):
Еще вопрос, как быстро MOV AL,1 и RET 4 превратить в машинный код? Использовать справочник или это можно сделать в IDA?
ManHunter
(30.01.2013 в 10:49):
IDA Pro
Руслан
(30.01.2013 в 10:48):
Каким дизассемблером пользуетесь?
Добавить комментарий
Заполните форму для добавления комментария