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

 eXeL@B —› Основной форум —› Зацикливание или выход?
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 ноября 2005 00:43
· Личное сообщение · #1

Уважаемые эксперты! Почему часто программа после проверки некого ключа на правильность ключа выходит в ОС, если он не удовлетворяет условию? Разве нельзя пойти от конца - отловить момент выхода из проги и найти проверку условия? Или в таком случае можно поставить множество пустышек (обманок) с выходом? По моему лучше сделать зацикливание проги при неверном условии (при этом сделать так, чтобы не грузился сильно процессор или всё же пригрузить ). Поставить 10 тыс. безусловных (или условных) переходов, запутанных, разбросанных по проге, зацикленных, и, тогда как найти место проверки условия ключа? Вариант "плясать от конца" отпадает. Или я не прав? Просветите, плиз...




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 02 ноября 2005 00:52
· Личное сообщение · #2

sun07 пишет:
тогда как найти место проверки условия ключа

по обращению к памяти.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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)? И можно ли найти его во втором случае, когда крэкер видит, что прога висит, как он может это использовать?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 03 ноября 2005 01:27
· Личное сообщение · #4

sun07 - ваши пространные объяснения (не особо понятные с первого чтения) навервают на то, что подобную защиту вам хочется реализовать в своей программе. Делайте - мы потом посмотрим



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 ноября 2005 01:40
· Личное сообщение · #5

Проще сказать: "Я не знаю. Посмотрю потом ;)"




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 03 ноября 2005 03:01
· Личное сообщение · #6

Проще сказать: "Я не знаю. Посмотрю потом ;)"

Конечно можно и так сказать
Но Ara прав: зачем помогать Вам усложнять нам жизнь (сори за коломбур)?



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

Создано: 05 ноября 2005 13:28
· Личное сообщение · #7

to sun07 В нашем мире и без тебя проблем полно



Ранг: 48.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 05 ноября 2005 14:49
· Личное сообщение · #8

sun07
По моему лучше сделать зацикливание проги при неверном условии

Лучше всего тогда сделать, чтобы программа вообще не выходила, а продолжала работать, но временами бы глючила. Например неправильно считала бы баланс, вставляла бы артефакты или водяные знаки в картинки и т.д. смотря что за программа. Так действительно иногда делается, правда могут возникнуть проблемы с законом о защите прав потребителей.

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




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 ноября 2005 17:41
· Личное сообщение · #9

sun07 пишет:
IF A<>B then END
Ловим END (кстати, как он ловится?)


Довольно часто END представляет собой выход на WinApi функции наподобие MessageBox'ов на ExitProcess.

Если прога оканчивает проверку и при отриц. результате отображает мессадж, то от него часто несложно вернуться назад, отследить все преходы и поменить условия.

А вообще все эти приемы и зацикливания - все тоже снимается.
"Если в программе присутствует четкий алгоритм, то ее стойкость равна 0" (с) не помню кто

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 05 ноября 2005 18:22
· Личное сообщение · #10

А мне понравился прием, примененный в проге StyleXP, версию точно не помню, но работает со 2 сервиспаком, старая не работала. Так вот, там после проверки регистрации/триала прога топает на ExitProcess. Если это место потрейсить по F8, то прога уйдет в Terminate, а если поставить железный бряк, то прога тоже топает на ExitProcess, но по F9 в этом месте нормально запускается(до сих пор не догнал как-так)... Пробовал трейсить по самой АПИ и оказался опять в проге, там дальше была АПИ-функция, которая получала код с которым прога выходила, хе но трейсить прогу нельзя так просто - вываливается в Terminate. А инфа о регистрации пишется в памяти сразу перед железячным кодом. В зарегистрированной там должно быть FFFFFF. Если вручную вписать - то прога запустится как зареганная и исчезнет кнопочка для регистрации. Но там что-то такого намученно, что по истечению триала все равно не пашет, я пока не разобрался, но рекомендую поисследовать кто хочет, есть интересные моменты!

-----
Research is my purpose





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 06 ноября 2005 03:35
· Личное сообщение · #11

Но там что-то такого намученно, что по истечению триала все равно не пашет

Там, кроме того, что трейсил ты, за триал Армадила отвечает.



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 06 ноября 2005 14:14 · Поправил: Error_Log
· Личное сообщение · #12

Gideon Vi
Хе, моя версия без армадиллы была, там вообще никаких протов не навешенно, защита-самопалка и все.
SEH-и там есть, но это не армадилла. Просто в Ольке надо игнор-эксепшн включить.
Там кол-во дней пишется сразу перед железячным кодом после процедуры проверки, а вот если прога зарегана, то там FF... Просто там проверок этих по-ходу дофига. Насколько я знаю арма по истечению триала не декриптует файл, а тут все в голом виде; просто у этой проги есть еще служба, вполне возможно, что она и проверяет прогу на наличие бряков, надо будет под САЙС-ом ее поковырять.
Меня удивило то, что прога заходит в АПИ ExitProcess, а с нее опять попадает в прогу, правда в другом месте уже.

-----
Research is my purpose



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


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