首页
社区
课程
招聘
Teleport Pro V1.29简单注册算法分析及注册机C++源码^_*
发表于: 2004-11-21 13:48 11022

Teleport Pro V1.29简单注册算法分析及注册机C++源码^_*

2004-11-21 13:48
11022

不管难度如何,只要有货俺就发D

Teleport Pro 所能做的,不仅仅是离线浏览某个网页(让你离线快速浏览某个网页的内容当然是它的一项重要功能),它可以从Internet的任何地方抓回你想要的任何文件,它可以在你指定的时间自动登录到你指定的网站下载你指定的内容,你还可以用它来创建某个网站的完整的镜象,作为创建你自己的网站的参考

Official WebSite:http://www.tenmax.com/

该软件的注册信息保存在
HKLM\\SoftWare\\Tennyson Maxwell\\Teleport pro
"Company"="REG_SZ"
"Name"="REG_SZ"(用户名)
"Registration"="REG_DWORD"(注册码)

该软件没有加壳,VC++编译,先用IDA分析了一下,导出.map文件,然后用Olldbg的LoadMap Plugin 导入.map,下断
bpx GetWindowTextA
断在
004511AE   |.  FF15 0CE54600      call dword ptr ds:[<&USER32.GetWindowTextA>]   ; \GetWindowTextA
004511B4   |.  8B4D 10            mov ecx,dword ptr ss:[ebp+10]
004511B7   |.  6A FF              push -1
004511B9   |.  E8 EA8DFFFF        call <pro.CString::ReleaseBuffer(int)>

0042C074    .  8B87 D9000000      mov eax,dword ptr ds:[edi+D9]  //假码
0042C07A    .  33DB               xor ebx,ebx
0042C07C    .  6A 0A              push 0A
0042C07E    .  53                 push ebx
0042C07F    .  50                 push eax
0042C080    .  E8 B0660000        call <pro._strtoul> //把假码转换为十六进制
0042C085    .  8BF0               mov esi,eax         //假码的十六进制值

0042C0AE    .  E8 BA090000        call <pro.sub_42CA6D>
{
0042CA6D <>/$  57                 push edi                                      ;  
0042CA6E   |.  8B7C24 08          mov edi,dword ptr ss:[esp+8]
0042CA72   |.  85FF               test edi,edi
0042CA74   |.  74 09              je short <pro.loc_42CA7F>
0042CA76   |.  57                 push edi
0042CA77   |.  E8 14590000        call <pro._strlen>
0042CA7C   |.  59                 pop ecx
0042CA7D   |.  EB 02              jmp short <pro.loc_42CA81>
0042CA7F <>|>  33C0               xor eax,eax                                   ;  
0042CA81 <>|>  83F8 05            cmp eax,5                                     ;  用户名长度是不是小于5
0042CA84   |.  73 04              jnb short <pro.loc_42CA8A>
0042CA86   |.  33C0               xor eax,eax
0042CA88   |.  5F                 pop edi
0042CA89   |.  C3                 retn
0042CA8A <>|>  53                 push ebx                                      ;  
0042CA8B   |.  56                 push esi
0042CA8C   |.  BE A4E4FE5D        mov esi,5DFEE4A4                              ;  初始参数
0042CA91   |.  33DB               xor ebx,ebx
0042CA93 <>|>  85FF               /test edi,edi                                 ;  
0042CA95   |.  74 09              |je short <pro.loc_42CAA0>
0042CA97   |.  57                 |push edi                                     ;用户名
0042CA98   |.  E8 F3580000        |call <pro._strlen>                           ;用户名的长度
0042CA9D   |.  59                 |pop ecx
0042CA9E   |.  EB 02              |jmp short <pro.loc_42CAA2>
0042CAA0 <>|>  33C0               |xor eax,eax                                  ;  
0042CAA2 <>|>  83C0 FC            |add eax,-4                                   ;  循环用户名长度减4次
0042CAA5   |.  3BD8               |cmp ebx,eax
0042CAA7   |.  73 0C              |jnb short <pro.loc_42CAB5>
0042CAA9   |.  33343B             |xor esi,dword ptr ds:[ebx+edi]               ;用户名4位4位的和初始的0x5DFEE4A4 XOR
...........................................................................
比如我的用户名Cnbragon,stlen(Cnbragon)=8,那么就循环4次,
第一次用0x72626E43(rbnC) XOR 0x5DFEE4A4=0x2F9C8AE7
第二次用0x6172626E(arbn) XOR 0x2F9C8AE7=0x4EEEE889
第三次用0x67617262(garb) XOR 0x4EEEE889=0x298F9AEB
第四次用0x6F676172(ogar) XOR 0x298F9AEB=0x46E8FB99
这第四次XOR的结果就是注册码的十六进制值
.............................................................................
0042CAAC   |.  F6C3 40            |test bl,40
0042CAAF   |.  74 01              |je short <pro.loc_42CAB2>
0042CAB1   |.  43                 |inc ebx
0042CAB2 <>|>  43                 |inc ebx                                      ;  
0042CAB3   |.^ EB DE              \jmp short <pro.loc_42CA93>
0042CAB5 <>|>  8BC6               mov eax,esi                                   ;  
0042CAB7   |.  5E                 pop esi
0042CAB8   |.  5B                 pop ebx
0042CAB9   |.  5F                 pop edi
0042CABA   \.  C3                 retn
}
0042C0B3    .  3BF0               cmp esi,eax  ;eax是对用户名的处理结果,esi是对注册码处理的结果

