
Исследование защиты программы Diacrit

Скриншот программы Diacrit
Программа Diacrit предназначена для удобного ввода многобайтных символов различных национальных алфавитов, математических символов и значков, которых нет на клавиатуре. Что-то типа стандартной таблицы символов Windows, только более специализированная. Символы заносятся в буфер обмена, а затем их можно вставить в нужное приложение. В незарегистрированной версии доступны только два первых символа, а лицензия стоит почти 10 килорублей. Будем это устранять.
Запускаем программу, сперва появляется наг-скрин. После этого выбираем какой-нибудь язык из предлагаемого списка, и попытаемся выбрать какой-нибудь символ, начиная с третьего. Получим вот такое триальное сообщение:

Сообщение незарегистрированной программы
Отлично, теперь поищем эту строчку в файле. Исполняемый файл ничем не упакован и не зашифрован, все находится в лучшем виде:

Нехорошая строка найдена
Теперь все как обычно, загоняем файл в дизассемблер и подождем, когда он закончит работу. После этого поищем в листинге ссылки на строку о незарегистрированности. Последовательно найдется несколько указателей, ссылающихся друг на друга.
Code (Assembler) : Убрать нумерацию
- ; DATA XREF: DATA:off_485754
- DATA:00485234 off_485234 dd offset aOnly1st2Charac
- ; "Only 1st 2 characters allowed in unregi"...
Code (Assembler) : Убрать нумерацию
- ; DATA XREF: sub_47F938+48
- DATA:00485754 off_485754 dd offset off_485234
Code (Assembler) : Убрать нумерацию
- ...
- ; Проверить двойное слово по адресу 485624
- CODE:0047F971 mov eax, ds:off_485624
- CODE:0047F976 cmp dword ptr [eax], 0
- ; Если оно не равно 0, то сообщение о незарегистрированности не выводить
- CODE:0047F979 jnz short loc_47F9A3
- CODE:0047F97B push 0
- CODE:0047F97D lea eax, [ebp+var_10]
- ; Указатель на строку 'Only 1st 2 characters allowed in unregistered version'
- CODE:0047F980 mov edx, ds:off_485754
- CODE:0047F986 mov edx, [edx]
- ; Вывести сообщение на экран
- CODE:0047F988 call sub_4046DC
- CODE:0047F98D mov eax, [ebp+var_10]
- CODE:0047F990 mov cx, word_48094C
- CODE:0047F997 mov dl, 2
- ...
Code (Assembler) : Убрать нумерацию
- CODE:0047E1FB mov edx, [ebp+var_2C]
- CODE:0047E1FE lea eax, [ebp+var_C]
- CODE:0047E201 call sub_404584
- CODE:0047E206 mov eax, ds:off_4856C4
- CODE:0047E20B mov edx, [ebp+var_C]
- CODE:0047E20E call sub_404540
- ; Указатель на флаг зарегистрированности
- CODE:0047E213 mov eax, ds:off_485624
- CODE:0047E218 xor edx, edx
- ; Записать туда дефолтное значение 0
- CODE:0047E21A mov [eax], edx
- CODE:0047E21C mov eax, [ebp+var_8]
- CODE:0047E21F mov al, [eax+5]
- ; Какая-то проверка
- CODE:0047E222 cmp al, 80h
- ; Если она не пройдена, то программа не зарегистрирована
- CODE:0047E224 jb short loc_47E231
- ; Записать значение 511h в флаг зарегистрированности
- CODE:0047E226 mov eax, ds:off_485624
- CODE:0047E22B mov dword ptr [eax], 511h
- CODE:0047E231 loc_47E231:

