Сейчас на форуме: Magister Yoda, rtsgreg1989 (+7 невидимых) |
![]() |
eXeL@B —› Основной форум —› КейГен для GameGain 2 |
Посл.ответ | Сообщение |
|
Создано: 08 марта 2005 17:30 · Личное сообщение · #1 Дарова! Кто-нибудь ломал GameGain 2? Вот ссылка: www.pgware.com/ (где-то там ![]() (и вот ещё, там PE-Compact, но снять его, я думаю, не проблема ![]() Короче такой код (см. в DeDe орбработчик Form3->Button1Click там будет ф-ия XMLDoc.CopyChildNodes): 0047F854 6A13 push $13 0047F856 680D09759E push $9E75090D 0047F85B 8B45EC mov eax, [ebp-$14] ; tmpstr * Reference to: SysUtils.StrToInt(AnsiString):Integer; | ; в eax записывается tmpint (см. алгоритм) 0047F85E E8918DF8FF call 004085F4 0047F863 99 cdq * Reference to: System.@_llmul; | 0047F864 E85357F8FF call 00404FBC 0047F869 8945CC mov [ebp-$34], eax 0047F86C 8955D0 mov [ebp-$30], edx 0047F86F DF6DCC fild qword ptr [ebp-$34] 0047F872 83C4F4 add esp, -$0C 0047F875 DB3C24 fstp tbyte ptr [esp] 0047F878 9B wait 0047F879 8D55C0 lea edx, [ebp-$40] 0047F87C B8E4FA4700 mov eax, $0047FAE4 ; в eax записывается '#' (по-моему) * Reference to: SysUtils.FormatFloat(AnsiString;Extended):AnsiString;overload; | 0047F881 E8AAA4F8FF call 00409D30 0047F886 8B55C0 mov edx, [ebp-$40] ; в edx записывается реальный(полученный) серийник серийник должен быть таким: XXXX+yyyy+ZZZZ XXXX - результат этого кода. yyyy - кол-во лицензий (я вводил 1). ZZZZ - любые символы. Алгоритм такой (delphi). var name: string; i: integer; tmpint: integer; tmpstr: string; begin for i := 1 to strlen(PChar(Name)) do begin tmpstr := IntToStr(Ord(Name[i])*i)+IntToStr(10*i+1); end; tmpint := StrToInt(tmpstr)*2; ... А вот дальше проблема. Не понятно, что делает функция по адресу 0047F864 (System.@_llmul;). Тут что-то с int64 связано... Может кто подскажет... ![]() |
|
Создано: 08 марта 2005 17:56 · Личное сообщение · #2 |
|
Создано: 08 марта 2005 18:08 · Личное сообщение · #3 // 64 bit integer helper routines // // These functions always return the 64-bit result in EAX:EDX // ---------------------------------------------------------------------- -------- // 64-bit signed multiply // ---------------------------------------------------------------------- -------- // // Param 1(EAX:EDX), Param 2([ESP+8]:[ESP+4]) ; before reg pushing // procedure __llmul; asm push edx push eax // Param2 : [ESP+16]:[ESP+12] (hi:lo) // Param1 : [ESP+4]:[ESP] (hi:lo) mov eax, [esp+16] mul dword ptr [esp] mov ecx, eax mov eax, [esp+4] mul dword ptr [esp+12] add ecx, eax mov eax, [esp] mul dword ptr [esp+12] add edx, ecx pop ecx pop ecx ret 8 end; ![]() |
|
Создано: 08 марта 2005 18:27 · Личное сообщение · #4 |
|
Создано: 08 марта 2005 18:27 · Поправил: Spiteful · Личное сообщение · #5 Ну вроде так в 0047F864 E85357F8FF call 00404FBC считается след. вещь eax=tmpint*9E75090Dh edx=результат переполнения предыдущей операц.+tmpint*13h из полученных EDX::EAX уже формируется сериал... кстати, чтоб посчитать tmpint не надо крутить цикл tmpint=(ascii код последнего символа regname * strlen(regname) * 0ah +strlen(regname))*2 P.S. если strlen >0ah, то в формуле надо заменить 0ah на 64h ![]() |
|
Создано: 09 марта 2005 05:44 · Личное сообщение · #6 |
|
Создано: 09 марта 2005 07:50 · Личное сообщение · #7 |
|
Создано: 09 марта 2005 19:25 · Личное сообщение · #8 |
![]() |
eXeL@B —› Основной форум —› КейГен для GameGain 2 |
Эта тема закрыта. Ответы больше не принимаются. |