简单的用C++写了注册机,VS.net下编译通过:D

#include <iostream.h>
#include <string.h>

typedef unsigned long int UINT4;

main()
{
        char name[64]={'0'};
        UINT4 arg=0x5DFEE4A4;
        UINT4 temp;
        UINT4 sn;
        cout<<"Please input Your name:"<<endl;
        cin>>name;
        int length;
        length=strlen(name);
        if(length<5)
        {
                cout<<"The Length of Your name must >=5"<<endl;
                return -1;
        }
        for(int i=0;i<length-4;i++)
        {
                temp=((UINT4(name[i]))|(UINT4(name[i+1])<<8)|(UINT4(name[i+2])<<16)|(UINT4(name[i+3])<<24));
                arg=temp^arg;
        }
        sn=arg;
        cout<<sn;
}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 212
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持下!:D
2004-11-21 16:43
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持!!!
2004-11-21 17:00
0
雪    币: 217
活跃值: (115)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
Teleport pro 1.29.1590

cracker:essorg
tools:trw2000pll
level:0

到注册界面,输入注册码随便打,出现 Incorrect release code 界面,
CTRL+N 进入 TRW2000
下hwnd 查该界面窗体句柄,再下bpmsg (hwnd) WM_COMMAND,X回到出错界面,点击确定,此时TRW中断进入
按N次F12和N次F8,得到以下内容

017F:0042690D 6A0A             PUSH     BYTE +0A
017F:0042690F 53               PUSH     EBX
017F:00426910 50               PUSH     EAX
017F:00426911 E85E690000       CALL     0042D274                〈----由输入注册码计算校验码1
017F:00426916 8B0DF8204800     MOV      ECX,[004820F8]
017F:0042691C 83C40C           ADD      ESP,BYTE +0C
017F:0042691F 8945E8           MOV      [EBP-18],EAX                〈----返回值放到[EBP-18]
017F:00426922 3899DB040000     CMP      [ECX+04DB],BL
017F:00426928 0F8412020000     JZ       NEAR 00426B40
017F:0042692E 3BC3             CMP      EAX,EBX
017F:00426930 BE00DA4700       MOV      ESI,0047DA00
017F:00426935 0F8406010000     JZ       NEAR 00426A41
017F:0042693B FFB7D5000000     PUSH     DWORD [EDI+D5]
017F:00426941 E896090000       CALL     004272DC                〈----由输入用户名计算校验码2
017F:00426946 3945E8           CMP      [EBP-18],EAX                〈----比较校验码1和校验码2       
017F:00426949 59               POP      ECX
017F:0042694A 753A             JNZ      00426986

