- UID
- 79728
注册时间2014-11-12
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 郁闷 2018-1-26 16:44 |
---|
签到天数: 149 天 [LV.7]常住居民III
|
一个小软件引来各位大神的参与,让破解不再只是一个“恭喜你,注册成功!”,多了几分交流,这才是意义所在。
破解软件不是目的,只是脚下的台阶,我们要的是技术。
这个基本情况:
主程序无壳,明码比对,有字符串可查,配置信息加密保存。
主要爆破流程:
搜索字符串,
想法是:用真码去覆盖假码,进而注册成功
0040396B |. FF15 8C464100 CALL DWORD PTR DS:[<&MSVCRT._mbscmp>]
00403971 |. 83C4 14 ADD ESP, 14
修改如下:
0040396B . /E9 20F70000 JMP 00413090 ; 00413090
00403970 |90 NOP
00403971 > |83C4 14 ADD ESP, 14
Small-Q的方法
0x00413090:
CMP DWORD PTR SS:[ECX], 0
JNZ SHORT 004130A1 这个跳转要根据实际情况写地址:指向下面的PUSH EDX
CALL DWORD PTR DS:[41468C]
JMP 00403971
PUSH EDX
MOV EDX, DWORD PTR SS:[EAX]
MOV DWORD PTR SS:[ECX], EDX
MOV EDX, DWORD PTR SS:[EAX+4]
MOV DWORD PTR SS:[ECX+4], EDX
MOV EDX, DWORD PTR SS:[EAX+8]
MOV DWORD PTR SS:[ECX+8], EDX
MOV EDX, DWORD PTR SS:[EAX+C]
MOV DWORD PTR SS:[ECX+C], EDX
MOV EDX, DWORD PTR SS:[EAX+10]
MOV DWORD PTR SS:[ECX+10], EDX
MOV BYTE PTR SS:[ECX+15], 0
POP EDX
CALL DWORD PTR DS:[41468C]
JMP 00403971
这种方法首先判断S2是否为空,也就是说当真假码共同出现时才用真码覆盖假码,以免影响程序正常运行。
是以edx 为中转,把真码通过4步覆盖假码。
sgw888的方法:
CMP BYTE PTR DS:[ECX], 0
JE 004130A9
PUSHAD
PUSHFD
MOV ESI, EAX
MOV EDI, ECX
MOV ECX, 15
REP MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]
POPFD
POPAD
CALL DWORD PTR DS:[41468C]
JMP 00403971
sgw888的代码精简,但是像我等小白就不太容易理解了。首先给ecx 0x15h 即21 这是循环次数 rep 是循环命令。
但是不知道为何最后交换完成的数据会到ecx,这里还请大牛指点。
还有vipcrack的patch固定机器码和注册码。明天晚上再补上来。
|
评分
-
查看全部评分
|