· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Исследование программы (написание кейгена)

<< . 1 . 2 . 3 . >>

Посл.отвђт Сообщен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

Может программу кто сможет посмотреть? Если что, то выковырянный сетапник лежит тут или тут (185 кб). Может профессионалы смогут помочь? Хотя бы показать, от чего следует отталкиваться.


Дата: Ноя 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 умеет рисовать
дерево вызова подпрограмм, и тебе придется начать
с нижних веточек(она его рисует вверх ногами).
Если дерево "глыбокое",
то я тебе не завидую :-)

<< . 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061