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

Скриншот программы Spread32
Spread32 - крохотный редактор электронных таблиц Excel. Несмотря на более чем скромный размер, он поддерживает около 300 функций, форматирование ячеек, позволяет вставлять диаграммы и графики, векторные и растровые рисунки, формулы. При этом не мусорит в системе и абсолютно портативный. Весь кайф от программы портит надоедливое окно с напоминанием, появляющееся при запуске программы и при файловых операциях. Оно отсутствует в платной версии программы, но ее можно получить, естественно, только после оплаты. Никаких других ограничений в демонстрационной версии нет. Судя по галерее на сайте, автор часто бывает в отъезде, так что лишний раз беспокоить его платежами не будем.
С офсайта можно скачать несколько вариантов программы, они отличаются только языками интерфейса и платформами. Я буду исследовать, естественно, русскоязычный вариант под Windows. Распаковываем архив, запускаем. Вылазит наг-окно, о котором я говорил:

Наг-окно
Поищем строчку из окна в файле. Он, кстати, ничем не упакован. Для ускорения процесса сразу же отправим файл на дизассемблирование.

Нехорошая строка найдена
Строчка нашлась, она хранится в юникоде. Переходим к листингу дизассемблера. На строку сообщения ссылается один единственный указатель:
Code (Assembler) : Убрать нумерацию
- .rdata:0053ED38 off_53ED38 dd offset aThisCopyOfSpre
- ; DATA XREF: DialogFunc+4C
- .rdata:0053ED38 ; "This copy of Spread32 is Shareware.\nFor"...
Code (Assembler) : Убрать нумерацию
- ; Выбор действия: инициализация окна, создание, закрытие
- .text:00445380 mov eax, [esp+arg_4]
- .text:00445384 sub esp, 34h
- .text:00445387 sub eax, 110h
- .text:0044538C jz short loc_4453BA
- .text:0044538E dec eax
- .text:0044538F jnz short loc_44539A
- .text:00445391 cmp [esp+34h+arg_8], 50Ch
- .text:00445398 jz short loc_4453A2
- .text:0044539A loc_44539A:
- .text:0044539A xor eax, eax
- .text:0044539C add esp, 34h
- .text:0044539F retn 10h
- .text:004453A2 ; -----------------------------------------
- .text:004453A2 loc_4453A2:
- .text:004453A2 mov eax, [esp+34h+hDlg]
- .text:004453A6 push 0 ; nResult
- .text:004453A8 push eax ; hDlg
- .text:004453A9 call ds:EndDialog
- .text:004453AF mov eax, 1
- .text:004453B4 add esp, 34h
- .text:004453B7 retn 10h
- .text:004453BA ; -----------------------------------------
- .text:004453BA loc_4453BA:
- .text:004453BA mov ecx, ds:lpCaption
- .text:004453C0 push esi
- .text:004453C1 mov esi, [esp+38h+hDlg]
- .text:004453C5 push ecx ; lpWideCharStr
- .text:004453C6 push esi ; hWnd
- .text:004453C7 call sub_41A2E0
- ; Загрузить строку и записать ее в наг-окно
- .text:004453CC mov edx, ds:off_53ED38
- .text:004453D2 push edx ; lpWideCharStr
- .text:004453D3 push 50Bh ; nIDDlgItem
- .text:004453D8 push esi ; hDlg
- .text:004453D9 call sub_445420
- .text:004453DE add esp, 14h
- .text:004453E1 call near ptr off_52B600+0D3h
- .text:004453E6 push eax
- .text:004453E7 mov eax, ds:off_53E604
- .text:004453EC push eax
- .text:004453ED call near ptr off_52B600+0D3h
- .text:004453F2 push eax ; Format
- .text:004453F3 lea ecx, [esp+44h+WideCharStr]
- .text:004453F7 push offset a8xS8x ; "%8X\n%s\n%8X"
- .text:004453FC push ecx ; String
- .text:004453FD call _swprintf
- .text:00445402 lea edx, [esp+4Ch+WideCharStr]
- .text:00445406 push edx ; lpWideCharStr
- .text:00445407 push 50Ch ; nIDDlgItem
- .text:0044540C push esi ; hDlg
- .text:0044540D call sub_445420
- .text:00445412 add esp, 20h
- .text:00445415 xor eax, eax
- .text:00445417 pop esi
- .text:00445418 add esp, 34h
- .text:0044541B retn 10h
Просмотров: 6535 | Комментариев: 22
Метки: исследование защиты

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
xussr
(27.01.2018 в 22:36):
IDA в помощ все сраслось спасибо за пример!

