|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 8, 2004 20:05:54 · Поправил: LTrapper Searcher: Не, в том то и дело, что тут брутфорс не нужен, хочу кейген сделать. :( Некоторые алгоритмы оборачиваются с трудом, для них выгоднее прегенерить список ключей и забить в кейген. Если алгоритм можно восстановить без проблем - то ессно надо сделать как сказал volodya А вообще делать keygen'ы это уровень "продвинутый" в реверсинге. Если была незнакома инструкция sete для начала лучше сделать патч. |
|
|
Дата: Ноя 9, 2004 00:02:56 · Поправил: Searcher Уважаемый volodya! Я понимаю, что для профессионалов здесь работы на день, но я им пока не являюсь, поэтому стараюсь понять все как могу. LTrapper Патч сделать ничего не стоит, но дело не в этом, просто действительно очень нужен кейген. А пока имею следующее. Вот что я пока понял.
:00407FC4 E8C994FFFF call 00401492
:00407FC9 85C0 test eax, eax
:00407FCB 8D4C242C lea ecx, dword ptr [esp+2C]
:00407FCF C644242402 mov [esp+24], 02
:00407FD4 0F94C3 sete bl
;....................вырезано................
:00408009 84DB test bl, bl
:0040800B 7415 je 00408022
:0040800D 6AFF push FFFFFFFF
:0040800F 6A30 push 00000030
* Possible Reference to String Resource ID=10012: "Incorrect key."
|
:00408011 681C270000 push 0000271C
:00408016 E87E9E0400 call 00451E99
:0040801B 8BCE mov ecx, esi
:0040801D E8CA9F0400 call 00451FEC
Если ключ правильный, функция :00407FC4 call 00401492 устанавливает в EAX 1, :00407FD4 sete bl в bl заносит 0 (иначе EAX - 0,bl - 1). Смотрим действие функции call 00401492:
* Referenced by a CALL at Address:
|:00407FC4
|
:00401492 E9293E0000 jmp 004052C0
Переходим на 004052C0:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401492(U)
|
:004052C0 83EC10 sub esp, 00000010
:004052C3 56 push esi
:004052C4 8BF1 mov esi, ecx
:004052C6 8D4C2404 lea ecx, dword ptr [esp+04]
:004052CA E8A7BFFFFF call 00401276
:004052CF 8B442418 mov eax, dword ptr [esp+18]
:004052D3 83C60C add esi, 0000000C
:004052D6 8B08 mov ecx, dword ptr [eax]
:004052D8 51 push ecx
:004052D9 56 push esi
:004052DA 8D4C240C lea ecx, dword ptr [esp+0C]
:004052DE E86EC1FFFF call 00401451
:004052E3 6894024700 push 00470294
:004052E8 56 push esi
:004052E9 8D4C240C lea ecx, dword ptr [esp+0C]
:004052ED E8A6C0FFFF call 00401398
* Possible StringData Ref from Data Obj ->"Flashpoint"
|
:004052F2 682C324800 push 0048322C
:004052F7 6A05 push 00000005
:004052F9 8D4C240C lea ecx, dword ptr [esp+0C]
:004052FD E80CBEFFFF call 0040110E
:00405302 25FF000000 and eax, 000000FF
:00405307 5E pop esi
:00405308 83C410 add esp, 00000010
:0040530B C20400 ret 0004
Дошел до этого момента. Как я понял, тут идет проверка ключа, причем связанная с указанным стрингом. Возможно часть ключа генерируется в зависимости от первых четырех символов (кстати символами могут быть как цифры так и буквы), но это предположение. Если кто сможет подсказать куда смотреть дальше, буду благодарен. |
|
|
Дата: Ноя 9, 2004 00:11:32 Если кто сможет подсказать куда смотреть дальше, буду благодарен. ??? 8-() Разумеется, в call 00401276 call 00401451 call 00401398 call 0040110E куда же еще??? |
|
|
Дата: Ноя 9, 2004 01:13:07 · Поправил: Searcher Логично :) call 00401276: jump to | :00401A50 8BC1 mov eax, ecx :00401A52 33C9 xor ecx, ecx :00401A54 8BD0 mov edx, eax :00401A56 890A mov dword ptr [edx], ecx :00401A58 894A04 mov dword ptr [edx+04], ecx :00401A5B 894A08 mov dword ptr [edx+08], ecx :00401A5E 66894A0C mov word ptr [edx+0C], cx :00401A62 884A0E mov byte ptr [edx+0E], cl :00401A65 C3 ret call 00401451: jump to | :00401A80 8B442408 mov eax, dword ptr [esp+08] :00401A84 8B4C2404 mov ecx, dword ptr [esp+04] :00401A88 50 push eax :00401A89 51 push ecx :00401A8A E821000000 call 00401AB0 :00401A8F 83C408 add esp, 00000008 :00401A92 C20800 ret 0008 call 00401398: jump to | :00401BF0 83EC08 sub esp, 00000008 :00401BF3 53 push ebx :00401BF4 56 push esi :00401BF5 8B742418 mov esi, dword ptr [esp+18] :00401BF9 57 push edi :00401BFA 6A04 push 00000004 :00401BFC 56 push esi :00401BFD 8BD9 mov ebx, ecx :00401BFF E8AC000000 call 00401CB0 :00401C04 83C604 add esi, 00000004 :00401C07 6A0F push 0000000F :00401C09 56 push esi :00401C0A 89442420 mov dword ptr [esp+20], eax :00401C0E E89D000000 call 00401CB0 :00401C13 8944241C mov dword ptr [esp+1C], eax :00401C17 8B442428 mov eax, dword ptr [esp+28] :00401C1B 6A0F push 0000000F :00401C1D 50 push eax :00401C1E E88D000000 call 00401CB0 :00401C23 8B4C2424 mov ecx, dword ptr [esp+24] :00401C27 8BF0 mov esi, eax :00401C29 8B5104 mov edx, dword ptr [ecx+04] :00401C2C 52 push edx :00401C2D E80BF8FFFF call 0040143D :00401C32 8BF8 mov edi, eax :00401C34 8D442428 lea eax, dword ptr [esp+28] :00401C38 50 push eax :00401C39 56 push esi :00401C3A 57 push edi :00401C3B 897C2444 mov dword ptr [esp+44], edi :00401C3F E828F6FFFF call 0040126C :00401C44 6A0F push 0000000F :00401C46 8D4C2448 lea ecx, dword ptr [esp+48] :00401C4A 53 push ebx :00401C4B 51 push ecx :00401C4C E8D1F4FFFF call 00401122 :00401C51 56 push esi :00401C52 E814F7FFFF call 0040136B :00401C57 57 push edi :00401C58 E80EF7FFFF call 0040136B :00401C5D 8B54244C mov edx, dword ptr [esp+4C] :00401C61 52 push edx :00401C62 E804F7FFFF call 0040136B :00401C67 8B44244C mov eax, dword ptr [esp+4C] :00401C6B 83C440 add esp, 00000040 :00401C6E 50 push eax :00401C6F E8F7F6FFFF call 0040136B :00401C74 83C404 add esp, 00000004 :00401C77 5F pop edi :00401C78 5E pop esi :00401C79 5B pop ebx :00401C7A 83C408 add esp, 00000008 :00401C7D C20800 ret 0008 call 0040110E: jump to | :00401D70 56 push esi :00401D71 8B74240C mov esi, dword ptr [esp+0C] :00401D75 57 push edi :00401D76 8BD1 mov edx, ecx :00401D78 8BFE mov edi, esi :00401D7A 83C9FF or ecx, FFFFFFFF :00401D7D 33C0 xor eax, eax :00401D7F F2 repnz :00401D80 AE scasb :00401D81 8B44240C mov eax, dword ptr [esp+0C] :00401D85 8BFE mov edi, esi :00401D87 F7D1 not ecx :00401D89 49 dec ecx :00401D8A 8D3410 lea esi, dword ptr [eax+edx] :00401D8D 33D2 xor edx, edx :00401D8F F3 repz :00401D90 A6 cmpsb :00401D91 8BC2 mov eax, edx :00401D93 5F pop edi :00401D94 0F94C0 sete al :00401D97 5E pop esi :00401D98 C20800 ret 0008 Вот такая ситуевина:( |
|
|
Дата: Ноя 9, 2004 01:38:10 может быть все-таки пора ИДУ взять? :) и отладчик тоже не помешал бы, а то так глядишь до нового года будешь раскапывать по одному каллу. да и народ все равно никогда не догадается, что внутри оных ;) а разбирать простой текст, даже если ты выложишь весь код ф-ции (401492) вряд ли кому покажется интересным... |
|
|
Дата: Ноя 9, 2004 04:15:44 · Поправил: Searcher |
|
|
Дата: Ноя 9, 2004 06:38:15 Хотя бы показать, от чего следует отталкиваться. Тебе это уже раз 20 сказали. Просто ты в упор ничего не хочешь видеть. Я тебе на пальцах покажу. По пунктам, как для особо одаренных! 1) Взять иду. 2) Наложить сигнатуры для твоего языка 3) Обозвать все параметры 4) Перевести код в ЯВУ-вид - для этого последовательно переписывать процедуры, добиваясь при перекомпиляции идентичности с исходным ассемблерным кодом 5) Когда алгоритм восстановлен - реверсировать его. 6) Идти пить пиво |
|
|
Дата: Ноя 9, 2004 10:47:17 Searcher скачать твой файлик мне не удалось, в любом случае мне выдается только warning.php (даже после нажатия на warning.php?url=ofp-volgograd.best-host.ru/setup.rar&get=349) |
|
|
Дата: Ноя 9, 2004 20:16:31 · Поправил: Searcher Вот еще одна ссылка (исправлено) volodya К сожалению, с Идой работать не умею, использую СофтАйс, а то бы с радостью. :( |
|
|
Дата: Ноя 10, 2004 08:43:02 ндя, файл размером 0 байт скачал... вопщем наговорил уйму всего, кода немеряно привёл, асм не знает, архив нормально выложить не может,... |
|
|
Дата: Ноя 10, 2004 21:35:57 Последнюю ссылку поправил (вина была хостера, а не моя, что не скачивалось), теперь две ссылки работают. По прежнему просьба в силе, если кто может помогите хоть советом, что делать дальше (я многого как вы не знаю, но стараюсь все понять). |
|
|
Дата: Ноя 10, 2004 21:39:44 К сожалению, с Идой работать не умею но стараюсь все понять да? это ты так стараешься? |
|
|
Дата: Ноя 12, 2004 01:12:35 · Поправил: Searcher volodya Поставил Иду Про v4.5.0.762, дизассемблировал в ней сетапник, частично принцип работы Иды понял (что она интерактивнее представляет информацию огромный плюс), но пока слова 2) Наложить сигнатуры для твоего языка 3) Обозвать все параметры 4) Перевести код в ЯВУ-вид - для этого последовательно переписывать процедуры, добиваясь при перекомпиляции идентичности с исходным ассемблерным кодом для меня все еще звучат немного страшновато. :) Но все равно спасибо. Ищу материал по Иде, читаю Криса и пр. Работаю дальше. |
|
|
Дата: Ноя 12, 2004 05:56:46 2 и 3 придут после определенной работы. над 4 придется подундохаться, но дорогу осилит идущий :) |
|
|
Дата: Ноя 12, 2004 12:53:03 Searcher На самом деле можно и через SoftICE. Надо аккуратненько "прошагать" по тем программам, которые ты тут приводил, и увы по всем подпрограммам, которые они вызывают и понять, что они делают. Потом записать этот алгоритм на языке поближе к человеческому :-) ( Си ,например) и думать, как его обратить (реверсировать). А сигнатуры, если я правильно из теории понял это такие "волшебные цифири", которые заставляют IDA вместо push A push B call 41xxxxxxx рисовать FunADD (A,B) Но то, что 41ххххх - это ADD, ты должен сам сначала понять. Кстати, IDA умеет рисовать дерево вызова подпрограмм, и тебе придется начать с нижних веточек(она его рисует вверх ногами). Если дерево "глыбокое", то я тебе не завидую :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061 |