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

Скриншот программы Tail4win
Tail4win - очень удобный инструмент для мониторинга логов различных программ в реальном времени, например, лог ошибок веб-сервера, лог запросов к базе данных и т.п. Программа показывает все последние изменения в выбранном логе, есть возможность подсветки ключевых слов и целых строчек, в которых эти слова встречаются. Кто работает с Linux, наверняка знаком с командой tail, так вот в Tail4win кроме графической оболочки есть и консольная версия. Короче, это реально отличный помощник для системных администраторов, если бы только не цена. Но это дело поправимо.
Забираем с сайта дистрибутив, устанавливаем, смотрим. Оба исполняемых файла ничем не упакованы, по очереди отправим их на дизассемблирование. Пока двоичный код преобразуется в читаемый текст, посмотрим как себя ведет незарегистрированная программа. Первое, что бросается в глаза, это надпись в окне "О программе". Затем наг-окно при выходе из программы и надоедливая напоминалка, периодически вылезающая во время работы.

Окно "О программе"
Если попробовать открыть диалог регистрации, то мы выясним, что для регистрации требуется не серийный номер, а какой-то ключевой файл.

Окно регистрации
Естественно, что такого файла у нас нет, никакой информации о его внутреннем формате и даже о его названии нам тоже не известно. Значит придется применять бинарную хирургию. Зацепка у нас есть, это триальный текст в окне "О программе" что мы "хава нот регистер". Оставим грамматику на совести автора и поищем текст в файле.

Текст сообщения в файле
Возвращаемся в дизассемблер. Нам надо найти место, где эта строка используется, а также выяснить, при каких условиях она появляется.
Code (Assembler) : Убрать нумерацию
- .text:0068AB7B mov [ebp+var_8], eax
- .text:0068AB7E xor eax, eax
- .text:0068AB80 mov [ebp+var_C], eax
- .text:0068AB83 lea edx, [ebp+var_C]
- .text:0068AB86 lea eax, [ebp+var_8]
- ; Вызвать функцию проверки
- .text:0068AB89 call sub_597B90
- ; Если AL!=0, то триальную строку не показывать
- .text:0068AB8E test al, al
- .text:0068AB90 jnz short loc_68ABC8
- .text:0068AB92 lea edx, [ebp+var_14]
- .text:0068AB95 lea eax, [ebp+var_10]
- .text:0068AB98 call sub_597E5C
- .text:0068AB9D push offset aYouHavaNotRegi
- ; "You hava not register. This copy left "
- .text:0068ABA2 mov eax, [ebp+var_14]
- .text:0068ABA5 xor edx, edx
- .text:0068ABA7 push edx
- .text:0068ABA8 push eax
- .text:0068ABA9 lea eax, [ebp+var_24]
- .text:0068ABAC call sub_420740
- .text:0068ABB1 push [ebp+var_24]

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

Сообщение незарегистрированной программы
В незарегистрированной версии перед данными из лог-файла выводится сообщение об оставшихся днях и копирайты разработчика. Далеко искать не пришлось, все нужное находится прямо на точке входа в программу:
Code (Assembler) : Убрать нумерацию
- .itext:0045EB4C xor eax, eax
- .itext:0045EB4E mov ds:dword_468028, eax
- .itext:0045EB53 mov edx, offset dword_468028
- .itext:0045EB58 mov eax, offset dword_468024
- ; Вызвать функцию проверки
- .itext:0045EB5D call sub_4591C0
- ; Если AL!=0, то триальную строку не показывать
- .itext:0045EB62 test al, al
- .itext:0045EB64 jnz loc_45ECE0
- .itext:0045EB6A mov edx, offset dword_468030
- .itext:0045EB6F mov eax, offset dword_46802C
- .itext:0045EB74 call sub_459388
- .itext:0045EB79 cmp ds:dword_468030, 0
- .itext:0045EB80 ja loc_45EC11
- .itext:0045EB86 mov eax, off_46215C
- .itext:0045EB8B mov edx, offset aYourTrialHasEx
- ; "Your trial has expired. "
- .itext:0045EB90 call sub_405968
- .itext:0045EB95 call sub_405A68

