首页
社区
课程
招聘
进位专家破解分析
发表于: 2004-7-30 09:36 11746

进位专家破解分析

2004-7-30 09:36
11746

软件名称:进位专家

适用平台:win98/win2000/winXP/winME

软件大小:600 K

介绍:进位专家是配合WPE使用的绝佳搭档,WPE拦截的封包都是16进制的,看起

来非常不方便,本程序可以直接翻译16进制到10进制,并且支持进制转换和直接

16进制查字符。
  如果您要修改网络游戏,对于处理数据那是经常的事,所以,进位专家是必

须具备的工具。科技极大地提高您的工作效率。

下载地址:http://5dai.nease.net/soft/wai/jinwzj.rar

---------------------------------------------------
初发破解分析,写得不好
---------------------------------------------------
首先,用Peid查壳,发现是用VB写的。

用VBDE这个软件打开“进位专家.exe”,选择Procedures,选择Form1,然后看到

009330 cmdUP_Click。遇到VB程序,VBDE可以说是很好用的,只要简单分析一下

,就可以找到合适的断点位置。
这里通过分析,Form1就是开头进入软件要求注册的窗口,而cmd_Exit_Click应

该是“退出”按钮,而cmdHelp_Click则是帮助按键,那么剩下的cmdUp_Click就

是登陆了。也就是我们要拦截的。
可以看到Offset是009330,加上基地址400000,就是地址409330。

用OD打开程序,在409330下断,F9运行,随便输入用户名和密码,按登陆,果然

拦截下来了。

00409330    55              PUSH EBP        /就是拦截在这里
00409331    8BEC            MOV EBP,ESP
00409333    83EC 0C         SUB ESP,0C
00409336    68 36124000     PUSH <JMP.&MSVBVM60.__vbaExceptHandler>
0040933B    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
00409341    50              PUSH EAX
00409342    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00409349    81EC BC000000   SUB ESP,0BC
0040934F    53              PUSH EBX
00409350    56              PUSH ESI

