eXeL@B —› Основной форум —› Зацикливание или выход? |
Посл.ответ | Сообщение |
|
Создано: 02 ноября 2005 00:43 · Личное сообщение · #1 Уважаемые эксперты! Почему часто программа после проверки некого ключа на правильность ключа выходит в ОС, если он не удовлетворяет условию? Разве нельзя пойти от конца - отловить момент выхода из проги и найти проверку условия? Или в таком случае можно поставить множество пустышек (обманок) с выходом? По моему лучше сделать зацикливание проги при неверном условии (при этом сделать так, чтобы не грузился сильно процессор или всё же пригрузить ). Поставить 10 тыс. безусловных (или условных) переходов, запутанных, разбросанных по проге, зацикленных, и, тогда как найти место проверки условия ключа? Вариант "плясать от конца" отпадает. Или я не прав? Просветите, плиз... |
|
Создано: 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 —› Основной форум —› Зацикливание или выход? |