测试题一 by yayazhi
用PEID查了下发现,没有壳,用插件看了下算法---很多,也许是作者对自己的加密算法很自信所以才没有加壳吧。1.消息断点无效
2.ShowMessage也无效
3.万能断点,可以。
4.Dede,005F8998按钮事件。
5.查找字符串,可以。
6.GetPrivateProfileStringA,可以
最后找到的关键处在下面:
0061B404/$55 push ebp ;5个地方调用
0061B405|.8BEC mov ebp, esp
0061B407|.6A 00 push 0
0061B409|.6A 00 push 0
0061B40B|.6A 00 push 0
0061B40D|.53 push ebx
0061B40E|.56 push esi
0061B40F|.57 push edi
0061B410|.8BF0 mov esi, eax
0061B412|.33C0 xor eax, eax
0061B414|.55 push ebp
0061B415|.68 B8B46100 push recorder.0061B4B8
0061B41A|.64:FF30 push dword ptr fs:
0061B41D|.64:8920 mov dword ptr fs:, esp
0061B420|.8B8E 08030000 mov ecx, dword ptr ds:
0061B426|.B2 01 mov dl, 1
0061B428|.A1 F42C4400 mov eax, dword ptr ds:
0061B42D|.E8 7279E2FF call recorder.00442DA4
0061B432|.8BD8 mov ebx, eax
0061B434|.68 D0B46100 push recorder.0061B4D0 ;username
0061B439|.8D45 FC lea eax,
0061B43C|.50 push eax
0061B43D|.B9 D0B46100 mov ecx, recorder.0061B4D0 ;username
0061B442|.BA E4B46100 mov edx, recorder.0061B4E4 ;user_info
0061B447|.8BC3 mov eax, ebx
0061B449|.8B38 mov edi, dword ptr ds:
0061B44B|.FF17 call dword ptr ds:
0061B44D|.68 F8B46100 push recorder.0061B4F8 ;regcode
0061B452|.8D45 F8 lea eax,
0061B455|.50 push eax
0061B456|.B9 F8B46100 mov ecx, recorder.0061B4F8 ;regcode
0061B45B|.BA E4B46100 mov edx, recorder.0061B4E4 ;user_info
0061B460|.8BC3 mov eax, ebx
0061B462|.8B38 mov edi, dword ptr ds:
0061B464|.FF17 call dword ptr ds:
0061B466|.8BC3 mov eax, ebx
0061B468|.E8 0787DEFF call recorder.00403B74
0061B46D|.E8 EE00DFFF call recorder.0040B560
0061B472|.83C4 F8 add esp, -8 ; /
0061B475|.DD1C24 fstp qword ptr ss: ; |Arg1 (8-byte)
0061B478|.9B wait ; |
0061B479|.8D55 F4 lea edx, ; |
0061B47C|.B8 08B56100 mov eax, recorder.0061B508 ; |yyyy-mm-dd
0061B481|.E8 621ADFFF call recorder.0040CEE8 ; \recorder.0040CEE8
0061B486|.8B4D F8 mov ecx,
0061B489|.8B55 FC mov edx,
0061B48C|.8BC6 mov eax, esi
0061B48E|.E8 A9FAFFFF call recorder.0061AF3C
0061B493|.84C0 test al, al
0061B495|.74 04 je short recorder.0061B49B //可改地方1
0061B497|.B3 01 mov bl, 1
0061B499|.EB 02 jmp short recorder.0061B49D
0061B49B|>33DB xor ebx, ebx //可改地方2
0061B49D|>33C0 xor eax, eax
0061B49F|.5A pop edx
0061B4A0|.59 pop ecx
0061B4A1|.59 pop ecx
0061B4A2|.64:8910 mov dword ptr fs:, edx
0061B4A5|.68 BFB46100 push recorder.0061B4BF
0061B4AA|>8D45 F4 lea eax,
0061B4AD|.BA 03000000 mov edx, 3
0061B4B2|.E8 1595DEFF call recorder.004049CC
0061B4B7\.C3 retn
0061B4B8 .^ E9 4B8EDEFF jmp recorder.00404308
0061B4BD .^ EB EB jmp short recorder.0061B4AA
0061B4BF .8BC3 mov eax, ebx //可改地方3
0061B4C1 .5F pop edi
0061B4C2 .5E pop esi
0061B4C3 .5B pop ebx
0061B4C4 .8BE5 mov esp, ebp
0061B4C6 .5D pop ebp
0061B4C7 .C3 retn
上面的三处每一处更改都可达到软件的爆破目的。
1.nop掉je
2.mov bl,1 或 mov al,1
3.mov al,1
最后一种,也是最麻烦的一种方法,要改0061B404五处调用的地方才能达到完美爆破。这个软件的算法我看了下,比较复杂吧(可能我基础不太好吧),用了好多知名的算法,其中含有大数运算,要分析出来,写注册机对我来说比较难,至于追码,软件采用的比较是非明文的,用加密后的密文进行的比较,这样追码是不太可能的。还有就是软件用到了浮点指令,我不太清楚浮点,以后还要加强学习。
这样改了以后,菜单栏上的软件注册按钮显示的注册框我感觉不好看,于是我就搜索所有的特征码,找到了这个关于的按钮0048CEC6,F7进,最后到了这里。
0061C75A|.83FA 01 cmp edx, 1 ;Switch (cases 1..3)
0061C75D|.75 19 jnz short recorder.0061C778
0061C75F|.A1 F4886400 mov eax, dword ptr ds: ;Case 1 of switch 0061C75A
0061C764|.8B00 mov eax, dword ptr ds:
0061C766|.E8 C5C4E7FF call recorder.00498C30 //关键1正常窗体
0061C76B|.A1 F4886400 mov eax, dword ptr ds:
0061C770|.8B00 mov eax, dword ptr ds:
0061C772|.E8 F9DBE5FF call recorder.0047A370
0061C777|.C3 retn
0061C778|>83FA 02 cmp edx, 2
0061C77B|.75 1A jnz short recorder.0061C797
0061C77D|.A1 34866400 mov eax, dword ptr ds: ;Case 2 of switch 0061C75A
0061C782|.8B00 mov eax, dword ptr ds:
0061C784|.E8 A7C4E7FF call recorder.00498C30 //关键2英文窗体
0061C789|.A1 34866400 mov eax, dword ptr ds:
0061C78E|.8B00 mov eax, dword ptr ds:
0061C790|.E8 DBDBE5FF call recorder.0047A370
0061C795|.EB 2B jmp short recorder.0061C7C2
0061C797|>83FA 03 cmp edx, 3
0061C79A|.75 0E jnz short recorder.0061C7AA
0061C79C|.A1 4C896400 mov eax, dword ptr ds: ;Case 3 of switch 0061C75A
0061C7A1|.8B00 mov eax, dword ptr ds:
0061C7A3|.E8 88C4E7FF call recorder.00498C30 //关键3未注册版只能转化前5分钟
0061C7A8|.EB 18 jmp short recorder.0061C7C2
0061C7AA|>A1 34866400 mov eax, dword ptr ds: ;Default case of switch 0061C75A
0061C7AF|.8B00 mov eax, dword ptr ds:
0061C7B1|.E8 7AC4E7FF call recorder.00498C30 //关键4英文窗体
0061C7B6|.A1 34866400 mov eax, dword ptr ds:
0061C7BB|.8B00 mov eax, dword ptr ds:
0061C7BD|.E8 AEDBE5FF call recorder.0047A370
0061C7C2\>C3 retn
感觉这几个窗体都没大用处。当然了,如果软件遇到软件菜单栏中的关于信息显示未注册的话,这样找关键点也是一种思路。
页:
[1]