Сейчас на форуме: asfa (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Забороть криптовку PC-Guard 5
Посл.ответ Сообщение


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 28 июня 2010 10:15 · Поправил: Kindly
· Личное сообщение · #1

Ковыряю плагин Crypto для AutoPlay Media Studio 8, распаковать можно, но при обычной распаковке протектор не совершает процедур дешифровки и запись покриптованного кода в память.

Итак, что сам нашел:
OEP: 0005E84F IATRVA: 00077000 IATSize: 0000051C
В импорте фикс ExitProcess, но так же пробовал и удалять, т.к. при работе без дешифрованных кусков кода плагин много раз ссылается на эту функу. Релоки поправлял.

Так приблизительно это работает. Первой проверяется экспорт функция irPlg_ValidateLicense, вот начало:

Code:
  1. 10002A50 >/$ 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
  2. 10002A56  |. 6A FF          PUSH -1
  3. 10002A58  |. 68 7D260710    PUSH crypto.1007267D            
  4. 10002A5D  |. 50             PUSH EAX
  5. 10002A5E  |. 64:8925 000000>MOV DWORD PTR FS:[0],ESP
  6. 10002A65  |. 81EC 20010000  SUB ESP,120
  7. 10002A6B  |. C705 182D0D10 >MOV DWORD PTR DS:[100D2D18],51C  -- запись в секцию куска
  8. 10002A75  |. 56             PUSH ESI
  9. 10002A76  |. 8B35 10730710  MOV ESI,DWORD PTR DS:[10077310]  -- опять запись данных
  10. 10002A7C  |. 68 182D0D10    PUSH crypto.100D2D18
  11. 10002A81  |. FFD6           CALL ESI                         -- тут чтение байтов для декрипта С:\Documents and Settings\All Users\Application Data\JmsZO\PCGWIN32.LI5 (просто анпакнутый падает здесь)
  12. 10002A83  |. 85C0           TEST EAX,EAX
  13. 10002A85  |. 74 18          JE SHORT crypto.10002A9F         -- если все удачно происходит прыжок
  14. 10002A87  |. 32C0           XOR AL,AL
  15. 10002A89  |. 5E             POP ESI
  16. 10002A8A  |. 8B8C24 2001000>MOV ECX,DWORD PTR SS:[ESP+120]
  17. 10002A91  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
  18. 10002A98  |. 81C4 2C010000  ADD ESP,12C
  19. 10002A9E  |. C3             RETN
  20. 10002A9F  |> A1 042F0D10    MOV EAX,DWORD PTR DS:[100D2F04]  -- запись в секцию, при регистрации должно возвращать 0, если не зарегено, прыг не срабатывает - вызывается наг.
  21. 10002AA4  |. 85C0           TEST EAX,EAX
  22. 10002AA6  |. 0F85 65030000  JNZ crypto.10002E11


В идеале после распаковки и дешифровки плагин должен запускаться с нагом без ошибки, потом можно просто сделать mov al,1 > retn

Прот юзает какую-то неслабую антиотладку, все бряки типа ReadFile, WriteProcessMemory и т.д. когда работаю в ольке из под проги детектит и начинает глючить.
Вобщем не могу отловить записываемые в память байты, а это скорее всего нужно делать как-то из под проги.

От бессилия дампил секции с вписанными дешифрованными данными и вставлял тупо байты в дамп в WinHEX - но все равно не работало, может не так что делал, х.з.

Выкладываю прогу с плагином + пример (12 метров):
http://rghost.ru/2002378

Поставте бряк в проге по адресу:
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





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 28 июня 2010 14:41
· Личное сообщение · #2

/*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

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 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





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 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
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати