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

 eXeL@B —› Вопросы новичков —› Зависает программа на WaitForSingleObject с параметром WAIT_FOREVER
Посл.ответ Сообщение

Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 декабря 2012 16:01
· Личное сообщение · #1

Прилагаю скриншот:


По документации MSDN такого параметра даже нет.Это такой прикол от разработчиков?
Как можно обойти зависание,обычный nop приводит к ошибке



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 декабря 2012 16:07
· Личное сообщение · #2

Ещё пробовал установить таймаут 256 мс, тоже самое потом вылазит ошибка. Похоже что этот участок что-то проверяет,может быть контрольную сумму или же это антидампы?



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 07 декабря 2012 16:10
· Личное сообщение · #3

Это не зависание, а ожидание. WAIT_FOREVER == INFINITE. Функция вернет управление, когда объект 0x000000ec перейдет в сигнальное состояние.




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

Создано: 07 декабря 2012 16:11
· Личное сообщение · #4

normanCRC
В RAR СТАТЬЯХ есть туторы по снятию ExeCryptor

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




Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 декабря 2012 16:16 · Поправил: normanCRC
· Личное сообщение · #5

А как можно узнать,по какой причине объект 0x000000ec не переходит в сигнальное состояние?
Т.е. это косяк распаковки или же срабатывает защита от взлома?



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 07 декабря 2012 16:23
· Личное сообщение · #6

normanCRC пишет:
А как можно узнать,по какой причине объект 0x000000ec не переходит в сигнальное состояние?


Code:
  1. The WaitForSingleObject function can wait for the following objects:
  2.  
  3. Change notification 
  4. Console input 
  5. Event 
  6. Memory resource notification 
  7. Mutex 
  8. Process 
  9. Semaphore 
  10. Thread 
  11. Waitable timer 


Зависит от объекта, что считать сигнальным состоянием.



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 декабря 2012 16:33
· Личное сообщение · #7

Наверно вот это мне подойдет для начала:
http://exelab.ru/f/action=vthread&forum=1&topic=19462



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 декабря 2012 18:28
· Личное сообщение · #8

Вот залез Процесс Хакером и поглядел что там творится:


Процесс ожидает ответа от библиотеки fmod.dll надо понимать? А та в свою очередь пытается что-то открыть,наверно файл которого нет на диске.



Ранг: 65.3 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 08 декабря 2012 01:27 · Поправил: tomac
· Личное сообщение · #9

normanCRC
Ну вот совершенно не очевидно. Чего угодно она может ждать.
Вообще, с точки зрения программирования WaitForSingleObject в Main thread - штука неправильная. Только если это не в процессе загрузки. Смотри, откуда такой hObject берется.
Странно, что функция вызывается косвенно по EDI, похоже, что она - метод класса. Но тут могу ошибаться, например, это может быть особенностью ExeCryptor'a, о которой я не знаю.

Кстати, LastErr == ERROR_FILE_NOT_FOUND интересно.



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 10 декабря 2012 01:16
· Личное сообщение · #10

Вот такая ещё гадость попадается:
Code:
  1. main  004CC82D                    MOV EAX,DWORD PTR DS:[513970]           EAX=004C96F1
  2. main  004CC832                    TEST EAX,EAX
  3. main  004CC834                    JE SHORT 004CC83D
  4. main  004CC836                    PUSH DWORD PTR SS:[ARG.1]               ESP=0012FEA4
  5. main  004CC83A                    CALL EAX                                EAX=0009001F, ECX=00030000, EDX=00000300
  6. main  004CC83C                    POP ECX                                 ECX=00000001, ESP=0012FEA8
  7. main  004CC83D                    PUSH ESI                                ESP=0012FEA4
  8. main  004CC83E                    PUSH EDI                                ESP=0012FEA0
  9. main  004CC83F                    MOV ECX,0050007C                        ECX=0050007C
  10. main  004CC844                    MOV EDI,00500094                        EDI=00500094
  11. main  004CC849                    XOR EAX,EAX                             EAX=00000000
  12. main  004CC84B                    CMP ECX,EDI
  13. main  004CC84D                    MOV ESI,ECX                             ESI=0050007C
  14. main  004CC84F                    JNB SHORT 004CC868
  15. main  004CC851                    TEST EAX,EAX
  16. main  004CC853                    JNE SHORT 004CC894
  17. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=00000000
  18. main  004CC857                    TEST ECX,ECX
  19. main  004CC859                    JE SHORT 004CC85D
  20. main  004CC85D                    ADD ESI,4                               ESI=00500080
  21. main  004CC860                    CMP ESI,EDI
  22. main  004CC862                    JB SHORT 004CC851
  23. main  004CC851                    TEST EAX,EAX
  24. main  004CC853                    JNE SHORT 004CC894
  25. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=004C99FA
  26. main  004CC857                    TEST ECX,ECX
  27. main  004CC859                    JE SHORT 004CC85D
  28. main  004CC85B                    CALL ECX                                ECX=00000080, EDX=00000080
  29. main  004CC85D                    ADD ESI,4                               ESI=00500084
  30. main  004CC860                    CMP ESI,EDI
  31. main  004CC862                    JB SHORT 004CC851
  32. main  004CC851                    TEST EAX,EAX
  33. main  004CC853                    JNE SHORT 004CC894
  34. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=004D07AD
  35. main  004CC857                    TEST ECX,ECX
  36. main  004CC859                    JE SHORT 004CC85D
  37. main  004CC85B                    CALL ECX                                ECX=00000003, EDX=00513EF0
  38. main  004CC85D                    ADD ESI,4                               ESI=00500088
  39. main  004CC860                    CMP ESI,EDI
  40. main  004CC862                    JB SHORT 004CC851
  41. main  004CC851                    TEST EAX,EAX
  42. main  004CC853                    JNE SHORT 004CC894
  43. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=004D1A2F
  44. main  004CC857                    TEST ECX,ECX
  45. main  004CC859                    JE SHORT 004CC85D
  46. main  004CC85B                    CALL ECX
  47. main  004CC85D                    ADD ESI,4                               ESI=0050008C
  48. main  004CC860                    CMP ESI,EDI
  49. main  004CC862                    JB SHORT 004CC851
  50. main  004CC851                    TEST EAX,EAX
  51. main  004CC853                    JNE SHORT 004CC894
  52. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=004D2566
  53. main  004CC857                    TEST ECX,ECX
  54. main  004CC859                    JE SHORT 004CC85D
  55. main  004CC85B                    CALL ECX                                ECX=BB40E64E, EDX=00000001
  56. main  004CC85D                    ADD ESI,4                               ESI=00500090
  57. main  004CC860                    CMP ESI,EDI
  58. main  004CC862                    JB SHORT 004CC851
  59. main  004CC851                    TEST EAX,EAX
  60. main  004CC853                    JNE SHORT 004CC894
  61. main  004CC855                    MOV ECX,DWORD PTR DS:[ESI]              ECX=004D1BB6
  62. main  004CC857                    TEST ECX,ECX
  63. main  004CC859                    JE SHORT 004CC85D
  64. main  004CC85B                    CALL ECX                                ECX=00004121, EDX=7C93845C
  65. main  004CC85D                    ADD ESI,4                               ESI=00500094
  66. main  004CC860                    CMP ESI,EDI
  67. main  004CC862                    JB SHORT 004CC851
  68. main  004CC864                    TEST EAX,EAX
  69. main  004CC866                    JNE SHORT 004CC894
  70. main  004CC868                    PUSH 004D4630                           ESP=0012FE9C
  71. main  004CC86D                    CALL 004C9A5A                           ECX=004D4630, EDX=00000004
  72. main  004CC872                    MOV ESI,00500000                        ESI=00500000
  73. main  004CC877                    MOV EAX,ESI                             EAX=00500000
  74. main  004CC879                    MOV EDI,00500078                        EDI=00500078
  75. main  004CC87E                    CMP EAX,EDI
  76. main  004CC880                    POP ECX                                 ESP=0012FEA0
  77. main  004CC881                    JNB SHORT 004CC892
  78. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=00000000
  79. main  004CC885                    TEST EAX,EAX
  80. main  004CC887                    JE SHORT 004CC88B
  81. main  004CC88B                    ADD ESI,4                               ESI=00500004
  82. main  004CC88E                    CMP ESI,EDI
  83. main  004CC890                    JB SHORT 004CC883
  84. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004CFF4D
  85. main  004CC885                    TEST EAX,EAX
  86. main  004CC887                    JE SHORT 004CC88B
  87. main  004CC889                    CALL EAX                                EAX=A76906E1, ECX=0012FE60, EDX=7C93845C
  88. main  004CC88B                    ADD ESI,4                               ESI=00500008
  89. main  004CC88E                    CMP ESI,EDI
  90. main  004CC890                    JB SHORT 004CC883
  91. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004DD571
  92. main  004CC885                    TEST EAX,EAX
  93. main  004CC887                    JE SHORT 004CC88B
  94. main  004CC889                    CALL EAX                                EAX=00000000, ECX=004DD748, EDX=00000008
  95. main  004CC88B                    ADD ESI,4                               ESI=0050000C
  96. main  004CC88E                    CMP ESI,EDI
  97. main  004CC890                    JB SHORT 004CC883
  98. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004DD230
  99. main  004CC885                    TEST EAX,EAX
  100. main  004CC887                    JE SHORT 004CC88B
  101. main  004CC889                    CALL EAX                                EAX=00000000, ECX=004DD590, EDX=0000000C
  102. main  004CC88B                    ADD ESI,4                               ESI=00500010
  103. main  004CC88E                    CMP ESI,EDI
  104. main  004CC890                    JB SHORT 004CC883
  105. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004DD250
  106. main  004CC885                    TEST EAX,EAX
  107. main  004CC887                    JE SHORT 004CC88B
  108. main  004CC889                    CALL EAX                                EAX=00000000, ECX=004DD5D0, EDX=00000010
  109. main  004CC88B                    ADD ESI,4                               ESI=00500014
  110. main  004CC88E                    CMP ESI,EDI
  111. main  004CC890                    JB SHORT 004CC883
  112. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004DD270
  113. main  004CC885                    TEST EAX,EAX
  114. main  004CC887                    JE SHORT 004CC88B
  115. main  004CC889                    CALL EAX                                EAX=00000000, ECX=004DD5A0, EDX=00000014
  116. main  004CC88B                    ADD ESI,4                               ESI=00500018
  117. main  004CC88E                    CMP ESI,EDI
  118. main  004CC890                    JB SHORT 004CC883
  119. main  004CC883                    MOV EAX,DWORD PTR DS:[ESI]              EAX=004DD290
  120. main  004CC885                    TEST EAX,EAX
  121. main  004CC887                    JE SHORT 004CC88B
  122. main  004CC889                    CALL EAX                                EAX=00000000, ECX=7C80172E, EDX=00000007, EBX=01BF0048, ESP=0012F4E0, EBP=01BF00A8, ESI=00DC2000, EDI=01BF0000
  123. --------  Logging stopped


Не пойму,что проверяется в этом цикле.Похоже на контрольную сумму. Замена JE SHORT 004CC88B на JMP приводит к ошибке. Результат - зацикливание с загрузкой процессора.



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 10 декабря 2012 01:24
· Личное сообщение · #11

В оригинале происходит вот что:
Code:
  1. 004CC889 Main     CALL EAX                                  ; EAX=00000000, ECX=004DD5A0, EDX=00000014
  2. 004CC88B Main     ADD ESI,4                                 ; ESI=00500018
  3. 004CC88E Main     CMP ESI,EDI
  4. 004CC890 Main     JB SHORT 004CC883
  5. 004CC883 Main     MOV EAX,DWORD PTR DS:[ESI]                ; EAX=004DD290
  6. 004CC885 Main     TEST EAX,EAX
  7. 004CC887 Main     JE SHORT 004CC88B
  8. 004CC889 Main     CALL EAX                                  ; EAX=0012FBA8, ECX=0012FBB4, EDX=0000012C, EBX=00000000, EBP=0012EFD4, ESI=7FFDF000, EDI=20000000
  9. KiFastSystemCallR>RETN                                      ; EAX=76544AE8, ECX=00000000, EDX=7C93845C, EBP=0012EEE8
  10. KiFastSystemCallR>RETN                                      ; EAX=77BD9FB8, ECX=77BB5DF8, EDX=76AF6000, EBP=0012EBD0
  11. KiFastSystemCallR>RETN                                      ; EAX=77BDAB20, ECX=77BDE014, EDX=76153000, EBP=0012E8B8
  12. KiFastSystemCallR>RETN                                      ; EAX=760B14F8, ECX=760B312C, EDX=76153C41, EBP=0012EBD0
  13. KiFastSystemCallR>RETN                                      ; EAX=7C94AC2F, ECX=0012FA58, EDX=00000030, EBX=72BF46EB, EBP=0012FB48, ESI=001622B8, EDI=0012FB18
  14. KiFastSystemCallR>RETN                                      ; EAX=00000000, ECX=00000001, EDX=FFFFFFFF
  15. 7C937B39 Main     RETN 8




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 10 декабря 2012 01:45
· Личное сообщение · #12

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



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 10 декабря 2012 13:27
· Личное сообщение · #13