Программа успешно "зарегистрирована"
После патча пропал стартовый наг-скрин, ограничение на символы, пункт покупки в меню, и появилась информация о регистрации в окне "О программе". Задача выполнена.
Просмотров: 4813 | Комментариев: 13
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
gob
(09.05.2025 в 07:53):
Вы будете смеяться, но теперь тулза стала бесплатной - на странице скачивания указан код регистрации.
Vitalik
(23.03.2012 в 10:48):
Что то я не нахожу в новой программе это наг. Сейчас выскакивает
If you this program useful then please register at
Порывшись в коде нашел ad7yj38fhdG9rG7n65EhY87HrW297UJk8TF5Re3wj76HYp65WQ90pmZa ключик глотает но не регает. Как бы функционал смахивает на фулл. Но вот наг напрягает
0052CF10 /$ 55 PUSH EBP
0052CF11 |. 89E5 MOV EBP,ESP
0052CF13 |. B8 10D05200 MOV EAX,OFFSET 0052D010
0052CF18 |. A3 707F5800 MOV DWORD PTR DS:[587F70],EAX
0052CF1D |. B8 10D25200 MOV EAX,OFFSET 0052D210
0052CF22 |. A3 747F5800 MOV DWORD PTR DS:[587F74],EAX
0052CF27 |. B8 00CF5200 MOV EAX,0052CF00
0052CF2C |. A3 787F5800 MOV DWORD PTR DS:[587F78],EAX
0052CF31 |. B8 802A4000 MOV EAX,00402A80
0052CF36 |. A3 7C7F5800 MOV DWORD PTR DS:[587F7C],EAX
0052CF3B |. A0 50D65200 MOV AL,BYTE PTR DS:[52D650]
0052CF40 |. A2 807F5800 MOV BYTE PTR DS:[587F80],AL
0052CF45 |. C9 LEAVE
0052CF46 \. C3 RETN
------------------------------------------------------
0052CF50 C605 20305800 MOV BYTE PTR DS:[583020],0
0052CF57 E8 B4FFFFFF CALL 0052CF10
0052CF5C |. B8 707F5800 MOV EAX,OFFSET 00587F70
0052CF61 E8 9A34EEFF CALL 00410400
0052CF66 \. C3 RETN
Подскажите уважаемый ManHunter как первык кол обмануть чтобы нага небыло. Нопы не помогают.
If you this program useful then please register at
Порывшись в коде нашел ad7yj38fhdG9rG7n65EhY87HrW297UJk8TF5Re3wj76HYp65WQ90pmZa ключик глотает но не регает. Как бы функционал смахивает на фулл. Но вот наг напрягает
0052CF10 /$ 55 PUSH EBP
0052CF11 |. 89E5 MOV EBP,ESP
0052CF13 |. B8 10D05200 MOV EAX,OFFSET 0052D010
0052CF18 |. A3 707F5800 MOV DWORD PTR DS:[587F70],EAX
0052CF1D |. B8 10D25200 MOV EAX,OFFSET 0052D210
0052CF22 |. A3 747F5800 MOV DWORD PTR DS:[587F74],EAX
0052CF27 |. B8 00CF5200 MOV EAX,0052CF00
0052CF2C |. A3 787F5800 MOV DWORD PTR DS:[587F78],EAX
0052CF31 |. B8 802A4000 MOV EAX,00402A80
0052CF36 |. A3 7C7F5800 MOV DWORD PTR DS:[587F7C],EAX
0052CF3B |. A0 50D65200 MOV AL,BYTE PTR DS:[52D650]
0052CF40 |. A2 807F5800 MOV BYTE PTR DS:[587F80],AL
0052CF45 |. C9 LEAVE
0052CF46 \. C3 RETN
------------------------------------------------------
0052CF50 C605 20305800 MOV BYTE PTR DS:[583020],0
0052CF57 E8 B4FFFFFF CALL 0052CF10
0052CF5C |. B8 707F5800 MOV EAX,OFFSET 00587F70
0052CF61 E8 9A34EEFF CALL 00410400
0052CF66 \. C3 RETN
Подскажите уважаемый ManHunter как первык кол обмануть чтобы нага небыло. Нопы не помогают.
Srinivas
(05.08.2011 в 10:46):
ManHunter
(23.05.2011 в 10:44):
Я никогда не выкладывал дистрибутивы, тем более на свой сервер. В остальном ничего особо не изменилось. Ищешь место, где инициализируется 511h, далее патч начала процедуры проверки как написано в статье. Затраченное время около 5 минут. Никаких ложных прыжков и прочей хни не замечено. Ну и пруф, конечно, чтобы не было сомнений:
http://s11.radikal.ru/i183/110...c45c2b3d.gif
http://s11.radikal.ru/i183/110...c45c2b3d.gif
mov
(22.05.2011 в 18:24):
ранее вы ещё не выкладывали дистрибутивы на сервер, вследствие чего польза этого исследования уменьшилась (а может, увеличилась, ибо до всего надо доходить самому) - по ссылке скачивается новая версия с новой логикой защиты, новыми смещениями, строками, проверкой забаненых ключей и кучей люжных прыжков для запутывания
Isaev
(21.11.2010 в 17:43):
На счёт закейгенить, я в ней сам заблудился :)))
А что не доделал на кого зарегена?
Красивее бы было, а то как-то не закончено смотрится.
А что не доделал на кого зарегена?
Красивее бы было, а то как-то не закончено смотрится.
ezfalc0n
(16.11.2010 в 01:14):
думаю автор на донате больше б заработал, хотя нет - с таким соотношением жадности и качества поделки - врядли.
хотя - мож для их менталитета - эт нормально?
ворота поставили, а забор забыли - про защиту.
спасибо - мало таких уютных местечек в сети
хотя - мож для их менталитета - эт нормально?
ворота поставили, а забор забыли - про защиту.
спасибо - мало таких уютных местечек в сети
fat-designer
(08.11.2010 в 15:02):
Надо учить ассемблер. Интересно, с фотошопом будет столь же легко?
ManHunter
(01.11.2010 в 18:15):
Ну есть же платные блокноты, платные программы для выбора цвета, платные редакторы реестра, и другие программы для всякой прочей мелочи. Имя им Легион, и все ихние аффтары хотят подрезать бабла за свои поделия.
zummenix
(01.11.2010 в 18:13):
Мне показалось, на вид программа простая, и за это просят денег? Скоро дойдет до того, что проги показывающие что-то типа MessageBox'а станут платными :)
Vampir
(01.11.2010 в 15:37):
когда все просят патч, и кейген не нужен ;)
ManHunter
(31.10.2010 в 10:22):
Щаз придет товарищ Исаев, и скажет, что надо было закейгенить. Потом придет Вовка и скажет, что опять ничего полезного :)
AyTkACT
(31.10.2010 в 04:30):
запись в ds:off_485624 - изящное решение :)
Мануал, как обычно, полезен.
Спасибо.
Мануал, как обычно, полезен.
Спасибо.
Добавить комментарий
Заполните форму для добавления комментария