Программа успешно "зарегистрирована"
Вот и все, теперь цель достигнута. Спасибо разработчикам за полезную программу, а вам спасибо, что дочитали до конца.
Просмотров: 1774 | Комментариев: 12
Метки: исследование защиты

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье

user
(15.04.2020 в 13:13):
А теперь ещё и делаем так,
чтобы эта красота всёже работала в WinXP/SP2:
;000.CRK file: (Use CRACKER.EXE for apply it)
;
;----------------------------------------------
Tail4win v.5.0.1.180710
Fixed - Run under WinXP/SP2
msvcr120.dll - Fix import
msvcr120.dll
.10027BAF: 4C 43
.10027BB1: 67 6D
.10027BB2: 69 6D
.10027BB3: 63 61
.10027BB4: 61 6E
.10027BB5: 6C 64
.10027BB6: 50 4C
.10027BB7: 72 69
.10027BB8: 6F 6E
.10027BB9: 63 65
.10027BBA: 65 41
.10027BBB: 73 00
.1002D84F: 4C 43
.1002D851: 67 6D
.1002D852: 69 6D
.1002D853: 63 61
.1002D854: 61 6E
.1002D855: 6C 64
.1002D856: 50 4C
.1002D857: 72 69
.1002D858: 6F 6E
.1002D859: 63 65
.1002D85A: 65 41
.1002D85B: 73 00
.100E5CB3: 4C 43
.100E5CB5: 67 6D
.100E5CB6: 69 6D
.100E5CB7: 63 61
.100E5CB8: 61 6E
.100E5CB9: 6C 64
.100E5CBA: 50 4C
.100E5CBB: 72 69
.100E5CBC: 6F 6E
.100E5CBD: 63 65
.100E5CBE: 65 41
.100E5CBF: 73 00
tail.exe - Fix import
tail.exe
.004065F3: 4C 43
.004065F5: 67 6D
.004065F6: 69 6D
.004065F7: 63 61
.004065F8: 61 6E
.004065F9: 6C 64
.004065FA: 50 4C
.004065FB: 72 69
.004065FC: 6F 6E
.004065FD: 63 65
.004065FE: 65 41
.004065FF: 73 00
.0046B12B: 4C 43
.0046B12D: 67 6D
.0046B12E: 69 6D
.0046B12F: 63 61
.0046B130: 61 6E
.0046B131: 6C 64
.0046B132: 50 4C
.0046B133: 72 69
.0046B134: 6F 6E
.0046B135: 63 65
.0046B136: 65 41
.0046B137: 73 00
tail.exe - Skip #GP after Fix Import
tail.exe
.00406530: 55 C3
;----------------------------------------------
чтобы эта красота всёже работала в WinXP/SP2:
;000.CRK file: (Use CRACKER.EXE for apply it)
;
;----------------------------------------------
Tail4win v.5.0.1.180710
Fixed - Run under WinXP/SP2
msvcr120.dll - Fix import
msvcr120.dll
.10027BAF: 4C 43
.10027BB1: 67 6D
.10027BB2: 69 6D
.10027BB3: 63 61
.10027BB4: 61 6E
.10027BB5: 6C 64
.10027BB6: 50 4C
.10027BB7: 72 69
.10027BB8: 6F 6E
.10027BB9: 63 65
.10027BBA: 65 41
.10027BBB: 73 00
.1002D84F: 4C 43
.1002D851: 67 6D
.1002D852: 69 6D
.1002D853: 63 61
.1002D854: 61 6E
.1002D855: 6C 64
.1002D856: 50 4C
.1002D857: 72 69
.1002D858: 6F 6E
.1002D859: 63 65
.1002D85A: 65 41
.1002D85B: 73 00
.100E5CB3: 4C 43
.100E5CB5: 67 6D
.100E5CB6: 69 6D
.100E5CB7: 63 61
.100E5CB8: 61 6E
.100E5CB9: 6C 64
.100E5CBA: 50 4C
.100E5CBB: 72 69
.100E5CBC: 6F 6E
.100E5CBD: 63 65
.100E5CBE: 65 41
.100E5CBF: 73 00
tail.exe - Fix import
tail.exe
.004065F3: 4C 43
.004065F5: 67 6D
.004065F6: 69 6D
.004065F7: 63 61
.004065F8: 61 6E
.004065F9: 6C 64
.004065FA: 50 4C
.004065FB: 72 69
.004065FC: 6F 6E
.004065FD: 63 65
.004065FE: 65 41
.004065FF: 73 00
.0046B12B: 4C 43
.0046B12D: 67 6D
.0046B12E: 69 6D
.0046B12F: 63 61
.0046B130: 61 6E
.0046B131: 6C 64
.0046B132: 50 4C
.0046B133: 72 69
.0046B134: 6F 6E
.0046B135: 63 65
.0046B136: 65 41
.0046B137: 73 00
tail.exe - Skip #GP after Fix Import
tail.exe
.00406530: 55 C3
;----------------------------------------------

