飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6144|回复: 5

[原创] Teleport Pro算法分析

[复制链接]
  • TA的每日心情

    2017-7-19 15:45
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-4-19 19:20:48 | 显示全部楼层 |阅读模式
    【破文标题】 Teleport Pro Version 1.39 for Windows
    【破文作者】shine
    破解平台】winxpsp3
    【破解工具】PEiD0.94、TheOD
    【作者邮箱】[email protected]
    【软件名称】Teleport Pro Version 1.39 for Windows
    【软件大小】664k
    【软件简介】As of Version 1.39, Teleport Pro uses an internal Java applet binary parser,and doesn't need to use the older "JavaPack" system distributed with previousversions of Teleport Pro.  If you have upgraded a Teleport Pro v1.28 orprevious installation, you can delete the files in the "bin" subdirectory(there should be two files in that folder, CLASSES.ZIP and JAVAP.EXE), as those files are no longer necessary .




    1.PEID-----Microsoft Visual C++ 6.0  base64 和crc32算法。

    2.OD载入,可以用查找字符串,F12堆栈调用,查找按钮事件到达关键处。

    ==================================================================================================
    0042B421   .  E8 2F680000   call pro.00431C55                        ;  edx用户名长度5
    0042B426   .  8BF0          mov esi, eax
    0042B428   .  A1 D4014900   mov eax, dword ptr ds:[4901D4]
    0042B42D   .  83C4 0C       add esp, 0C
    0042B430   .  897424 10     mov dword ptr ss:[esp+10], esi
    0042B434   .  3898 CD040000 cmp byte ptr ds:[eax+4CD], bl
    0042B43A   .  0F84 33010000 je pro.0042B573
    0042B440   .  3BF3          cmp esi, ebx
    0042B442   .  BD C4604800   mov ebp, pro.004860C4                    ;  ASCII "User"
    0042B447   .  74 59         je short pro.0042B4A2
    0042B449   .  FFB7 D5000000 push dword ptr ds:[edi+D5]               ;  用户名
    0042B44F   .  E8 BA090000   call pro.0042BE0E                        ;  F7进
    0042B454   .  3BF0          cmp esi, eax                             ;  eax真码,esi假码
    0042B456   .  59            pop ecx
    0042B457   .  75 0F         jnz short pro.0042B468                   ;  关键跳
    0042B459   .  53            push ebx                                 ; /Arg3
    0042B45A   .  53            push ebx                                 ; |Arg2
    0042B45B   .  FF35 A46A4800 push dword ptr ds:[486AA4]               ; |Arg1 = 0048BD6C ASCII "Thank you!  Your copy of Teleport Pro is now registered.  All limits have been removed."
    0042B461   .  E8 8C550200   call pro.004509F2                        ; \pro.004509F2
    0042B466   .  EB 75         jmp short pro.0042B4DD
    ==================================================================================================
    进入0042B44F处call,来到这里


    0042BE0E  /$  57            push edi
    0042BE0F  |.  8B7C24 08     mov edi, dword ptr ss:[esp+8]            ;  用户名给edi
    0042BE13  |.  85FF          test edi, edi
    0042BE15  |.  74 09         je short pro.0042BE20                    ;  没输入就措
    0042BE17  |.  57            push edi
    0042BE18  |.  E8 935A0000   call pro.004318B0                        ;  eax是用户名长度
    0042BE1D  |.  59            pop ecx
    0042BE1E  |.  EB 02         jmp short pro.0042BE22
    0042BE20  |>  33C0          xor eax, eax
    0042BE22  |>  83F8 05       cmp eax, 5                               ;  长度和5比较
    0042BE25  |.  73 04         jnb short pro.0042BE2B                   ;  不小就跳
    0042BE27  |.  33C0          xor eax, eax
    0042BE29  |.  5F            pop edi
    0042BE2A  |.  C3            retn
    0042BE2B  |>  53            push ebx
    0042BE2C  |.  56            push esi
    0042BE2D  |.  BE A4E4FE5D   mov esi, 5DFEE4A4                        ;  esi=5DFEE4A4
    0042BE32  |.  33DB          xor ebx, ebx                             ;  ebx清零
    0042BE34  |>  85FF          /test edi, edi
    0042BE36  |.  74 09         |je short pro.0042BE41
    0042BE38  |.  57            |push edi
    0042BE39  |.  E8 725A0000   |call pro.004318B0                       ;  用户名长度eax=7
    0042BE3E  |.  59            |pop ecx
    0042BE3F  |.  EB 02         |jmp short pro.0042BE43
    0042BE41  |>  33C0          |xor eax, eax
    0042BE43  |>  83C0 FC       |add eax, -4                             ;  长度减四位
    0042BE46  |.  3BD8          |cmp ebx, eax
    0042BE48  |.  73 0C         |jnb short pro.0042BE56
    0042BE4A  |.  33343B        |xor esi, dword ptr ds:[ebx+edi]         ;  前四位倒序ascii值和esi异或从第二位开始再取四位
    0042BE4D  |.  F6C3 40       |test bl, 40                             ;  最多只运算40H次
    0042BE50  |.  74 01         |je short pro.0042BE53
    0042BE52  |.  43            |inc ebx
    0042BE53  |>  43            |inc ebx
    0042BE54  |.^ EB DE         \jmp short pro.0042BE34
    0042BE56  |>  8BC6          mov eax, esi
    0042BE58  |.  5E            pop esi
    0042BE59  |.  5B            pop ebx
    0042BE5A  |.  5F            pop edi
    0042BE5B  \.  C3            retn
    0042BE5C   .  E9 00000000   jmp pro.0042BE61
    0042BE61   >  68 204D4800   push pro.00484D20
    0042BE66   .  FF35 086A4800 push dword ptr ds:[486A08]               ;  pro.00486A48
    0042BE6C   .  E8 CE6F0000   call pro.00432E3F
    0042BE71   .  50            push eax
    0042BE72   .  FF35 106A4800 push dword ptr ds:[486A10]               ;  pro.00486A14
    0042BE78   .  E8 B35A0000   call pro.00431930
    0042BE7D   .  2B05 106A4800 sub eax, dword ptr ds:[486A10]           ;  pro.00486A14
    0042BE83   .  83C4 10       add esp, 10
    0042BE86   .  6A 03         push 3
    0042BE88   .  99            cdq
    0042BE89   .  59            pop ecx
    0042BE8A   .  F7F9          idiv ecx
    0042BE8C   .  40            inc eax
    0042BE8D   .  A3 28184900   mov dword ptr ds:[491828], eax
    0042BE92   .  C3            retn

    ==================================================================================================
    算法步骤:

    ==================================================================================================
    1.用户名位数必须大于等于5;

    2.5DFEE4A4H和从用户名第一位开始取四位倒序后,转换成ascii的值异或

    3.第二部的结果和从用户名第二位开始取四位倒序后的ascii码异或;

    4.以此类推,循环的次数n等于用户名长度-4;

    5.最后的16进制数转换成10进制的就是注册码。





    shine

    ASCII:7368696E65


    第一次取:6E696873


    异或后esi:5DFEE4A4

    esi:33978CD7H   10进制:865570007注册码

    1. ==================================================================================================
    2. delphi注册机源码
    3. ==================================================================================================
    4. var
    5. Scode : String;
    6. Sname : String;
    7. Stemp : String;
    8. i , j: Integer;
    9. Itemp : Int64;
    10. iconst : Integer;     //定义几个变量
    11. begin
    12. iconst := $5DFEE4A4;     //esi的初值
    13. itemp := 0;
    14. Stemp := '';
    15. if Edit1.Text = '' then Exit;
    16. if Length(Edit1.Text) < 5 then
    17.    begin
    18.    Edit2.Text := '用户名长度必须大于5';
    19.    end
    20. else if Length(Edit1.Text) >= 5 then
    21.   begin
    22.    for i := 1 to length(Edit1.Text) - 4 do           //算法循环
    23.     begin
    24.        Scode := Copy(Edit1.Text,i,4);
    25.         for j := 1 to 4 do
    26.        begin
    27.        Stemp := Format( '%.2x',[ Ord(Scode[j]) ] ) + Stemp;//反向输出ascii值
    28.        end;
    29.     itemp := StrToInt64('$'+Stemp);      //Format是格式化字符串
    30.     iconst := iconst Xor itemp;
    31.     Stemp := '';
    32.     end;
    33.   Edit2.Text := IntToStr(iconst);   //计算结果
    34.   end;

    35. end;
    复制代码
    c++的注册机,我想了半天没想出来,大家可以教教我。/:011
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-4-19 23:54:46 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-21 10:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2009-5-8 20:22:55 | 显示全部楼层
    有实力,有潜力/:good
    PYG19周年生日快乐!
  • TA的每日心情

    2017-7-19 15:45
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2009-5-14 21:16:50 | 显示全部楼层
    补上c++注册机咯/:014
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;


    void main()
    {
            int i = 0;
            int j = 0;
            int k = 0;
            int len = 0;
            int nTemp = 0;
            unsigned long lReg = 0x5DFEE4A4;
            unsigned long lResult = 0;
            char RegUser[255] = {0};
            char RegCode[255] = {0};
            char RegUsTmp[255] = {0};
            char RegCoTmp[255] = {0};

            cout << "Please input your username.." << endl;
            cin  >> RegUser;
            len = strlen(RegUser);
            strcat(RegCode,"0x");
             for (i = 0; i < len-4; i ++)      
             {
                     for (j = 0; j <= 3; j ++)
                     {
                             RegUsTmp[3-j] = RegUser[j+i];
                     }
                   
                    for(k = 0;k <= 3 ;k ++)
                    {
                      nTemp = RegUsTmp[k];
                      itoa(nTemp, RegCoTmp, 16);
                      strcat(RegCode, RegCoTmp);
                    }
                    lResult = strtol(RegCode, '\0', 16);
                lReg = lReg ^ lResult ;
                    memset( RegCode, 0, sizeof(RegCode) );
             }
            cout << "Your regcode is:" << lReg <<endl;
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-8-7 17:07
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2009-5-15 09:51:21 | 显示全部楼层
    看着是得慢慢研究了呀
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-5-18 22:33:28 | 显示全部楼层
    /:002 注册机写不出,就**了它
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表