Сейчас на форуме: Slinger (+6 невидимых) |
eXeL@B —› Основной форум —› Помогите разобратся с алгоритмом. |
Посл.ответ | Сообщение |
|
Создано: 23 января 2007 02:46 · Личное сообщение · #1 Хочу закейгенить, но не пойму как тут что реализовано. 0051192C 55 push ebp 0051192D 8BEC mov ebp, esp 0051192F 33C9 xor ecx, ecx 00511931 51 push ecx 00511932 51 push ecx 00511933 51 push ecx 00511934 51 push ecx 00511935 51 push ecx 00511936 51 push ecx 00511937 51 push ecx 00511938 51 push ecx 00511939 53 push ebx 0051193A 56 push esi 0051193B 57 push edi 0051193C 8BF0 mov esi, eax 0051193E 33C0 xor eax, eax 00511940 55 push ebp * Possible String Reference to: 'é¯'ïÿëÑ_^[‹å]Ã' | 00511941 68941A5100 push $00511A94 ***** TRY | 00511946 64FF30 push dword ptr fs:[eax] 00511949 648920 mov fs:[eax], esp 0051194C 33DB xor ebx, ebx 0051194E 8D55EC lea edx, [ebp-$14] * Reference to control name_txt : TEdit | 00511951 8B860C030000 mov eax, [esi+$030C] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 00511957 E85C6CF5FF call 004685B8 0051195C 8B45EC mov eax, [ebp-$14] 0051195F 8D55F4 lea edx, [ebp-$0C] * Reference to: SysUtils.Trim(AnsiString):AnsiString;overload; | 00511962 E8B57CEFFF call 0040961C 00511967 8D55E8 lea edx, [ebp-$18] * Reference to control pass_txt : TEdit | 0051196A 8B8610030000 mov eax, [esi+$0310] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 00511970 E8436CF5FF call 004685B8 00511975 8B45E8 mov eax, [ebp-$18] 00511978 8D55F0 lea edx, [ebp-$10] * Reference to: SysUtils.Trim(AnsiString):AnsiString;overload; | 0051197B E89C7CEFFF call 0040961C * Reference to control lic_cmb : TComboBox | 00511980 8B861C030000 mov eax, [esi+$031C] 00511986 8B10 mov edx, [eax] 00511988 FF92CC000000 call dword ptr [edx+$00CC] 0051198E 8BF8 mov edi, eax 00511990 8BD7 mov edx, edi 00511992 8B8628030000 mov eax, [esi+$0328] * Reference to: Classes.TList.Get(TList;Integer):Pointer; | 00511998 E8EBB9F0FF call 0041D388 0051199D 8B5004 mov edx, [eax+$04] 005119A0 8D45FC lea eax, [ebp-$04] * Reference to: System.@LStrLAsg(void;void;void;void); | 005119A3 E81C30EFFF call 004049C4 005119A8 8BD7 mov edx, edi 005119AA 8B8628030000 mov eax, [esi+$0328] * Reference to: Classes.TList.Get(TList;Integer):Pointer; | 005119B0 E8D3B9F0FF call 0041D388 005119B5 8B5008 mov edx, [eax+$08] 005119B8 8D45F8 lea eax, [ebp-$08] * Reference to: System.@LStrLAsg(void;void;void;void); | 005119BB E80430EFFF call 004049C4 005119C0 80BE2D03000000 cmp byte ptr [esi+$032D], $00 005119C7 741B jz 005119E4 005119C9 8B45F4 mov eax, [ebp-$0C] 005119CC 50 push eax 005119CD 8B45F0 mov eax, [ebp-$10] 005119D0 50 push eax * Possible String Reference to: 'KYLE' | 005119D1 B9AC1A5100 mov ecx, $00511AAC * Possible String Reference to: 'KATARN' | 005119D6 BABC1A5100 mov edx, $00511ABC 005119DB 8BC6 mov eax, esi | 005119DD E842010000 call 00511B24 005119E2 8BD8 mov ebx, eax 005119E4 84DB test bl, bl 005119E6 7517 jnz 005119FF 005119E8 8B45F4 mov eax, [ebp-$0C] 005119EB 50 push eax 005119EC 8B45F0 mov eax, [ebp-$10] 005119EF 50 push eax 005119F0 8B4DF8 mov ecx, [ebp-$08] 005119F3 8B55FC mov edx, [ebp-$04] 005119F6 8BC6 mov eax, esi | 005119F8 E827010000 call 00511B24 005119FD 8BD8 mov ebx, eax 005119FF 84DB test bl, bl 00511A01 7434 jz 00511A37 00511A03 6A04 push $04 00511A05 8D4DE4 lea ecx, [ebp-$1C] * Possible String Reference to: 'Valid Licence. Thank you for regist | ering our product.' | 00511A08 BACC1A5100 mov edx, $00511ACC * Reference to control TS_reg : TTextStorage | 00511A0D 8B8614030000 mov eax, [esi+$0314] * Reference to : TTextStorage._PROC_004C0594() | 00511A13 E87CEBFAFF call 004C0594 00511A18 8B45E4 mov eax, [ebp-$1C] 00511A1B 50 push eax 00511A1C 8BC6 mov eax, esi * Reference to: Controls.TWinControl.GetHandle(TWinControl):HWND; | 00511A1E E891D4F5FF call 0046EEB4 00511A23 33C9 xor ecx, ecx 00511A25 5A pop edx * Reference to : TeditDlg._PROC_004C6980() | 00511A26 E8554FFBFF call 004C6980 00511A2B C7864C02000001000000 mov dword ptr [esi+$024C], $00000001 00511A35 EB28 jmp 00511A5F 00511A37 6A02 push $02 00511A39 8D4DE0 lea ecx, [ebp-$20] * Possible String Reference to: 'Invalid Licence Data.' | 00511A3C BA0C1B5100 mov edx, $00511B0C * Reference to control TS_reg : TTextStorage | 00511A41 8B8614030000 mov eax, [esi+$0314] * Reference to : TTextStorage._PROC_004C0594() | 00511A47 E848EBFAFF call 004C0594 00511A4C 8B45E0 mov eax, [ebp-$20] 00511A4F 50 push eax 00511A50 8BC6 mov eax, esi * Reference to: Controls.TWinControl.GetHandle(TWinControl):HWND; | 00511A52 E85DD4F5FF call 0046EEB4 00511A57 33C9 xor ecx, ecx 00511A59 5A pop edx * Reference to : TeditDlg._PROC_004C6980() | 00511A5A E8214FFBFF call 004C6980 00511A5F 33C0 xor eax, eax 00511A61 5A pop edx 00511A62 59 pop ecx 00511A63 59 pop ecx 00511A64 648910 mov fs:[eax], edx ****** FINALLY | * Possible String Reference to: '_^[‹å]Ã' | 00511A67 689B1A5100 push $00511A9B 00511A6C 8D45E0 lea eax, [ebp-$20] 00511A6F BA02000000 mov edx, $00000002 * Reference to: System.@LStrArrayClr(void;void;Integer); | 00511A74 E8D72EEFFF call 00404950 00511A79 8D45E8 lea eax, [ebp-$18] 00511A7C BA02000000 mov edx, $00000002 * Reference to: System.@LStrArrayClr(void;void;Integer); | 00511A81 E8CA2EEFFF call 00404950 00511A86 8D45F0 lea eax, [ebp-$10] 00511A89 BA04000000 mov edx, $00000004 * Reference to: System.@LStrArrayClr(void;void;Integer); | 00511A8E E8BD2EEFFF call 00404950 00511A93 C3 ret * Reference to: System.@HandleFinally; | 00511A94 E9AF27EFFF jmp 00404248 00511A99 EBD1 jmp 00511A6C ****** END | 00511A9B 5F pop edi 00511A9C 5E pop esi 00511A9D 5B pop ebx 00511A9E 8BE5 mov esp, ebp 00511AA0 5D pop ebp 00511AA1 C3 ret 00511B24 55 push ebp 00511B25 8BEC mov ebp, esp 00511B27 6A00 push $00 00511B29 6A00 push $00 00511B2B 6A00 push $00 00511B2D 6A00 push $00 00511B2F 6A00 push $00 00511B31 53 push ebx 00511B32 56 push esi 00511B33 57 push edi 00511B34 894DF8 mov [ebp-$08], ecx 00511B37 8955FC mov [ebp-$04], edx 00511B3A 8BF0 mov esi, eax 00511B3C 8B45FC mov eax, [ebp-$04] * Reference to: System.@LStrAddRef(void;void):Pointer; | 00511B3F E89832EFFF call 00404DDC 00511B44 8B45F8 mov eax, [ebp-$08] * Reference to: System.@LStrAddRef(void;void):Pointer; | 00511B47 E89032EFFF call 00404DDC 00511B4C 8B450C mov eax, [ebp+$0C] * Reference to: System.@LStrAddRef(void;void):Pointer; | 00511B4F E88832EFFF call 00404DDC 00511B54 8B4508 mov eax, [ebp+$08] * Reference to: System.@LStrAddRef(void;void):Pointer; | 00511B57 E88032EFFF call 00404DDC 00511B5C 33C0 xor |
|
Создано: 23 января 2007 02:48 · Личное сообщение · #2 |
|
Создано: 23 января 2007 02:51 · Поправил: rat · Личное сообщение · #3 |
|
Создано: 23 января 2007 03:27 · Личное сообщение · #4 |
|
Создано: 23 января 2007 11:43 · Личное сообщение · #5 |
|
Создано: 23 января 2007 14:19 · Личное сообщение · #6 rat пишет: Никак не пойму. На что обычно указывает ebp в delphi программах при входе в функцию? При входе EBP имеет внешнее значение, которое сразу же сохраняется в стек: 0051192C 55 push ebp И затем указатель вершины стека помещается в EBP: 0051192D 8BEC mov ebp, esp Так оформляется вступление в функцию (если не была включена никакая дополнительная оптимизация кода). Соответственно теперь любое обращение к [EBP+X] можно рассматривать как обращение к [ESP+X] в состоянии ESP до использования самой функцией. Дальше определяются локальные переменные. Если в исходнике локали не были инициализированы сразу, то просто выделяется стековый кадр: add ESP,-X Где X/4 = количество всех локальных переменных. Если локали инициализированы на первом этапе, то мы видим что-то вроде этого: 0051192F 33C9 xor ecx, ecx 00511931 51 push ecx 00511932 51 push ecx 00511933 51 push ecx 00511934 51 push ecx 00511935 51 push ecx 00511936 51 push ecx 00511937 51 push ecx 00511938 51 push ecx 00511939 53 push ebx 0051193A 56 push esi 0051193B 57 push edi А затем начинается обращение к этим переменным в диапазоне от [EBP-4] и до [EBP-X]. Примерно так. Если напутал, поправьте меня, пожалуйста, я ведь Delphi в глаза не видел, только в дизасме =). ----- Всем привет, я вернулся |
|
Создано: 23 января 2007 21:41 · Личное сообщение · #7 |
|
Создано: 23 января 2007 22:51 · Личное сообщение · #8 Нет не wintools. Это [link=ftp://ftp2.kcsoftwares.com/kcsoftwa/files/audiograil.exe]AudioGr ail (K-MP3)[/link]. Я так понимаю, алгоритм там у всех прог одинаковый. Я так думаю, вы поняли, что я привел здесь то, что мне выдал DeDe. И, убей, никак не пойму что делает функция: System.@LStrLAsg(void;void;void;void); ? Длину проверяет? И как результат ее работы связан с: 005119C0 80BE2D03000000 cmp byte ptr [esi+$032D], $00 005119C7 741B jz 005119E4 ? Вот весь этот кусок кода: * Reference to: System.@LStrLAsg(void;void;void;void); | 005119A3 E81C30EFFF call 004049C4 005119A8 8BD7 mov edx, edi 005119AA 8B8628030000 mov eax, [esi+$0328] * Reference to: Classes.TList.Get(TList;Integer):Pointer; | 005119B0 E8D3B9F0FF call 0041D388 005119B5 8B5008 mov edx, [eax+$08] 005119B8 8D45F8 lea eax, [ebp-$08] * Reference to: System.@LStrLAsg(void;void;void;void); | 005119BB E80430EFFF call 004049C4 005119C0 80BE2D03000000 cmp byte ptr [esi+$032D], $00 005119C7 741B jz 005119E4 005119C9 8B45F4 mov eax, [ebp-$0C] 005119CC 50 push eax 005119CD 8B45F0 mov eax, [ebp-$10] 005119D0 50 push eax * Possible String Reference to: 'KYLE' | 005119D1 B9AC1A5100 mov ecx, $00511AAC * Possible String Reference to: 'KATARN' | 005119D6 BABC1A5100 mov edx, $00511ABC 005119DB 8BC6 mov eax, esi | 005119DD E842010000 call 00511B24 005119E2 8BD8 mov ebx, eax 005119E4 84DB test bl, bl 005119E6 7517 jnz 005119FF |
|
Создано: 23 января 2007 23:36 · Личное сообщение · #9 |
|
Создано: 24 января 2007 01:13 · Личное сообщение · #10 Такие длинные коды лучше в аттач цеплять. Все что ты тут разбирал, я обычно пропускаю - это манипуляции со строками перед обработкой. Сама проверка вызывается здесь : rat пишет: 005119F8 E827010000 call 00511B24 Но как раз из этой подпрограммы ты привел только ненужные строчки Раз не умеешь "отсечь лишнее" по тексту : отладчик в зубы и вперед - так быстрее будет, наверное. Для основного форума вопрос явно слабоват. |
|
Создано: 24 января 2007 01:22 · Личное сообщение · #11 |
|
Создано: 24 января 2007 02:23 · Личное сообщение · #12 |
|
Создано: 24 января 2007 02:52 · Личное сообщение · #13 |
|
Создано: 24 января 2007 02:59 · Личное сообщение · #14 |
|
Создано: 24 января 2007 03:06 · Личное сообщение · #15 хм..как и обещал..(хотя получилось пораньше) код генерации на делфях - в аттаче.. код писался давно..и малопонятный имхо, но работает.. только строки свои вставь (KYLE, KATARN) и про кредитсы не забудь ;) зы. код робит для всех kc software - только в каждой проги разные "строки" d775_24.01.2007_CRACKLAB.rU.tgz - kg.txt ----- Тут не могла быть ваша реклама |
|
Создано: 26 января 2007 01:26 · Личное сообщение · #16 Маленькое уточнение, существуют два типа серийников - общие и для конкретной версии, для генерации используется одна и та же функция, но с разными строками, плюс для конкретной версии эта версия добавляется к имени. В коде lord_Phoenix'a строки для общего серийника так, что ничего менять не надо. Kyle и Katarn - для версии 6.7. Ну и приведу мой вариант кейгена на MFC (кстати без goto ): 4059_26.01.2007_CRACKLAB.rU.tgz - keygen.txt |
|
Создано: 28 января 2007 00:44 · Личное сообщение · #17 0046CAEF |. 50 PUSH EAX ; /lParam
Это считывание кода? Маленький вопросец как не заходя в эту функцию узнать где будет считанная строка.. куда кладется адрес? ----- Researcher |
|
Создано: 28 января 2007 02:07 · Личное сообщение · #18 |
|
Создано: 28 января 2007 02:29 · Личное сообщение · #19 |
|
Создано: 28 января 2007 05:36 · Личное сообщение · #20 |
eXeL@B —› Основной форум —› Помогите разобратся с алгоритмом. |