ManHunter
(31.01.2020 в 18:35):
Именно так.

Тащмайор
(31.01.2020 в 17:33):
Потому что ни один нормальный реверсер в трезвом уме не станет выкладывать взломы серьёзных вещей рядом со своими же фотками. Вы название блога читали? Оно является своего рода ответом тем, кто в своё время провёл разъяснительную работу с автором блога на предмет "неуставной деятельности". Поэтому он и создал "Просто блог", в котором он блестяще реализует свои таланты, но при этом не переступает черту.

Eka
(13.05.2019 в 13:52):
Пользуюсь SnakeTail, там есть опция "File Reopen Check Interval" которая "переоткрывает" заново лог, если была перезапущена прога, которая пишет в этот лог. В Tail4win такую опцию не нашел, соответственно надо каждый раз лог сначала закрыть, потом заново октрыть, тогда видны новые записи.

Sergey_K
(11.05.2019 в 17:19):
Спасибо! Ok!

ManHunter
(10.05.2019 в 17:47):
Алексей, прям с языка снял. Еще добавлю, что за нейтрализацию всякого серьезного другие грамотные ребята имеют дополнительные пару шекелей в карман. Зачем усложнять им жизнь?

xussr
(10.05.2019 в 17:44):
Ну прям совсем все пля асы ...давайте по делу писать

Алексей
(10.05.2019 в 17:35):
За что то серьёзное, могут и в гости придти, как бы сказать :) воспитательные работы проводить. И опять же: это еще в лучшем случаи. А худшем, конфискуют технику на проверку, а там пеняй на себя.
А за эту тему, да кому она нужна... В худшем случаи, что и может быть, так это фикс данного недочета в программе и всего лишь. Хотя авторы разные, кто то и за копейку удавится :D
А за эту тему, да кому она нужна... В худшем случаи, что и может быть, так это фикс данного недочета в программе и всего лишь. Хотя авторы разные, кто то и за копейку удавится :D

MaCTeP
(10.05.2019 в 12:36):
Автор что хочет то рисует в своем блоге.

ManHunter
(09.05.2019 в 18:26):
Потому что я так решил.

Евгений
(09.05.2019 в 18:25):
Не понимаю, почему вы, с вашей квалификацией, выкладываете такие простенькие и однообразные взломы? Вы вполне могли бы разбирать, хоть и не так часто, более изощренные виды защит, а то получается пальбы из пушки по воробьям...

Добавить комментарий
Заполните форму для добавления комментария

Глянул её, не понравилась.
Работает вяло. Оказывается, на дотнете.
Поэтому сразу под снос.
То блин вижуалбасики были популярны, теперь этот дотнет..