- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
这个东西大家都知道哈
九期教学中的一个练习作业 这里我把破文给大家
破解方法还是那种 函数等效替换法 这里大家要注意下关键值的保存位置及堆栈平衡
01.先搞定注册验证:
004CB92C /$ 55 PUSH EBP
004CBA38 |. E8 E78FF3FF CALL spx.00404A24
004CBA3D |. 0F94C0 SETE AL
004CBA40 |. 8843 34 MOV BYTE PTR DS:[EBX+34],AL // EBX == EAX
004CBA43 |. 807B 34 00 CMP BYTE PTR DS:[EBX+34],0
004CBA47 |. 74 34 JE SHORT spx.004CBA7D
// Patch 代码
004CB92C /$ 8BD8 MOV EBX,EAX
004CB92E |. B0 01 MOV AL,1
004CB930 |. 8843 34 MOV BYTE PTR DS:[EBX+34],AL
004CB933 |. BB 0F000000 MOV EBX,0F // 还原一下EBX数值 无所谓的
004CB938 \. C2 0400 RETN 4 // 注意这里要保持堆栈平衡
02.然后我们看一下程序的About:
004CC354 . 53 PUSH EBX
004CC355 . 8BD8 MOV EBX,EAX
004CC357 . 83BB 3C030000>CMP DWORD PTR DS:[EBX+33C],0 // 用户名
004CC35E . 0F84 DC000000 JE spx3.004CC440
004CC364 . 83BB 40030000>CMP DWORD PTR DS:[EBX+340],0 // 注册码
004CC36B . 0F84 CF000000 JE spx3.004CC440
004CC371 . 33D2 XOR EDX,EDX
004CC373 . 8B83 30030000 MOV EAX,DWORD PTR DS:[EBX+330]
004CC379 . E8 3AF6F7FF CALL spx3.0044B9B8
004CC37E . BA 4CC44C00 MOV EDX,spx3.004CC44C ; This product is licensed.
找个空地写上注册信息:
004EA870 04 00 ADD AL,0
004EA872 0000 ADD BYTE PTR DS:[EAX],AL
004EA874 4E DEC ESI
004EA875 6973 79 00000>IMUL ESI,DWORD PTR DS:[EBX+79],0
004EA87C 00 DB 00
004EA87D 00 DB 00
004EA87E 00 DB 00
004EA87F 00 DB 00
004EA880 0800 OR BYTE PTR DS:[EAX],AL
004EA882 0000 ADD BYTE PTR DS:[EAX],AL
004EA884 43 INC EBX
004EA885 68 696E6150 PUSH 50616E69
004EA88A 59 POP ECX
004EA88B 47 INC EDI
04 00 00 00 4E 69 73 79 00 00 00 00 00 00 00 00 08 00 00 00 43 68 69 6E 61 50 59 47
用户名地址:004EA874
注册码地址:004EA884
Patch代码如下:
004CC354 . 53 PUSH EBX
004CC355 . 8BD8 MOV EBX,EAX
004CC357 C783 3C030000 74A84E>MOV DWORD PTR DS:[EBX+33C],spx.004EA874 ; ASCII "Nisy"
004CC361 90 NOP
004CC362 90 NOP
004CC363 90 NOP
004CC364 C783 40030000 84A84E>MOV DWORD PTR DS:[EBX+340],spx.004EA884 ; ASCII "ChinaPYG"
004CC36E 90 NOP
004CC36F 90 NOP
004CC370 90 NOP
C7 83 3C 03 00 00 74 A8 4E 00 90 90 90 C7 83 40 03 00 00 84 A8 4E 00 90 90 90
OK 完工 ~~ |
|