这次这个比WINZIP 和 WINAMP两个稍稍复杂一点,大家可以更进一步了解到汇编在SOFTICE的灵活应用!呵呵 明天破解WinImage就开始有一点难度了,呵呵! 1. 用softice载入windows(通过CTRL+D来检查softice是否已经准备好,按F5退出softice);
2. 运行WinXfiles,选择“Help”下的“Order”进行注册;
3. 在“User Name:”中输入:Xingheng(随意),“Key:”中输入:12345678(随意);
4. 用CTRL+D呼出softice,下万能断点:bpx hmemcpy,按F5返回到WinXfiles;
5. 在WinXfiles中点击“OK”,很快程序就被softice拦截下来;
6. 用 bd * 暂停断点 bpx hmemcpy ;
7. 按F12键7次,返回到WinXfiles的领空,程序停留在下面的地方: 。。。 0167:0042B9C8 CALL 004172A8 0167:0042B9CD POP ESI <-- 程序停在这里 0167:0042B9CE POP EBX 0167:0042B9CF RET 。。。
8. 连续按F12,你会看到程序中一直都出现RET指令,按F12键5次后来到下面的地方: 。。。 0167:0048D38D MOV EAX, [EBP+FFFFFBD4] <-- 程序来到这里 0167:0048D393 LEA EDX, [EBP+FFFFFBD8] 0167:0048D399 CALL 004063FC 0167:0048D39E MOV EDX, [EBP+FFFFFBD8] 0167:0048D3A4 MOV EAX, EBX 0167:0048D3A6 CALL 004152CC 0167:0048D3AB LEA EDX, [EBP+FFFFFBD4] 0167:0048D3B1 MOV EAX, [EBP-04] 0167:0048D3B4 MOV EAX, [EAX+000001B8] 0167:0048D3BA CALL 0041529C 0167:0048D3BF MOV EAX, [EBP+FFFFFBD4] <-- EAX指向我们输入的用户名“Xingheng” 0167:0048D3C5 CALL 00403850 0167:0048D3CA CMP EAX, 00000006 0167:0048D3CD JL 0048D3F3 0167:0048D3CF LEA EDX, [EBP+FFFFFBD4] 0167:0048D3D5 MOV EAX, [EBP-04] 0167:0048D3D8 MOV EAX, [EAX+000001BC] 0167:0048D3DE CALL 0041529C 0167:0048D3E3 MOV EAX, [EBP+FFFFFBD4] <-- EAX指向我们输入的注册码“12345678” 0167:0048D3E9 CALL 00403850 0167:0048D3EE CMP EAX, 00000005 0167:0048D3F1 JGE 0048D418 0167:0048D3F3 XOR EDX, EDX 0167:0048D3F5 MOV EAX, [EBP-04] 0167:0048D3F8 MOV EAX, [EAX+000001B8] 0167:0048D3FE CALL 004152CC 0167:0048D403 XOR EDX, EDX 0167:0048D405 MOV EAX, [EBP-04] 0167:0048D408 MOV EAX, [EAX+000001BC] 0167:0048D40E CALL 004152CC 0167:0048D413 JMP 0048D71F 。。。
9. 按F10走到0167:0048D3C5 CALL 00403850停下,然后用 D EAX 命令,可以看到EAX指向的内存地址中藏着我们输入的用户名“Xingheng”,按F10走过这个CALL,来到下一句:0167:0048D3CA CMP EAX, 00000006,你会发现此时EAX=00000007,刚好是我们输入用户名“Xingheng”的字符个数,所以指令CMP EAX, 00000006的作用是比较输入的用户名字符个数是否小于6,如果小于6,你会发现程序将输入区域清空要求重新输入。这里因为“Xingheng”是7位,大于6,所以程序继续往下走。同样的,按F10继续往下走,你将发现0167:0048D3EE CMP EAX, 00000005这条语句判断输入的注册码位数是否大于等于5,如果小于5,和刚才检查用户名位数一样将会清空输入区域要求重新输入注册信息。因为我们输入的注册码“12345678”有8位,大于5,所以程序在0167:0048D3F1 JGE 0048D418时将跳到0048D418去:
上一篇:用SOFTICE破解WINZIP的过程
下一篇:windows系统目录
|