![]() |
eXeL@B —› Вопросы новичков —› Помогите сообразить что сделать |
Посл.ответ | Сообщение |
|
Создано: 15 ноября 2012 21:34 · Личное сообщение · #1 Всем поклон! Помогите пожалуйста сообразить как завершить процедуру без закрытия программы и ошибок. Эта программа называется Pro Tools 10 и имеет защиту usb-ключем ILok 2 и службой PACE Anti-Piracy. В принципе в ней всё доломано почти кроме одного момента: программа полностью работает и запускается НО - почти в каждую функцию программы вшита рандомная кросспроверка целостности кода. И когда начинаешь юзать функцию через какое-то время появляется ошибка MF application has been compromised...приходится нажимать ок и программа закрывается. Так работает защита...любое несоответствие в следствие проверки целостности кода вызывает в dll программы стандартную процедуру MFortress и потом jmp на exit))) выглядит в dll это так: text:1223FE40 ; —------------------------------------------------------------------------- .text:1223FE40 jg short near ptr loc_1223FE51+1 .text:1223FE42 push 0 .text:1223FE44 push offset aMfApplicationH ; "MF: application has been compromised" .text:1223FE49 push 0 .text:1223FE4B call ds:MessageBoxA .text:1223FE51 .text:1223FE51 loc_1223FE51: ; CODE XREF: .text:1223FE40 j .text:1223FE51 push 0FFFFFFFFh .text:1223FE53 call ds:exit подскажите плиииз что можно сделать, или как можно заменить этот сценарий чтоб ошибка не вызывалась...и при этом не было другой ошибки что процедура не закончена и т.п.?? т.е. как можно завершить поток? обработчиком исключений? если так то это как делается? а в hex обозначении выглядит это так: 6a 10 6a 00 68 a8 ba c0 12 6a 00 ff 15 64 bb ac 12 6a ff ff (это начиная от 0223fe40 и заканчивая 0223fe53) если можете подсказать чем это заменить или завершить в hex то было бы просто обалденно. Помогите пожалуйста. собственного разума не хватает) ![]() |
|
Создано: 15 ноября 2012 21:42 · Личное сообщение · #2 |
|
Создано: 15 ноября 2012 21:44 · Личное сообщение · #3 |
|
Создано: 15 ноября 2012 21:59 · Личное сообщение · #4 hw бряк на доступ на пропатченный код - это как сделатЬ? я просто ламер))) я вообще не хакер, программер...разбираюсь только)) просто тупо по логике)) не знаю как посмотреть откуда вызывается)) в отладчике не знаю такую функцию))) подскажите? как делат hw бряк?? если не нажимать ок и спрятать окно куда-нить то можно работать дальше)))) но часто бывает что уже и плэй в проге не нажмёшь...и ещё какой-нибудь глюк))) ещё был вариант чтоб заместо байта 6a вначале поставить c3....так запускается но выдает (видимо когда происходит проверка и вызов) access violation unable to read))) можно нажать ок и работать дальше) но это не канает))) лучше уж что-то сделать с этой ерундой...как-то завершить... ![]() |
|
Создано: 15 ноября 2012 22:00 · Личное сообщение · #5 |
|
Создано: 15 ноября 2012 22:20 · Поправил: crypto · Личное сообщение · #6 |
|
Создано: 16 ноября 2012 10:41 · Личное сообщение · #7 c3 канает в принципе...но ошибок куча выскакивает...access violation unable to read)))) это расстраивает...и надоедает....хотелось бы как-нибудь завершить этот поток вообще...и чтоб без побочных эффектов....как-то через обработчик исключений или ещё как -то))) я просто не знаю как практически это делать...и какие ещё варинаты в таком случае могут быть. подскажите!!!! ![]() |
|
Создано: 16 ноября 2012 11:14 · Личное сообщение · #8 |
|
Создано: 16 ноября 2012 12:48 · Личное сообщение · #9 Поток просто так не убить, раз не нажав ОК нельзя работать с прогой нормально (поток встает на MessageBoxA до тех пор, пока ОК не нажмешь). Значит, этот поток за что-то отвечает. Надо искать источник этого дела, а не исполнение выхода, потому что не понятно, как сюда происходит переход. Например, если это jmp, в стеке нет адреса возврата и нельзя использовать ret, соответственно. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Помогите сообразить что сделать |