。。。
一直走下去,走到这
004093CD    3BC7            CMP EAX,EDI
004093CF    DBE2            FCLEX
004093D1    7D 12           JGE SHORT 进位专家.004093E5
004093D3    68 A0000000     PUSH 0A0
004093D8    68 30554000     PUSH 进位专家.00405530
004093DD    53              PUSH EBX
004093DE    50              PUSH EAX
004093DF    FF15 34104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.__vbaHresultCheckObj
004093E5    8B55 D4         MOV EDX,DWORD PTR SS:[EB>; 出现用户名
004093E8    8B1D D8104000   MOV EBX,DWORD PTR DS:[<&>;

MSVBVM60.__vbaStrMove
004093EE    8D4D D8         LEA ECX,DWORD PTR SS:[EB>
004093F1    897D D4         MOV DWORD PTR SS:[EBP-2C>
004093F4    FFD3            CALL EBX
004093F6    8D4D D0         LEA ECX,DWORD PTR SS:[EB>
004093F9    FF15 EC104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.__vbaFreeObj
再一直走。
004094BB    8B45 D8         MOV EAX,DWORD PTR SS:[EB>
004094BE    50              PUSH EAX                 ;EAX存放你输入的用户名位数
004094BF    FF15 10104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.__vbaLenBstr
004094C5    B9 0A000000     MOV ECX,0A               ;ECX=0A
004094CA    3BC1            CMP EAX,ECX              ; 比较你输入的用户名位数和规定的位数,规定的位数应该是10位
004094CC    7D 43           JGE SHORT 进位专家.00409511;如果用户名是10位的话,此跳转便成立,我虽然不知道JGE是什么意思,但我知道一定要让它跳转,才能实现随意输入用户名,所以把JGE改成JMP
004094CE    8B3D C0104000   MOV EDI,DWORD PTR DS:[<&>;

MSVBVM60.__vbaVarDup
004094D4    B8 04000280     MOV EAX,80020004
004094D9    894D 90         MOV DWORD PTR SS:[EBP-70>
004094DC    894D A0         MOV DWORD PTR SS:[EBP-60>
004094DF    BE 08000000     MOV ESI,8

当运行到此处时,有个循环
00409699    8D4D D4         LEA ECX,DWORD PTR SS:[EB>
0040969C    FF15 F0104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.__vbaFreeStr
004096A2    B8 01000000     MOV EAX,1
004096A7    66:03C7         ADD AX,DI
004096AA    0F80 90020000   JO 进位专家.00409940
004096B0    8BF8            MOV EDI,EAX
004096B2  ^ E9 5CFFFFFF     JMP 进位专家.00409613      ;就是这个循环,直接在下面的4096B7按F4就可以了。
004096B7    8B55 DC         MOV EDX,DWORD PTR SS:[EB>  ;此处按F4
004096BA    8D4D DC         LEA ECX,DWORD PTR SS:[EB>  ;到这里,请观察EDX,发现已经有可能是注册码的数字。我输入的用户名是abcdeabcde,出现的是7890178901P,试了一下,不行,别急,看后面的。

在往下走。。。。
004096DE    50              PUSH EAX
004096DF    51              PUSH ECX
004096E0    FF15 D0104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.rtcLeftCharVar
004096E6    8D55 C0         LEA EDX,DWORD PTR SS:[EB>
004096E9    52              PUSH EDX
004096EA    FF15 14104000   CALL DWORD PTR DS:[<&MSV>;

MSVBVM60.__vbaStrVarMove
004096F0    8BD0            MOV EDX,EAX              ;此处的EAX又出现了类似的数字7890178901,和上面的比较,在后面少了一个P,测试一下,已经注册成功了,别急,接下去继续分析。
004096F2    8D4D E4         LEA ECX,DWORD PTR SS:[EB>
004096F5    FFD3            CALL EBX

再一直走。。。
0040973B    8B4D D4         MOV ECX,DWORD PTR SS:[EBP->
0040973E    8B55 E4         MOV EDX,DWORD PTR SS:[EBP->
00409741    51              PUSH ECX
00409742    52              PUSH EDX
00409743    FF15 5C104000   CALL DWORD PTR DS:[<&MSVBV>;

MSVBVM60.__vbaStrCmp,可以看到,这里用了函数vbaStrCmp,这是VB常用的一个比较函数
00409749    8BF0            MOV ESI,EAX
0040974B    8D4D D4         LEA ECX,DWORD PTR SS:[EBP->
0040974E    F7DE            NEG ESI
00409750    1BF6            SBB ESI,ESI
00409752    46              INC ESI
00409753    F7DE            NEG ESI
00409755    FF15 F0104000   CALL DWORD PTR DS:[<&MSVBV>;

MSVBVM60.__vbaFreeStr
0040975B    8D4D D0         LEA ECX,DWORD PTR SS:[EBP->
0040975E    FF15 EC104000   CALL DWORD PTR DS:[<&MSVBV>;

MSVBVM60.__vbaFreeObj
00409764    66:85F6         TEST SI,SI
00409767    0F84 DC000000   JE 进位专家.00409849           ; 关键跳,暴破点,把JE改成JNE就可以了。
0040976D    A1 38D04000     MOV EAX,DWORD PTR DS:[40D0>
00409772    85C0            TEST EAX,EAX
00409774    75 10           JNZ SHORT 进位专家.00409786
00409776    68 38D04000     PUSH 进位专家.0040D038
0040977B    68 D0444000     PUSH 进位专家.004044D0
00409780    FF15 98104000   CALL DWORD PTR DS:[<&MSVBV>;

MSVBVM60.__vbaNew2

在409767处,一开始我也不确定是不是暴破点,如果不改的话,走一段就会提示注册不成功,所以改了一下,结果行了,所以,这里就是暴破点。

后来,我又试着用Keymake做内存注册机,可是没成功,连拦截都拦截不下。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 266
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
靠,这个软件算法很简单阿,没什么研究价值
用户名是3的话密码就是1,用户名不能小于12位(好像),密码永远是数字.
比如
用户名为:588588588588
密码则为:366366366366
2004-8-1 09:56
0
雪    币: 201
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习一下
2004-8-1 11:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
能写出来共享就是好的,不要象鸡蛋壳那号人只会炫耀
2004-8-1 12:25
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
5
最初由 asmboozer 发布
能写出来共享就是好的,不要象鸡蛋壳那号人只会炫耀


忍一时风平浪静
退一步海阔天空
2004-8-1 15:02
0
雪    币: 266
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
sorry
我没有恶意
那样用词只是语言习惯
2004-8-2 16:24
0
游客
登录 | 注册 方可回帖
返回
//