![]() |
eXeL@B —› Основной форум —› Зацикливание или выход? |
Посл.ответ | Сообщение |
|
Создано: 02 ноября 2005 00:43 · Личное сообщение · #1 Уважаемые эксперты! Почему часто программа после проверки некого ключа на правильность ключа выходит в ОС, если он не удовлетворяет условию? Разве нельзя пойти от конца - отловить момент выхода из проги и найти проверку условия? Или в таком случае можно поставить множество пустышек (обманок) с выходом? По моему лучше сделать зацикливание проги при неверном условии (при этом сделать так, чтобы не грузился сильно процессор или всё же пригрузить ![]() ![]() |
|
Создано: 02 ноября 2005 00:52 · Личное сообщение · #2 |
|
Создано: 03 ноября 2005 01:21 · Поправил: sun07 · Личное сообщение · #3 Представьте, IF A<>B then END Ловим END (кстати, как он ловится?), идём назад от END и видим, что к END нас привело условие A<>B. А если сделать так: ... 'полезный код проги IF A<>B then 10 ... 'полезный код проги 10 goto 20 ... 15 и так 10000 переходов зацикленных ... 20 goto 40 ... 30 goto 15 ... 40 goto 30 На какую ячейку(область) памяти вы будете ставить бряк, вы не видите строки IF A<>B then 10, она где-то в огромной проге и перед выполнением строки IF A<>B then 10 существует множество обращений к памяти? Меня интересует, можно ли найти нужное условие, начиная анализ от выхода (END)? И можно ли найти его во втором случае, когда крэкер видит, что прога висит, как он может это использовать? ![]() |
|
Создано: 03 ноября 2005 01:27 · Личное сообщение · #4 |
|
Создано: 03 ноября 2005 01:40 · Личное сообщение · #5 |
|
Создано: 03 ноября 2005 03:01 · Личное сообщение · #6 |
|
Создано: 05 ноября 2005 13:28 · Личное сообщение · #7 |
|
Создано: 05 ноября 2005 14:49 · Личное сообщение · #8 sun07 По моему лучше сделать зацикливание проги при неверном условии Лучше всего тогда сделать, чтобы программа вообще не выходила, а продолжала работать, но временами бы глючила. Например неправильно считала бы баланс, вставляла бы артефакты или водяные знаки в картинки и т.д. смотря что за программа. Так действительно иногда делается, правда могут возникнуть проблемы с законом о защите прав потребителей. Твоя идея тоже имеет право на жизнь, просто дело в том, что трассировать нетривиальную программу в обратном направлении обычно само по себе достаточно сложно, даже без дополнительных ухищрений. Поэтому мало кто такое и делает. ![]() |
|
Создано: 05 ноября 2005 17:41 · Личное сообщение · #9 sun07 пишет: IF A<>B then END Ловим END (кстати, как он ловится?) Довольно часто END представляет собой выход на WinApi функции наподобие MessageBox'ов на ExitProcess. Если прога оканчивает проверку и при отриц. результате отображает мессадж, то от него часто несложно вернуться назад, отследить все преходы и поменить условия. А вообще все эти приемы и зацикливания - все тоже снимается. "Если в программе присутствует четкий алгоритм, то ее стойкость равна 0" (с) не помню кто ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 05 ноября 2005 18:22 · Личное сообщение · #10 А мне понравился прием, примененный в проге StyleXP, версию точно не помню, но работает со 2 сервиспаком, старая не работала. Так вот, там после проверки регистрации/триала прога топает на ExitProcess. Если это место потрейсить по F8, то прога уйдет в Terminate, а если поставить железный бряк, то прога тоже топает на ExitProcess, но по F9 в этом месте нормально запускается(до сих пор не догнал как-так)... Пробовал трейсить по самой АПИ и оказался опять в проге, там дальше была АПИ-функция, которая получала код с которым прога выходила, хе но трейсить прогу нельзя так просто - вываливается в Terminate. А инфа о регистрации пишется в памяти сразу перед железячным кодом. В зарегистрированной там должно быть FFFFFF. Если вручную вписать - то прога запустится как зареганная и исчезнет кнопочка для регистрации. Но там что-то такого намученно, что по истечению триала все равно не пашет, я пока не разобрался, но рекомендую поисследовать кто хочет, есть интересные моменты! ----- Research is my purpose ![]() |
|
Создано: 06 ноября 2005 03:35 · Личное сообщение · #11 |
|
Создано: 06 ноября 2005 14:14 · Поправил: Error_Log · Личное сообщение · #12 Gideon Vi Хе, моя версия без армадиллы была, там вообще никаких протов не навешенно, защита-самопалка и все. SEH-и там есть, но это не армадилла. Просто в Ольке надо игнор-эксепшн включить. Там кол-во дней пишется сразу перед железячным кодом после процедуры проверки, а вот если прога зарегана, то там FF... Просто там проверок этих по-ходу дофига. Насколько я знаю арма по истечению триала не декриптует файл, а тут все в голом виде; просто у этой проги есть еще служба, вполне возможно, что она и проверяет прогу на наличие бряков, надо будет под САЙС-ом ее поковырять. Меня удивило то, что прога заходит в АПИ ExitProcess, а с нее опять попадает в прогу, правда в другом месте уже. ----- Research is my purpose ![]() |
![]() |
eXeL@B —› Основной форум —› Зацикливание или выход? |