Исследование защиты программы CC Get MAC Address
Скриншот программы CC Get MAC Address
Программа CC Get MAC Address предназначена для сканирования сети с целью получения списка MAC-адресов, получения имени компьютера по IP-адресу, "пробуждения" по сети компьютеров с поддержкой опции "Wake On LAN". В общем небольшая полезная программа для системного администратора. Только почему-то за все это программа просит денег, и немало.
Качаем дистрибутив, устанавливаем, запускаем. В заголовке программы сразу бросается в глаза строка с сообщением об триальности и оставшемся количестве дней. Основной файл ничем не упакован, "нехорошая" строка находится легко.
"Нехорошая строка" найдена
Теперь в дизассемблере посмотрим код, который ссылается на нее, а также проверки и условия, которые приводят к срабатыванию этой ветки алгоритма:
Code (Assembler) : Убрать нумерацию
- ...
- .text:00401FD6 mov [esp+1928h+ReturnedString], cl
- .text:00401FDD mov ecx, 0FFh
- .text:00401FE2 lea edi, [esp+1928h+var_100B]
- .text:00401FE9 push offset FileName ; lpFileName
- .text:00401FEE rep stosd
- .text:00401FF0 lea edx, [esp+192Ch+ReturnedString]
- .text:00401FF7 push 400h ; nSize
- .text:00401FFC stosw
- ; Прочитать из ini-файла из секции "System" значение параметра "RegCode"
- .text:00401FFE push edx ; lpReturnedString
- .text:00401FFF push offset byte_438740 ; lpDefault
- .text:00402004 push offset aRegcode ; "RegCode"
- .text:00402009 push offset MultiByteStr ; "System"
- .text:0040200E stosb
- .text:0040200F call ebx ; GetPrivateProfileStringA
- .text:00402011 lea eax, [esp+1928h+ReturnedString]
- ; Указатель на полученную строку
- .text:00402018 push eax
- ; Вызвать функцию проверки регистрационного кода
- .text:00402019 call sub_404E00
- .text:0040201E add esp, 4
- .text:00402021 test eax, eax
- .text:00402023 pop ebx
- ; Если функция проверки вернула EAX=0, то серийник неправильный
- .text:00402024 jz short loc_402055
- ; Программа работает в зарегистрированном режиме
- .text:00402026 push 0 ; nCmdShow
- .text:00402028 push 409h ; nIDDlgItem
- .text:0040202D mov ecx, ebp
- .text:0040202F call sub_420AE4
- .text:00402034 mov ecx, eax
- .text:00402036 call sub_420CA4
- .text:0040203B push 0 ; nCmdShow
- .text:0040203D push 408h ; nIDDlgItem
- .text:00402042 mov ecx, ebp
- .text:00402044 call sub_420AE4
- .text:00402049 mov ecx, eax
- .text:0040204B call sub_420CA4
- .text:00402050 jmp loc_40213F
- .text:00402055 ; ---------------------------------------------------
- .text:00402055 loc_402055:
- ; Программа работает в триальном режиме
- .text:00402055 mov cl, byte_438740
- .text:0040205B xor eax, eax
- .text:0040205D mov [esp+1924h+String], cl
- .text:00402064 mov ecx, 0FFh
- .text:00402069 lea edi, [esp+1924h+var_C0B]
- .text:00402070 rep stosd
- .text:00402072 stosw
- .text:00402074 stosb
- .text:00402075 call sub_401A60
- .text:0040207A push eax
- .text:0040207B lea edx, [esp+1928h+String]
- .text:00402082 push offset aCcGetMacAddr_1
- ; "CC Get MAC Address(unregistered version"...
- .text:00402087 push edx ; Dest
- .text:00402088 call _sprintf
- ...
Code (Assembler) : Убрать нумерацию
- .text:00404E00 sub_404E00 proc near
- .text:00404E00 arg_0 = dword ptr 4
- ; EAX -> указатель на строку серийного номера
- .text:00404E00 mov eax, [esp+arg_0]
- ; ECX = первый символ серийника
- .text:00404E04 movsx ecx, byte ptr [eax]
- ; EDX = пятый символ серийника
- .text:00404E07 movsx edx, byte ptr [eax+4]
- .text:00404E0B inc ecx
- ; Проверка EDX = (ECX + 1)
- .text:00404E0C cmp ecx, edx
- ; Не равны - номер неправильный
- .text:00404E0E jnz short loc_404E43
- ; ECX = второй символ серийника
- .text:00404E10 movsx ecx, byte ptr [eax+1]
- ; EDX = шестой символ серийника
- .text:00404E14 movsx edx, byte ptr [eax+5]
- .text:00404E18 add ecx, 9
- ; Проверка EDX = (ECX + 9)
- .text:00404E1B cmp ecx, edx
- ; Не равны - номер неправильный
- .text:00404E1D jnz short loc_404E43
- ; ECX = третий символ серийника
- .text:00404E1F movsx ecx, byte ptr [eax+2]
- ; EDX = седьмой символ серийника
- .text:00404E23 movsx edx, byte ptr [eax+6]
- .text:00404E27 add ecx, 7
- ; Проверка EDX = (ECX + 7)
- .text:00404E2A cmp ecx, edx
- ; Не равны - номер неправильный
- .text:00404E2C jnz short loc_404E43
- ; ECX = четвертый символ серийника
- .text:00404E2E movsx ecx, byte ptr [eax+3]
- ; EDX = восьмой символ серийника
- .text:00404E32 movsx edx, byte ptr [eax+7]
- .text:00404E36 add ecx, 7
- ; Проверка EDX = (ECX + 7)
- .text:00404E39 cmp ecx, edx
- ; Не равны - номер неправильный
- .text:00404E3B jnz short loc_404E43
- ; Серийный номер правильный, EAX=1
- .text:00404E3D mov eax, 1
- .text:00404E42 retn
- .text:00404E43 ; -------------------------------------------------
- .text:00404E43 loc_404E43:
- ; Серийный номер неправильный, EAX=0
- .text:00404E43 xor eax, eax
- .text:00404E45 retn
- .text:00404E45 sub_404E00 endp
Программа успешно зарегистрирована
Положительным моментом является то, что серийник записывается в файл конфигурации, а не в реестр, так что после регистрации CC Get MAC Address становится полностью портативной и может работать, например, с флешки.
Просмотров: 7158 | Комментариев: 11
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
INC.
(25.12.2009 в 01:21):
ManHunter ок более не буду
ManHunter
(24.12.2009 в 01:08):
Для крякмисов есть целые сайты, не вижу смысла что-то здесь дублировать. А с объемами современного говнософтопрома крякерам работы и так надолго хватит :) Дельфи будет в следующей статье, как раз потихоньку готовлю материал.
AyTkACT
(24.12.2009 в 01:00):
Как насчёт попугать народ реверсингом дельфийских приложений?
Чтоб тонны листинга поворочили, чтоб IDA подумала хотя б пару минут?
И как вариант можно пропускать части выкладок чтоб люди действительно покопошили код и пораскинули мозгами как и что взялось? Так сказать полурешённые крекми...
Чтоб тонны листинга поворочили, чтоб IDA подумала хотя б пару минут?
И как вариант можно пропускать части выкладок чтоб люди действительно покопошили код и пораскинули мозгами как и что взялось? Так сказать полурешённые крекми...
ManHunter
(24.12.2009 в 00:51):
Ну дык, зря я что ли до этого варезный портал в одиночку держал? :)) Пусть народ учится на простеньком, до сложного сами дойдут.
AyTkACT
(24.12.2009 в 00:50):
С офсайта качается 2.3
Немного изменён код.
Процедура проверки серийника не именена.
// Manhunter, где ты хоть находишь такие деЦкие (ничем не накрытые и с деЦким алгоритмом проверки) программы???
Тут за что ни возьмись то экзекриптор, то темида, то вмпротект... :(
Немного изменён код.
Процедура проверки серийника не именена.
// Manhunter, где ты хоть находишь такие деЦкие (ничем не накрытые и с деЦким алгоритмом проверки) программы???
Тут за что ни возьмись то экзекриптор, то темида, то вмпротект... :(
=TimmeS=
(23.12.2009 в 21:14):
Ладно хоть авторство постеснялся не убирать под статьей, но всё равно гаденько так выходит
ManHunter
(23.12.2009 в 15:42):
Посмотрим, может словами дойдет.
DiFor
(23.12.2009 в 15:40):
забивай полностью всю картнику прозрачными ватермарками даби люди не пакостничали
SAY
(23.12.2009 в 08:31):
ManHunter, как всегда на высоте! Спс.
ManHunter
(23.12.2009 в 07:36):
INC., ты когда мои статьи у себя постишь, то скриншоты не обрезай. Не нравится мой штамп - иди ломай сам. А то специально для тебя буду штамп в центр ставить, запаришься вырезать.
INC.
(23.12.2009 в 02:22):
Thanks
Добавить комментарий
Заполните форму для добавления комментария