Сейчас на форуме: asfa (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Забороть криптовку PC-Guard 5 |
Посл.ответ | Сообщение |
|
Создано: 28 июня 2010 10:15 · Поправил: Kindly · Личное сообщение · #1 Ковыряю плагин Crypto для AutoPlay Media Studio 8, распаковать можно, но при обычной распаковке протектор не совершает процедур дешифровки и запись покриптованного кода в память. Итак, что сам нашел: OEP: 0005E84F IATRVA: 00077000 IATSize: 0000051C В импорте фикс ExitProcess, но так же пробовал и удалять, т.к. при работе без дешифрованных кусков кода плагин много раз ссылается на эту функу. Релоки поправлял. Так приблизительно это работает. Первой проверяется экспорт функция irPlg_ValidateLicense, вот начало: Code:
В идеале после распаковки и дешифровки плагин должен запускаться с нагом без ошибки, потом можно просто сделать mov al,1 > retn ![]() Прот юзает какую-то неслабую антиотладку, все бряки типа ReadFile, WriteProcessMemory и т.д. когда работаю в ольке из под проги детектит и начинает глючить. Вобщем не могу отловить записываемые в память байты, а это скорее всего нужно делать как-то из под проги. От бессилия дампил секции с вписанными дешифрованными данными и вставлял тупо байты в дамп в WinHEX - но все равно не работало, может не так что делал, х.з. Выкладываю прогу с плагином + пример (12 метров): Поставте бряк в проге по адресу: 00432A51 - туда зайдете и посмотрите подробно как работает вышеуказанная процедура регистрации при загрузке пакованого плагина. Где еще смотреть: Project > Plugins, если нажать About Plugin - также происходят проверки Тест: F5 - проверка при компиляции проекта, проверка еще при Build (F7) Итак, триал и декрипт: реестр HKCU, 'Software\Microsoft\MSDAIPP\Provider\{14A34231-C768D78E-D3CB95BF}'; HKCU, 'Software\Microsoft\MSDAIPP\Provider\{2A3C61E9-48AE0D8F-E1A75751-4AAB9 DC0}'; файл с аттрибутами С:\Documents and Settings\All Users\Application Data\JmsZO\PCGWIN32.LI5 ----- Array[Login..Logout] of Life ![]() |
|
Создано: 28 июня 2010 14:41 · Личное сообщение · #2 |
|
Создано: 29 июня 2010 10:10 · Поправил: Kindly · Личное сообщение · #3 Хм, круто. Так что pc-guard обманывает нас? На самом деле код не криптуется, а разбавляется вызовами на зашифрованные участки кода или типа того? Вот что происходит при нажатии на батоне в скомпилированном проекте: 01CC490A C705 182DD901 1C050000 MOV DWORD PTR DS:[1D92D18],51C -- тут бряк 01CC4914 83C4 04 ADD ESP,4 -- пропатчен крипто вызов CALL DWORD PTR DS:[10077310] 01CC4917 33C0 XOR EAX,EAX 01CC4919 40 INC EAX 01CC491A 90 NOP 01CC491B 90 NOP 01CC491C 90 NOP 01CC491D 90 NOP 01CC491E 90 NOP 01CC491F 90 NOP 01CC4920 90 NOP 01CC4921 90 NOP Таких крипто вызовов CALL DWORD PTR DS:[10077310] нашел штук 15. Плагин работает! Но если сохранить изменения в файл, при следующем запуске получается такая канитель: 01CC490A C705 182DD901 1C050000 MOV DWORD PTR DS:[1D92D18],51C 01CC4914 83C4 04 ADD ESP,4 01CC4917 338C32 90909090 XOR ECX,DWORD PTR DS:[EDX+ESI+90909090] 01CC491E 90 NOP 01CC491F 90 NOP 01CC4920 90 NOP 01CC4921 90 NOP Патчаться откуда то байты С040 (по офсетам 01CC4918 и 01CC4919 и т.д. при изменении) и плагин соответственно не работает. Значит предусмотрена где-то проверка на это дело. Как обойти это, откуда патчится? Изменения вступают сразу после LoadLibraryA в рантайме по адресу 00534978. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 29 июня 2010 11:15 · Личное сообщение · #4 KindlyПочему я потвоему /*3552A7C*/ PUSH 3622D18 /*3552A81*/ CALL ESI /*3552A83*/ TEST EAX,EAX /*3552A85*/ JE SHORT 03552A9F изменил на /*3552A81*/ ADD ESP,4 /*3552A84*/ XOR EAX,EAX /*3552A86*/ INC EAX Потомучто это dll! релоки перебьют определённые комманды,в данном случае PUSH 3622D18 перебьётся релоками а ниже стоящии комманды нет ;) ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Забороть криптовку PC-Guard 5 |