虽然是个小软件。但是应该可以给刚学破解的同学一点点帮助。软件上网下,很多。
QQ第六感 v3.7
进入正题:
因为软件加了UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo壳
用UPXUnPacKer.V0.3随便就脱了。
用OD载入
直接右键 超级字串参考/ 查找ASCII码
找到 注册成功! 字样 双击跟踪。
出现
00402835 . E8 B3EFFFFF call SixthSen.004017ED
0040283A . 8BC8 mov ecx,eax
0040283C . E8 CBF0FFFF call SixthSen.0040190C
00402841 . 84C0 test al,al
00402843 . 8BCE mov ecx,esi
00402845 74 42 je short SixthSen.00402889 (关键跳)
00402847 . 53 push ebx
00402848 . 57 push edi
00402849 . 6A 40 push 40
0040284B . 68 14BD4300 push SixthSen.0043BD14 ; 欢迎注册
00402850 . 68 08BD4300 push SixthSen.0043BD08 ; 注册成功!
00402855 . E8 C50F0100 call SixthSen.0041381F
0040285A . 33DB xor ebx,ebx
0040285C . 53 push ebx ; /lParam => 0
0040285D . 53 push ebx ; |wParam => 0
......................................................
00402845 74 42 je short SixthSen.00402889 (关键跳)
这句如果跳过,就注册不成功了,我们直接右键 二进制 用NOP填充掉。
光这样还不行 ,运行后会提示格式不正确。 我们直接查找ASCII码
找到 “你输入的注册码格式有误,请重新输入!” 字样 双击 跟踪。
出现
00402D12 . 68 1F040000 push 41F ; |Message = WM_USER+31.
00402D17 . FF77 20 push dword ptr ds:[edi+20] ; |hWnd
00402D1A . FF15 B0B54300 call dword ptr ds:[<&USER32.SendMessageA>; \SendMessageA
00402D20 . EB 13 jmp short SixthSen.00402D35
00402D22 > 6A 40 push 40 ( 关键
00402D24 . 68 00BD4300 push SixthSen.0043BD00 ; 警告
00402D29 . 68 20BD4300 push SixthSen.0043BD20 ; 你输入的注册码格式有误,请重新输入!
00402D2E > 8BCF mov ecx,edi
00402D30 . E8 EA0A0100 call SixthSen.0041381F
有一条是跳转到00402D22 > 6A 40 push 40 这里NOP掉
00402C14 . /E9 15010000 jmp SixthSen.00402D2E
00402C19 > |807D 46 2D cmp byte ptr ss:[ebp+46],2D
00402C1D |90 nop
00402C1E |90 nop
00402C1F |90 nop
00402C20 |90 nop
00402C21 |90 nop
00402C22 |90 nop
00402C23 . |807D 4F 2D cmp byte ptr ss:[ebp+4F],2D
00402C27 |0F85 F5000000 jnz SixthSen.00402D22
00402C2D . |83F8 18 cmp eax,18
00402C30 |0F85 EC000000 jnz SixthSen.00402D22
00402C36 . |E8 F9690100 call SixthSen.00419634
NOP掉以后 观察下面有两条跳转语句
00402C27 |0F85 F5000000 jnz SixthSen.00402D22
00402C30 |0F85 EC000000 jnz SixthSen.00402D22
这两条也是跳转到 00402D22 > 6A 40 push 40 ,照样NOP掉
保存生成后 ,运行发现没有出现格式出错的字样,而是说注册码出错。
那我们就要查ASCII码 找到 注册码错误 的字样跟踪,其实那条语句就在格式出错那条上面不远处。很容易发现。
00402C83 /77 23 ja short SixthSen.00402CA8 关键跳
00402C85 . |83C0 C9 add eax,-37
00402C88 > |C1E1 04 shl ecx,4
00402C8B . |03C8 add ecx,eax
00402C8D . |46 inc esi
00402C8E . |83FE 08 cmp esi,8
00402C91 .^|7C CC jl short SixthSen.00402C5F
00402C93 . |33DB xor ebx,ebx
00402C95 . |33F6 xor esi,esi
00402C97 > |0FBE4435 50 movsx eax,byte ptr ss:[ebp+esi+50]
00402C9C . |8D50 D0 lea edx,dword ptr ds:[eax-30]
00402C9F . |83FA 09 cmp edx,9
00402CA2 . |77 12 ja short SixthSen.00402CB6
00402CA4 . |8BC2 mov eax,edx
00402CA6 . |EB 26 jmp short SixthSen.00402CCE
00402CA8 > \6A 40 push 40 关键位置
00402CAA . 68 00BD4300 push SixthSen.0043BD00 ; 警告
00402CAF . 68 60BD4300 push SixthSen.0043BD60 ; 注册码错误!
00402CB4 . EB 78 jmp short SixthSen.00402D2E
00402CB6 > 8D50 9F lea edx,dword ptr ds:[eax-61]
00402CB9 . 83FA 05 cmp edx,5
00402CBC . 77 05 ja short SixthSen.00402CC3
00402CBE . 83C0 A9 add eax,-57
00402CC1 . EB 0B jmp short SixthSen.00402CCE
00402CC3 > 8D50 BF lea edx,dword ptr ds:[eax-41]
00402CC6 . 83FA 05 cmp edx,5
00402CC9 ^ 77 DD ja short SixthSen.00402CA8 关键跳
跳转语句有好多条,
00402CA8 > \6A 40 push 40
这句是关键,如果让语句跳来这里 向下运行就会出错了 ,把跳到这里的两句关键跳NOP掉。
最后一步 当然是保存了 。运行后随便输入 提示:注册成功!
新手破解,大家可以互相交流。
弹出网页暂时还没能力去除,会的同学希望可以给我留言。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!