-
-
进位专家破解分析
-
发表于:
2004-7-30 09:36
11747
-
软件名称:进位专家
适用平台: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做内存注册机,可是没成功,连拦截都拦截不下。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)