xussr
(04.12.2017 в 07:50):
Как найти указатели?

NPV
(14.07.2017 в 16:48):
ManHunter, разобрался как искать в Unicode и выделять текст, но не могу понять как искать указатели сейчас делаю F8-F6(встаю на строку .rdata)-F6, но картинка совсем не та. Всё ли так делаю? или на этом этапе уже не в hiew работаем?

ManHunter
(13.07.2017 в 20:57):
Все версии ломаются одинаково

NPV
(13.07.2017 в 20:17):
ManHunter, пытаюсь то же самое проделать с новой версией - не могу найти текста в hex редакторе, анализаторы говорят "не залочено", я что-то не так делаю или автор программы доработал?

Андрей
(27.01.2016 в 11:26):
В мире пятигагибайтных мсоффисов и гагабайтных либреоффисов иногда нужно просто взять и ПОСЧИТАТЬ.
Из живых аналогов только GS-Calc, но она триальная, 30-ти дневная.
Из живых аналогов только GS-Calc, но она триальная, 30-ти дневная.

ManHunter
(10.08.2011 в 10:44):
А я бы тоже не отказался от аналога Word такого же размера :) Но пока его нет.

Isaev
(09.08.2011 в 00:52):
Классная программка!
Ещё бы от OpenOfice файлы понимала цены бы ей вообще не было
Ещё бы от OpenOfice файлы понимала цены бы ей вообще не было

ManHunter
(07.08.2011 в 10:28):
Ну кто ж так JMP'ы NOP'ит? Надо ж все байты команды забивать, а не только первый. Посмотри в режиме дизассемблера сколько они занимают байт.

Guest
(07.08.2011 в 08:37):
http://img33.imageshack.us/img...10807001.jpg
после сохранения вылетает. что я делаю не так?
после сохранения вылетает. что я делаю не так?

dgkf
(05.08.2011 в 20:07):
лучше SoftMaker Office 2010: занимает 9Мб (без спелчекера) и поддерживает работу с docx, xlsx, то почти полноценный Office (кроме VBS)

ManHunter
(05.08.2011 в 16:08):
Скорее всего это была какая-то утекшая ретайловая версия или уже подлеченная демка.

Matsist
(05.08.2011 в 16:07):
Я видел эту программку в сборке FloppyOffice, сборка портативных офисных крохотуль) Spread32 очень понравилась! Правда ни на какие окна я не натыкался, видимо была ранняя чисто бесплатная версия.

landf
(04.08.2011 в 02:32):
Пасиб, посмотрю.

ManHunter
(03.08.2011 в 21:46):
AbiWord, Atlantis Word Processor, нет?

landf
(03.08.2011 в 21:20):
А такой же невесомости, совместимости и мобильности "Word" никому не попадался?

ManHunter
(02.08.2011 в 22:35):
Какой-то FileInsight неповоротливый, имхо. HIEW как-то привычнее.

Zhelezyaka
(02.08.2011 в 22:29):
Спасибо, маэстро, всё получилось..)))
кстати, чтобы "отутюжить", использовал FileInsight (http://download.nai.com/products/mcafee-avert/fileinsight.zip)
мне понравилось)
кстати, чтобы "отутюжить", использовал FileInsight (http://download.nai.com/products/mcafee-avert/fileinsight.zip)
мне понравилось)

Zhelezyaka
(02.08.2011 в 22:15):
сегодня ещё одно открытие, что NOP: 0x90, блин, а я привык что 0х00, ну, у микроконтроллеров..

Zhelezyaka
(02.08.2011 в 11:40):
опа, теперь и я люблю таблицы, спасибо)

ManHunter
(02.08.2011 в 10:59):
74h -> EBh

Beginner
(02.08.2011 в 10:57):
а как jz заменить на безусловный переход?

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