Сейчас на форуме: _MBK_, Adler, asfa, bartolomeo (+9 невидимых)

 eXeL@B —› Вопросы новичков —› Исследование D3DGear
Посл.ответ Сообщение

Ранг: 11.2 (новичок), 9thx
Активность: 0.030
Статус: Участник

Создано: 27 сентября 2012 23:29 · Поправил: Flasher-11
· Личное сообщение · #1

Всем привет
Захотел я вот пропатчить его, нашел где вылезает наг, исправил и все вроде бы должно быть хорошо. Программа запускается и работает, а вот снимать она ничего не хочет, никак не пойму в чем загвоздка

--> Оф сайт <--

Code:
  1. 004057FF  MOV EAX,DWORD PTR DS:[44B18C]
  2. 00405804  PUSH EAX                                 ; /Arg2 => 00000000
  3. 00405805  MOV ECX,DWORD PTR DS:[44B188]            ; |
  4. 0040580B  PUSH ECX                                 ; |Arg1 => 00000000
  5. 0040580C  CALL d3dGear.00414B90                    ; \d3dGear.00414B90
  6. 00405811  ADD ESP,8
  7. 00405814  TEST EAX,EAX
  8. 00405816  JE SHORT d3dGear.0040585D
  9. 00405818  PUSH d3dGear.0043D124                    ; /Arg5 = 0043D124 ASCII "D3DGear expired!"
  10. 0040581D  PUSH 0BB                                 ; |Arg4 = 000000BB
  11. 00405822  PUSH d3dGear.0043D184                    ; |Arg3 = 0043D184 ASCII ".\d3dGearExe.cpp"
  12. 00405827  PUSH 3                                   ; |Arg2 = 00000003
  13. 00405829  PUSH d3dGear.0044ADF0                    ; |Arg1 = 0044ADF0
  14. 0040582E  CALL d3dGear.00401D30                    ; \d3dGear.00401D30
  15. 00405833  ADD ESP,14
  16. 00405836  CALL d3dGear.00413940


На 00405816 просто сделал прыжок и все вроде бы чудесно. Пробовал еще возвращать значение 0 в EAX, но все так же, работать она работает, а не снимает Где могут быть подводные камни?



Ранг: 31.0 (посетитель), 70thx
Активность: 0.140
Статус: Участник

Создано: 27 сентября 2012 23:55
· Личное сообщение · #2

значит где то еще проверка стоит! выйди из этой процедуры и там посмотри условия)



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 28 сентября 2012 00:01 · Поправил: TryAga1n
· Личное сообщение · #3

Не знаю что значит "снимать" в контексте данной софтины, видимо какие-то данные сохранять...

Может быть банальная проверка контрольной суммы секции кода. Чтобы узнать, так ли єто, попробуй поменять какой-нибудь не критичный байт(Например ноп или 0 между функциями). Либо может быть проверка целостности определенных функций. Система в принципе так же. Ну и еще что пришло в голову - мемори брейкпоинт на чтение секции кода, а там уже смотреть кто-что-куда-зачем...



Ранг: 11.2 (новичок), 9thx
Активность: 0.030
Статус: Участник

Создано: 28 сентября 2012 00:11
· Личное сообщение · #4

Нашел! Видосы снимает, вопрос исчерпан Всем спасибо!




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 28 сентября 2012 07:14
· Личное сообщение · #5

ну хоть выкладывали бы решение и логику рассуждения, всяко полезнее.

-----
[nice coder and reverser]




Ранг: 11.2 (новичок), 9thx
Активность: 0.030
Статус: Участник

Создано: 28 сентября 2012 14:56 · Поправил: Flasher-11
· Личное сообщение · #6

