![]() |
eXeL@B —› Вопросы новичков —› Зависает программа на WaitForSingleObject с параметром WAIT_FOREVER |
Посл.ответ | Сообщение |
|
Создано: 07 декабря 2012 16:01 · Личное сообщение · #1 |
|
Создано: 07 декабря 2012 16:07 · Личное сообщение · #2 |
|
Создано: 07 декабря 2012 16:10 · Личное сообщение · #3 |
|
Создано: 07 декабря 2012 16:11 · Личное сообщение · #4 normanCRC В ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 07 декабря 2012 16:16 · Поправил: normanCRC · Личное сообщение · #5 |
|
Создано: 07 декабря 2012 16:23 · Личное сообщение · #6 normanCRC пишет: А как можно узнать,по какой причине объект 0x000000ec не переходит в сигнальное состояние? Code:
Зависит от объекта, что считать сигнальным состоянием. ![]() |
|
Создано: 07 декабря 2012 16:33 · Личное сообщение · #7 |
|
Создано: 07 декабря 2012 18:28 · Личное сообщение · #8 |
|
Создано: 08 декабря 2012 01:27 · Поправил: tomac · Личное сообщение · #9 normanCRC Ну вот совершенно не очевидно. Чего угодно она может ждать. Вообще, с точки зрения программирования WaitForSingleObject в Main thread - штука неправильная. Только если это не в процессе загрузки. Смотри, откуда такой hObject берется. Странно, что функция вызывается косвенно по EDI, похоже, что она - метод класса. Но тут могу ошибаться, например, это может быть особенностью ExeCryptor'a, о которой я не знаю. Кстати, LastErr == ERROR_FILE_NOT_FOUND интересно. ![]() |
|
Создано: 10 декабря 2012 01:16 · Личное сообщение · #10 Вот такая ещё гадость попадается: Code:
Не пойму,что проверяется в этом цикле.Похоже на контрольную сумму. Замена JE SHORT 004CC88B на JMP приводит к ошибке. Результат - зацикливание с загрузкой процессора. ![]() |
|
Создано: 10 декабря 2012 01:24 · Личное сообщение · #11 В оригинале происходит вот что: Code:
![]() |
|
Создано: 10 декабря 2012 01:45 · Личное сообщение · #12 |
|
Создано: 10 декабря 2012 13:27 · Личное сообщение · #13 Vovan666 У ExeCryptor же привязка к железу,значит мой файл у вас не запустится. Такая проверка во многих протекторах применяется походу дела, смысл в том что многократно прогоняется один и тот же цикл,в конце которого стоит команда JMP EAX. Так вот, 20-30 раз он прогоняется правильно, а затем EAX получает неверное значение и дамп падает. Непонятно,как можно это пропатчить - ведь таких проверок сотни ,если не тысячи. ![]() |
|
Создано: 10 декабря 2012 13:32 · Личное сообщение · #14 |
|
Создано: 10 декабря 2012 14:06 · Личное сообщение · #15 |
|
Создано: 11 декабря 2012 23:31 · Личное сообщение · #16 |
|
Создано: 11 декабря 2012 23:55 · Личное сообщение · #17 |
|
Создано: 12 декабря 2012 00:04 · Личное сообщение · #18 Vovan666 Проверку после DeviceIoControl можно исправить,только дальше пошла эта хрень с динамическими прыжками. Там хитрость в чем: есть например адрес 12345678 JMP EAX , прога его может 3-4 раза проходить и значение EAX всегда разное. Если я его заменю на JMP ABCD1234 ,то первый раз оно сработает,а потом опять крякнется. Как эту головоломку решить, весь мозг сломал ![]() |
|
Создано: 12 декабря 2012 00:22 · Личное сообщение · #19 |
![]() |
eXeL@B —› Вопросы новичков —› Зависает программа на WaitForSingleObject с параметром WAIT_FOREVER |