Исследование защиты программы TunesKit Screen Recorder
Скриншот программы TunesKit Screen Recorder
Программа TunesKit Screen Recorder предназначена для записи видео и аудио с экрана компьютера. Вы можете легко создавать презентации и видеоинструкции, а потом сохранять результат в видеофайлы различного формата. Работает неплохо, со своими задачами справляется, только тридцатка баксов за персональную лицензию портит всю картину. Есть предложение исправить это недоразумение.
Забираем с офсайта жирненький дистрибутив, устанавливаем, смотрим. Программа написана на Qt, главный файл ничем не запакован, отправляем его в дизассемблер. Параллельно запускаем программу и выясняем, какие ограничения у нее есть и как они проявляются. При нажатии на кнопку записи появляется сообщение, что на готовое видео будет нанесен маркер. От этого сообщения и будем отталкиваться.
Сообщение незарегистрированной версии
По тексту строки находим код, где это сообщение выводится. Функция достаточно объемная, для наглядности я ее сокращу, так как больше ничего интересного в ней нет.
Code (Assembler) : Убрать нумерацию
- .text:004AC7D0 push 0FFFFFFFFh
- .text:004AC7D2 push offset sub_4F80FD
- .text:004AC7D7 mov eax, large fs:0
- .text:004AC7DD push eax
- .text:004AC7DE sub esp, 10h
- ...
- ...
- ...
- .text:004AC8AB push 0FFFFFFFFh
- .text:004AC8AD push 0
- .text:004AC8AF lea eax, [esp+38h+var_1C]
- .text:004AC8B3 push offset aTheTrialVersio
- ; "The trial version adds watermark to rec"...
- .text:004AC8B8 push eax
- .text:004AC8B9 call ds:?tr@QObject@@SA?AVQString@@PBD0H@Z
- .text:004AC8BF add esp, 10h
- .text:004AC8C2 mov ecx, [esi+38h]
- .text:004AC8C5 push eax
Code (Assembler) : Убрать нумерацию
- .text:004ACA90 sub_4ACA90 proc near
- .text:004ACA90 push 0FFFFFFFFh
- .text:004ACA92 push offset sub_4F3368
- .text:004ACA97 mov eax, large fs:0
- .text:004ACA9D push eax
- .text:004ACA9E push ecx
- .text:004ACA9F push esi
- .text:004ACAA0 mov eax, ___security_cookie
- .text:004ACAA5 xor eax, esp
- .text:004ACAA7 push eax
- .text:004ACAA8 lea eax, [esp+18h+var_C]
- .text:004ACAAC mov large fs:0, eax
- .text:004ACAB2 mov esi, ecx
- .text:004ACAB4 mov [esp+18h+var_10], esi
- .text:004ACAB8 mov eax, [esp+18h+arg_0]
- .text:004ACABC push eax
- .text:004ACABD call sub_4631E0
- .text:004ACAC2 push esi
- .text:004ACAC3 lea ecx, [esi+30h]
- .text:004ACAC6 mov [esp+1Ch+var_4], 0
- .text:004ACACE mov dword ptr [esi], offset off_512CD4
- .text:004ACAD4 mov dword ptr [esi+8], offset off_512CB0
- .text:004ACADB mov dword ptr [esi+18h], offset off_512C90
- .text:004ACAE2 call sub_4AC2F0
- .text:004ACAE7 mov ecx, esi
- .text:004ACAE9 call sub_4AC210
- .text:004ACAEE mov ecx, esi
- .text:004ACAF0 call sub_4AC7D0
- .text:004ACAF5 mov eax, esi
- .text:004ACAF7 mov ecx, [esp+18h+var_C]
- .text:004ACAFB mov large fs:0, ecx
- .text:004ACB02 pop ecx
- .text:004ACB03 pop esi
- .text:004ACB04 add esp, 10h
- .text:004ACB07 retn 4
- .text:004ACB07 sub_4ACA90 endp
Code (Assembler) : Убрать нумерацию
- ; Вызвать функцию проверки
- .text:0045400E call sub_455380
- ; По ее результатам (не)выполнить условный переход
- .text:00454013 test al, al
- .text:00454015 jnz short loc_454095
- .text:00454017 push esi
- .text:00454018 lea ecx, [esp+1B4h+var_18C]
- ; Вывести сообщение
- .text:0045401C call sub_4ACA90
- .text:00454021 mov ecx, esi
- .text:00454023 mov [esp+1B0h+var_4], 1
- .text:0045402E call ds:?winId@QWidget@@QBEIXZ
- .text:00454034 push 0FFFFFFECh ; nIndex
- .text:00454036 push eax ; hWnd
- .text:00454037 call ds:GetWindowLongW
- .text:0045403D shr eax, 3
Code (Assembler) : Убрать нумерацию
- .text:00455380 sub_455380 proc near
- .text:00455380 jmp sub_4031E0
- .text:00455380 sub_455380 endp
Просмотров: 1884 | Комментариев: 7
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(09.01.2023 в 01:38):
Примерно вечер под кальянчик. Дольше статьи про это все писать.
Mao Czedun
(09.01.2023 в 01:28):
Привет!
Сколько, примерно, времени вам потребовалось, чтобы вылечить эту программу и ей подобные?
Сколько, примерно, времени вам потребовалось, чтобы вылечить эту программу и ей подобные?
ManHunter
(24.10.2019 в 21:32):
pawel97, никак. Поэтому я пользуюсь связкой HIEW + IDA, в одной ищу строки, а в другой уже смотрю всю движуху. Хоть мне уже неоднократно высказывали, что HIEW устарела, но пока IDA не научится нормально пережевывать юникод, я буду работать именно с HIEW. То есть всегда :)
pawel97
(24.10.2019 в 21:02):
Вопрос не совсем по исследованию этой проги, но близко...
У Ida из версии в версию кочует одна болезнь.
Допустим юникодная строка "Register": 5200650067006900730074006500720000
Как научить ida воспринимать это именно как юникодную строку, а не ссылку на адрес 650052? Причём автоматически, не помечать же руками все много тыщ строк как строки...
Не приходило разрабам в голову, что ссылка из сегмента данных на середину процедуры - это странно? Может плагин/скрипт/опция есть? Сам не нашёл...
У Ida из версии в версию кочует одна болезнь.
Допустим юникодная строка "Register": 5200650067006900730074006500720000
Как научить ida воспринимать это именно как юникодную строку, а не ссылку на адрес 650052? Причём автоматически, не помечать же руками все много тыщ строк как строки...
Не приходило разрабам в голову, что ссылка из сегмента данных на середину процедуры - это странно? Может плагин/скрипт/опция есть? Сам не нашёл...
ManHunter
(22.10.2019 в 10:47):
Это дело на любителя. Мне, например, очень нравится HyperCam, пользуюсь ей уже фиг знает сколько лет.
Василий
(21.10.2019 в 18:55):
После OBS Studio подобные программы больше не интересуют, только если для тренировки)))
Добавить комментарий
Заполните форму для добавления комментария
У этого же разработчика есть ещё одна достойная программа TunesKit Audio Capture, предназначена для потоковой записи аудио из браузера. Полезная штука, когда файл загружается порциями в неизвестном формате, а не целым mp3-шником и через браузер его не выцепить. Можно и из локального плеера записывать тоже, хотя кому это надо, раз файл уже есть на диске.
Всю малину портит триальное ограничение на 1 минуту записи. Благо все вышеупомянутые программы легко и успешно лечатся аналогичным образом.