Исправляюсь, пишу где и что нашел
Как я уже писал выше, идет проверка на триальность и вызывается наг окошко.
Code:
  1. 004057FF  MOV EAX,DWORD PTR DS:[44B18C]
  2. 00405804  PUSH EAX                                 ; /Arg2 => 00000000
  3. 00405805  MOV ECX,DWORD PTR DS:[44B188]            ; |
  4. 0040580B  PUSH ECX                                 ; |Arg1 => 00000000
  5. 0040580C  CALL d3dGear.00414B90                    ; \d3dGear.00414B90
  6. 00405811  ADD ESP,8
  7. 00405814  TEST EAX,EAX
  8. 00405816  JE SHORT d3dGear.0040585D
  9. 00405818  PUSH d3dGear.0043D124                    ; /Arg5 = 0043D124 ASCII "D3DGear expired!"
  10. 0040581D  PUSH 0BB                                 ; |Arg4 = 000000BB
  11. 00405822  PUSH d3dGear.0043D184                    ; |Arg3 = 0043D184 ASCII ".\d3dGearExe.cpp"
  12. 00405827  PUSH 3                                   ; |Arg2 = 00000003
  13. 00405829  PUSH d3dGear.0044ADF0                    ; |Arg1 = 0044ADF0
  14. 0040582E  CALL d3dGear.00401D30                    ; \d3dGear.00401D30
  15. 00405833  ADD ESP,14
  16. 00405836  CALL d3dGear.00413940


Можно поправить 00405816 на JMP SHORT d3dGear.0040585D и мы пролетаем наг окно и программа успешно запускается. По моему мнению можно сделать красивше, поместить 0 в EAX. Если 0, то мы пролетаем и запускаемся, если 1 то наг окно. Проверка происходит где-то здесь 0040580C CALL d3dGear.00414B90 . Входим и трассируем пока не натыкаемся на 00414930 PUSH EPB в конце процедуры будет помещение 1 в EAX.
Code:
  1. 00414A6C  CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
  2. 00414A72  MOV EAX,1
  3. 00414A77  MOV ECX,DWORD PTR SS:[EBP-C]
  4. 00414A7A  XOR ECX,EBP
  5. 00414A7C  CALL d3dGear.00423BF7
  6. 00414A81  MOV ESP,EBP
  7. 00414A83  POP EBP
  8. 00414A84  RETN


Соответственно исправляем 00414A72 MOV EAX,1 на 00414A72 MOV EAX,0 и трассируем дальше. На 00414A84 премещаемся вот сюда

Code:
  1. 00414BEB  ADD ESP,8
  2. 00414BEE  MOV EAX,1
  3. 00414BF3  JMP SHORT d3dGear.00414BF7
  4. 00414BF5  XOR EAX,EAX
  5. 00414BF7  MOV ESP,EBP
  6. 00414BF9  POP EBP
  7. 00414BFA  RETN


Тут также помещаем 0. Ну вот, наг окно убрано, идем дальше. Программа запускается, но не выполняет свой функционал. Далее при трассировке можно увидеть различные сообщения. По пути вроде бы ничего путного нет, но в самом конце есть создание Mutex'a и именного из-за него не работает весь функционал.
Code:
  1. 00405A74  TEST EAX,EAX
  2. 00405A76  JE SHORT d3dGear.00405A8E
  3. 00405A78  PUSH d3dGear.0043D53C   /MutexName = "{71971309-2B5E-4782-A72C-BFFD6C645341}"
  4. 00405A7D  PUSH 1                                                ; |InitialOwner = TRUE
  5. 00405A7F  PUSH 0                                                ; |pSecurity = NULL
  6. 00405A81  CALL DWORD PTR DS:[<&KERNEL32.CreateMutexA>]          ; \CreateMutexA

Просто поменял логику с 00405A76 JE SHORT d3dGear.00405A8E на JNZ SHORT d3dGear.00405A8E
Ну вот в принципе и все, программа запускается и функционал работает
Теперь думаю можно закрывать тему

| Сообщение посчитали полезным: KingSise
 eXeL@B —› Вопросы новичков —› Исследование D3DGear
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати