[c] Chaos Computer Russian eMagazine. WRiTER:  D()CT()r [c] D.i.P.G. Hack Lab's  2:4641/222.0@FiD0 В этой статье я расскажу о том как я ломал СУБД (если ее можно так назвать) DataEase 4.2rus. Для начала необходимо выяснить, что-же такое DataEase (для тех кто незнает =). DataEase это СУБД со своими специфическими базами. Программирование в ней напоминает прог- раммирование в Visual средах, но очень уж отдаленно. Зачем я ее ломал ? А все очень просто - у моего знакомого после смены материнской пла- ты эта самая программка отказалась напрочь работать, хотя и защита была на LPT-Key "Activator", но вот отказалась работать вообще. При переносе на 286 машину - работала, а на его 386 и на моей 486 напрочь отказывалась даже при наличии ключа. И вот BlackDeath "подогнал" мне такую-же DataEase, но уже с "привязкой" к ROM-BIOS ID (как указанно в самой доке). И я уже было собрался ее ломать, но вспомнил, что у нас в городе есть фирма которая продает это ПО. Я позвонил туда и попыта- лся востановить справедливость (переинсталяли бы человеку новую вер- сию и все), но господа потребовали $70 (а где у бедных программистов такие деньги). И вот когда они меня достали я сказал, что сломаю ее и буду даром роздавать направо и налево, но господа в ответ заявили, что мол защита очень крута и наворочена, содержит anti-debuger trips, зашифрована ну и т.д. И вот напившись пива я сел в 23:15 за это "чудо". К 01:00 она уже перестала выступать, что мол "UNAUTHOR COPY". К моему удивлению ника- ких анти-дебагерских алгоритмов я там и в помине не встретил. И вот настало время править код и я приготовившись писать TSR кряк начал разбираться как же все-таки работают обработчики прерываний =) В 02:45 мне все это надоело и я решил посмотреть на "polymorphyc engine" в этой защите. И когда я это увидел то медленно осел на пол, после меня одолел истерический приступ смеха. Там стояло: mov al,[si-0001] xor [si],al Для тех кто непонял обьясняю: розшифровка идет начиная с конца, si указатель текущего байта который подлежит розшифровке, а ключем для розшифровки берется впереди стоящий байт. Единственным trip's-ом было вот что: 0004EA00: 8CC8 mov ax,cs 0004EA02: 8ED8 mov ds,ax 0004EA04: C6060001EA mov b,[00100],0EA ;"ъ" 0004EA09: C70601010001 mov w,[00101],00100 0004EA0F: 051000 add ax,00010 0004EA12: A30301 mov [00103],ax 0004EA15: 90 nop 0004EA16: EBE8 jmps 0004EA00 ---------- (1) Для тех кто непонял обьясняю: при выполнении последнего джампа полу- чалось вот примерно такое: cs:0100: EA00015E65 jmp 655E:0100 И все ! Ну споткнется Sourcer об эту штуку. Ну и что ? Вообщем качество защиты не смотря на ее обьем (около 6 Kb) никуда не годится. В самой защите я неочень то и разбирался. Подправив пару байт я получил желаемый результат и забыл обо всем. Вот что я подпра- вил: DEASE.EXE 0004F0F2: A4 3C 0004F0F3: 8C 14 Кто хочет посмотреть подробнее - прилагаю этот модуль в архиве dease.zip