eXeL@B —› Основной форум —› Нужен совет по регистрации HTMLanalysator из Seamonitor |
Посл.ответ | Сообщение |
|
Создано: 21 февраля 2006 00:42 · Личное сообщение · #1 Программа запакована ASProtect 1.23 RC4, его я распоковал. Программа проверяет зарегистрирована она или нет по форме About, проверяет не красная ли надпись user (0FFh), и содержит ли она символы перевода строки и перевода каретки (0Ah, 0Dh). При загрузке формы пропатчил и загружаю имя юзера с этими символами. Ограничения программы только в том, что она не дает сохранить проект. Пишет что это демо версия. Строку я нашел, но проблема джамп идет только на эту ветку, без всяких вариантов. Вот кусок кода: .text:00425C4F Proj_not_saved: ; CODE XREF: sub_425B00+148j .text:00425C4F push ecx ; lpCaption .text:00425C50 push offset aNotPagesInProj ; "Not pages in project. Project is not sa"... .text:00425C55 mov eax, [ebp+var_70] .text:00425C58 call @Controls@TWinControl@GetHandle$qqrv ; Controls::TWinControl::GetHandle(void) .text:00425C5D push eax ; hWnd .text:00425C5E call MessageBoxA .text:00425C63 dec [ebp+var_50] .text:00425C66 lea eax, [ebp+var_10] .text:00425C69 mov edx, 2 .text:00425C6E call StrClr .text:00425C73 dec [ebp+var_50] .text:00425C76 lea eax, [ebp+var_NameSaveFile] .text:00425C79 mov edx, 2 .text:00425C7E call StrClr .text:00425C83 mov ecx, [ebp+var_6C] .text:00425C86 mov large fs:0, ecx .text:00425C8D jmp end .text:00425C92 ; ---------------------------------------------------------------------- ----- .text:00425C92 .text:00425C92 loc_425C92: ; CODE XREF: sub_425B00+11Cj .text:00425C92 mov eax, [ebp+var_70] .text:00425C95 mov edx, [eax+508h] ; in eax - ASCII "#none#" .text:00425C9B xor ecx, ecx .text:00425C9D mov eax, [ebp+var_70] .text:00425CA0 call sub_425990 .text:00425CA5 mov cl, 1 .text:00425CA7 mov edx, [ebp+var_NameSaveFile] .text:00425CAA mov eax, [ebp+var_70] .text:00425CAD call sub_425990 .text:00425CB2 jmp demo .text:00425CB2 ; ---------------------------------------------------------------------- ----- .text:00425CB7 db 60h ; ` .text:00425CB8 db 4Ah ; J .text:00425CB9 db 0 .text:00425CBA db 0D5h ; - .text:00425CBB db 2Fh ; / .text:00425CBC db 64h ; d .text:00425CBD db 0Ch .text:00425CBE db 0CBh ; T .text:00425CBF db 5Ch ; \ .text:00425CC0 db 0F4h ; ¯ .text:00425CC1 db 0D2h ; T .text:00425CC2 db 8Bh ; Ë .text:00425CC3 db 4 .text:00425CC4 db 0D7h ; + .text:00425CC5 db 6Bh ; k .text:00425CC6 db 34h ; 4 .text:00425CC7 db 3Dh ; = ... ... ... .text:00426080 db 0FFh .text:00426081 db 0EBh ; û .text:00426082 db 64h ; d .text:00426083 db 0DCh ; - .text:00426084 db 0EDh ; ý .text:00426085 db 4Ch ; L .text:00426086 db 0A8h .text:00426087 db 0C8h, 67h, 10h .text:0042608A ; ---------------------------------------------------------------------- ----- .text:0042608A .text:0042608A demo: ; CODE XREF: sub_425B00+1B2j .text:0042608A mov word ptr [ebp-5Ch], 0D4h .text:00426090 mov edx, offset aSorryThisFunct ; "Sorry, this function isn't available in"... .text:00426095 lea eax, [ebp-48h] .text:00426098 call Str_str_point_ .text:0042609D inc dword ptr [ebp-50h] .text:004260A0 mov eax, [eax] .text:004260A2 call @Dialogs@ShowMessage$qqrx17System@AnsiString ; Dialogs::ShowMessage(System::AnsiString) .text:004260A7 dec dword ptr [ebp-50h] .text:004260AA lea eax, [ebp-48h] .text:004260AD mov edx, 2 .text:004260B2 call StrClr .text:004260B7 dec dword ptr [ebp-50h] .text:004260BA lea eax, [ebp-4] .text:004260BD mov edx, 2 .text:004260C2 call StrClr .text:004260C7 mov ecx, [ebp-6Ch] .text:004260CA mov large fs:0, ecx .text:004260D1 .text:004260D1 end: ; CODE XREF: sub_425B00+109j .text:004260D1 ; sub_425B00+18Dj .text:004260D1 pop edi .text:004260D2 pop esi .text:004260D3 pop ebx .text:004260D4 mov esp, ebp .text:004260D6 pop ebp .text:004260D7 retn .text:004260D7 sub_425B00 endp В середине идет мусор. Ставил бряки на доступ к этому мусору - не помогло. WriteProcessMemory - не используется. Новый поток не создается. У меня такое ощущение, что это зашифрованный кусок кода. Т.к. функция открытия проекта примерно похожи по размеру. Вопрос: Как найти дешифратор функции? Или как найти ветку в коде отвечающую за сохранение проекта? |
|
Создано: 21 февраля 2006 01:42 · Личное сообщение · #2 Посмотри тут: http://www.exelab.ru/f/action=vthread&forum=1&topic=3723 Я задавал аналогичный вопрос. |
|
Создано: 21 февраля 2006 02:31 · Личное сообщение · #3 Да я думаю наврядли. Из того же пакета - keywordtool - Аналогичная проверка на цвет надписи юзера, дальше перевод строки, каретки, и слово Expert, и все. Правда semtempl.dll проверяет размер файла 5 раз по-моему, если больше одного и меньше 2 мегов, то все хорошо. Это правится легко Я не стал лишние секции убирать, чтобы размер подогнать. И думал что dll общая для всего пакета программ, нет жемткой привязки к размеру файла и все программы из пакета укладываются в него. Так что, казалось очевидным, что защита построена аналогично у всех программ. Даже аспр у них старенький. Думаю может дамп немного неправильно stripper снял. Не может быть защита у программ по разному пострена быть. Хотя кто знает |
|
Создано: 21 февраля 2006 03:03 · Личное сообщение · #4 |
|
Создано: 21 февраля 2006 12:29 · Личное сообщение · #5 найди аспр, желательно той же версии которой целевая прога зажата, сделай простой проект в который добавь маркеры шифрования, пакуй аспром, генери ключ и смотри что и как там работает ;) PS хотя безполезно, всё равно без ключа нерасшифровать эти куски. (если конечно шифрования аспровое, если самопальное то может и получится). |
|
Создано: 21 февраля 2006 12:39 · Личное сообщение · #6 |
|
Создано: 21 февраля 2006 13:12 · Личное сообщение · #7 |
|
Создано: 21 февраля 2006 13:40 · Личное сообщение · #8 |
|
Создано: 21 февраля 2006 13:55 · Личное сообщение · #9 |
|
Создано: 21 февраля 2006 15:17 · Личное сообщение · #10 |
|
Создано: 21 февраля 2006 17:22 · Личное сообщение · #11 Спасибо, но на первой ссылке только версия 1.23 RC4, по второй только 1.1 RC1 запустил посмотрел, нет там функции шифровки обычных процедур. Может я чего не догоняю? А если это не проделки аспра? Какими путями можно зашифровать часть кода? Другим потоком, исполнением в стеке кода, но ссылаться он должен на зашифрованный кусок. Если не правильный ключ, то неправильно расшифровывать. Но этот мусор не меняется. и функция расшифровки должна же быть в программе? |
|
Создано: 22 февраля 2006 09:33 · Личное сообщение · #12 |
eXeL@B —› Основной форум —› Нужен совет по регистрации HTMLanalysator из Seamonitor |