由输入用户名计算校验码,经分析此段程序即可作为注册机程序,稍作修改:

〈----求用户名长度,长度必须不小于5才有效。       
017F:004272DC 57               PUSH     EDI
017F:004272DD 8B7C2408         MOV      EDI,[ESP+08]
017F:004272E1 85FF             TEST     EDI,EDI
017F:004272E3 7409             JZ       004272EE
017F:004272E5 57               PUSH     EDI
017F:004272E6 E855560000       CALL     0042C940               
017F:004272EB 59               POP      ECX
017F:004272EC EB02             JMP      SHORT 004272F0
017F:004272EE 33C0             XOR      EAX,EAX
017F:004272F0 83F805           CMP      EAX,BYTE +05
017F:004272F3 7304             JNC      004272F9
017F:004272F5 33C0             XOR      EAX,EAX
017F:004272F7 5F               POP      EDI
017F:004272F8 C3               RET     

〈----注册码计算程序。
017F:004272F9 53               PUSH     EBX
017F:004272FA 56               PUSH     ESI
017F:004272FB BEA4E4FE5D       MOV      ESI,5DFEE4A4
017F:00427300 33DB             XOR      EBX,EBX
017F:00427302 85FF             TEST     EDI,EDI
017F:00427304 7409             JZ       0042730F
017F:00427306 57               PUSH     EDI
017F:00427307 E834560000       CALL     0042C940                〈----计算用户名长度,返回给EAX。
017F:0042730C 59               POP      ECX
017F:0042730D EB02             JMP      SHORT 00427311
017F:0042730F 33C0             XOR      EAX,EAX
017F:00427311 83C0FC           ADD      EAX,BYTE -04
017F:00427314 3BD8             CMP      EBX,EAX
017F:00427316 730C             JNC      00427324
017F:00427318 33343B           XOR      ESI,[EBX+EDI]
017F:0042731B F6C340           TEST     BL,40
017F:0042731E 7401             JZ       00427321
017F:00427320 43               INC      EBX
017F:00427321 43               INC      EBX
017F:00427322 EBDE             JMP      SHORT 00427302
017F:00427324 8BC6             MOV      EAX,ESI
017F:00427326 5E               POP      ESI
017F:00427327 5B               POP      EBX
017F:00427328 5F               POP      EDI
017F:00427329 C3               RET

总结:
keymake1.73制作内存注册机,中断42694A,75头,2字节,记录寄存器EAX,十进制
注册完成后在注册表中添加:
HKEY_CURRENT_USER\Software\Tennyson Maxwell\Teleport Pro\User\
Registration=0x40e2e4b2(1088611506)

此软件有一个万能注册码:0xffffffff(4294967295)
2004-11-21 18:54
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
5
用C++编译器写出来的不一定都是C++程序:D
2004-11-21 19:38
0
雪    币: 323
活跃值: (589)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
6
:o 算法对我来说不简单哦。
一定要支持一下!

BTW:还有没有货啊?强烈要求多搞点。
2004-11-21 20:27
0
雪    币: 413
活跃值: (752)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
这个1.29版有不少年了.升级只是小版本号,算号一直没有变,5年前的算法就是这样,我写过,只是觉得再发意义不大
2004-11-21 20:41
0
雪    币: 420
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不管如何,学习最重要
2004-11-21 21:33
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
9
最初由 nig 发布
这个1.29版有不少年了.升级只是小版本号,算号一直没有变,5年前的算法就是这样,我写过,只是觉得再发意义不大


多谢nig兄提醒:D
2004-11-21 22:16
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
10
最初由 blowfish 发布
用C++编译器写出来的不一定都是C++程序:D


:D这个程序中除了cout和cin是属于C++的,其它都是C:D
2004-11-21 22:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
厉害,这也行
2005-11-4 21:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好好研究一下
2005-11-4 21:58
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
13
晕,多长时间前的贴子也翻出来啦~
2005-11-5 08:04
0
游客
登录 | 注册 方可回帖
返回
//