Исследование защиты программы 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
Программа успешно "зарегистрирована"
Вот и все, теперь цель достигнута. Спасибо разработчикам за полезную программу, а вам спасибо, что дочитали до конца.
Просмотров: 1883 | Комментариев: 13
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
user
(16.04.2020 в 09:03):
Глянул её, не понравилась.
Работает вяло. Оказывается, на дотнете.
Поэтому сразу под снос.
То блин вижуалбасики были популярны, теперь этот дотнет..
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):
Не понимаю, почему вы, с вашей квалификацией, выкладываете такие простенькие и однообразные взломы? Вы вполне могли бы разбирать, хоть и не так часто, более изощренные виды защит, а то получается пальбы из пушки по воробьям...
Добавить комментарий
Заполните форму для добавления комментария
Текущая версия 5.3 уже только для x64.