Vovan666
У ExeCryptor же привязка к железу,значит мой файл у вас не запустится.
Такая проверка во многих протекторах применяется походу дела, смысл в том что многократно прогоняется один и тот же цикл,в конце которого стоит команда JMP EAX. Так вот, 20-30 раз он прогоняется правильно, а затем EAX получает неверное значение и дамп падает. Непонятно,как можно это пропатчить - ведь таких проверок сотни ,если не тысячи.




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

Создано: 10 декабря 2012 13:32
· Личное сообщение · #14

normanCRC пишет:
У ExeCryptor же привязка к железу,значит мой файл у вас не запустится.

Т.Е у вас программа с лиц ключём привязанная к вашей машине? или вы что-то другое имели в веду?

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




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 10 декабря 2012 14:06
· Личное сообщение · #15

ClockMan
Наверное имелось ввиду это http://exelab.ru/f/action=vthread&forum=5&topic=20580
А там х.з. какие-то мутные темы у данного автора.

А если дело в лицензии, то для распаковки она не нужна.



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 11 декабря 2012 23:31
· Личное сообщение · #16

Вот видео записал,как это всё происходит в отладчике:
http://rghost.ru/private/42176420/a4bfa2c2de484ba8a890177e524da3a3

Не пойму что это, эмулированные команды,проверка контрольных сумм или же "сплайдеры" как в Securom используются



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 11 декабря 2012 23:55
· Личное сообщение · #17

или же проверка в дровине



Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 декабря 2012 00:04
· Личное сообщение · #18

Vovan666
Проверку после DeviceIoControl можно исправить,только дальше пошла эта хрень с динамическими прыжками. Там хитрость в чем:
есть например адрес 12345678 JMP EAX , прога его может 3-4 раза проходить и значение EAX всегда разное.
Если я его заменю на JMP ABCD1234 ,то первый раз оно сработает,а потом опять крякнется.
Как эту головоломку решить, весь мозг сломал




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 12 декабря 2012 00:22
· Личное сообщение · #19

normanCRC пишет:
, весь мозг сломал

осталось руки сломать чтобы не засорял эфир


 eXeL@B —› Вопросы новичков —› Зависает программа на WaitForSingleObject с параметром WAIT_FOREVER
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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