【I.C.K伴你一同成长第三期】人人都能破解
本脱文适合刚刚入门的朋友学习, 会一点的朋友 都可以直接Pass吧..因为我也是刚刚才入门的.PEID查壳 Microsoft Visual C++ 6.0无壳..
OD载入 最首先的当然是查看ASCII码了..
插件/超级字符参考/查找ASCII
超级字串参考,项目 22
地址=00401D0B
反汇编=push UltraDic.004370F4
文本字串=C:\regbanyet.dat
超级字串参考,项目 24
地址=00401DB0
反汇编=push UltraDic.004370D8
文本字串=非常感谢您的支持,注册成功!
超级字串参考,项目 25
地址=00401DE5
反汇编=push UltraDic.004370C0
文本字串=注册名或注册码不正确!
OK. 双击 非常感谢您的支持,注册成功! 并往上翻..来到 00401CAC >55 push ebpF2下断点 Shift +F9 运行
Ps: 注册是否成功取决于你输入的注册码于真注册码的比较是否相等, 那么当提示这个字符串的时候,在这里的上面必定有比较的地方(这个地方也就是破解的关键了.)
注意看堆栈..这里已经写出了真注册码: xxxxxxxxxxxxxxx
堆栈地址=0012EF2C, (ASCII "xxxxxxxxxxxxxx")
eax=0012EECC
00401CAC >55 push ebp
00401CAD .8D8C24 EC0000>lea ecx,dword ptr ss:
00401CB4 .889C34 4C0100>mov byte ptr ss:,bl
00401CBB .E8 F0010000 call UltraDic.00401EB0
00401CC0 .899C24 B40100>mov dword ptr ss:,ebx
00401CC7 .8DB424 840000>lea esi,dword ptr ss: ;获取假注册码 = 1111111111111
00401CCE .8D8424 480100>lea eax,dword ptr ss: ;获取真注册码 = xxxxxxxxxxxxxx
00401CD5 >8A10 mov dl,byte ptr ds:
00401CD7 .8ACA mov cl,dl
00401CD9 .3A16 cmp dl,byte ptr ds:
00401CDB .75 1C jnz short UltraDic.00401CF9
00401CDD .3ACB cmp cl,bl
00401CDF .74 14 je short UltraDic.00401CF5
00401CE1 .8A50 01 mov dl,byte ptr ds:
00401CE4 .8ACA mov cl,dl
00401CE6 .3A56 01 cmp dl,byte ptr ds:
00401CE9 .75 0E jnz short UltraDic.00401CF9
00401CEB .83C0 02 add eax,2
00401CEE .83C6 02 add esi,2
00401CF1 .3ACB cmp cl,bl
00401CF3 .^ 75 E0 jnz short UltraDic.00401CD5
00401CF5 >33C0 xor eax,eax
00401CF7 .EB 05 jmp short UltraDic.00401CFE
00401CF9 >1BC0 sbb eax,eax
00401CFB .83D8 FF sbb eax,-1
00401CFE 3BC0 cmp eax,ebx ;用ebx 减去 eax
00401D00 0F85 DF000000 jnz UltraDic.00401DE5 ;若相减不等于0就跳相错误, 反之不跳走向正确.. <==则可以把jnz改为 jz 或者 nop掉就可以了.
00401D06 .68 01100000 push 1001
00401D0B .68 F4704300 push UltraDic.004370F4 ;c:\regbanyet.dat <== 保存注册信息
00401D10 .8D4C24 18 lea ecx,dword ptr ss:
00401D14 .E8 8FEF0100 call UltraDic.00420CA8
00401D19 .8D7C24 20 lea edi,dword ptr ss:
00401D1D .83C9 FF or ecx,FFFFFFFF
00401D20 .33C0 xor eax,eax
00401D22 .B2 0D mov dl,0D
00401D24 .F2:AE repne scas byte ptr es:
00401D26 .F7D1 not ecx
00401D28 .49 dec ecx
00401D29 .8DBC24 840000>lea edi,dword ptr ss:
00401D30 .C68424 B40100>mov byte ptr ss:,1
00401D38 .88540C 20 mov byte ptr ss:,dl
00401D3C .41 inc ecx
00401D3D .C6440C 20 0Amov byte ptr ss:,0A
00401D42 .885C0C 21 mov byte ptr ss:,bl
00401D46 .83C9 FF or ecx,FFFFFFFF
00401D49 .F2:AE repne scas byte ptr es:
00401D4B .F7D1 not ecx
00401D4D .49 dec ecx
00401D4E .8D7C24 20 lea edi,dword ptr ss:
00401D52 .88940C 840000>mov byte ptr ss:,dl
00401D59 .41 inc ecx
00401D5A .C6840C 840000>mov byte ptr ss:,0A
00401D62 .889C0C 850000>mov byte ptr ss:,bl
00401D69 .83C9 FF or ecx,FFFFFFFF
00401D6C .F2:AE repne scas byte ptr es:
00401D6E .F7D1 not ecx
00401D70 .49 dec ecx
00401D71 .8D4424 20 lea eax,dword ptr ss:
00401D75 .51 push ecx ; /Arg2
00401D76 .50 push eax ; |Arg1
00401D77 .8D4C24 18 lea ecx,dword ptr ss: ; |
00401D7B .E8 DCF10100 call UltraDic.00420F5C ; \UltraDic.00420F5C
00401D80 .8DBC24 840000>lea edi,dword ptr ss:
00401D87 .83C9 FF or ecx,FFFFFFFF
00401D8A .33C0 xor eax,eax
00401D8C .F2:AE repne scas byte ptr es:
00401D8E .F7D1 not ecx
00401D90 .49 dec ecx
00401D91 .51 push ecx ; /Arg2
00401D92 .8D8C24 880000>lea ecx,dword ptr ss: ; |
00401D99 .51 push ecx ; |Arg1
00401D9A .8D4C24 18 lea ecx,dword ptr ss: ; |
00401D9E .E8 B9F10100 call UltraDic.00420F5C ; \UltraDic.00420F5C
00401DA3 .6A 03 push 3 ; /FileAttributes = READONLY|HIDDEN
00401DA5 .68 F4704300 push UltraDic.004370F4 ; |c:\regbanyet.dat
00401DAA .FF15 8CB24200 call dword ptr ds:[<&KERNEL32.SetFileAtt>; \SetFileAttributesA
00401DB0 .68 D8704300 push UltraDic.004370D8 ;非常感谢您的支持,注册成功!
00401DB5 .8D8C24 EC0000>lea ecx,dword ptr ss:
00401DBC .E8 AF010000 call UltraDic.00401F70
00401DC1 .8D4C24 10 lea ecx,dword ptr ss:
00401DC5 .889C24 B40100>mov byte ptr ss:,bl
00401DCC .E8 77EF0100 call UltraDic.00420D48
00401DD1 .8BCD mov ecx,ebp
00401DD3 .E8 44B50100 call UltraDic.0041D31C
00401DD8 .C78424 B40100>mov dword ptr ss:,3
00401DE3 .EB 1C jmp short UltraDic.00401E01
00401DE5 >68 C0704300 push UltraDic.004370C0 ;注册名或注册码不正确!
00401DEA .8D8C24 EC0000>lea ecx,dword ptr ss:
00401DF1 .E8 7A010000 call UltraDic.00401F70
00401DF6 .C78424 B40100>mov dword ptr ss:,2
00401E01 >8D8C24 440100>lea ecx,dword ptr ss:
00401E08 .E8 CCEB0100 call UltraDic.004209D9
00401E0D .8D8C24 E80000>lea ecx,dword ptr ss:
00401E14 .C78424 B40100>mov dword ptr ss:,-1
00401E1F .E8 43AE0100 call UltraDic.0041CC67
00401E24 >8B8C24 AC0100>mov ecx,dword ptr ss:
00401E2B .5F pop edi
00401E2C .5E pop esi
00401E2D .5D pop ebp
00401E2E .5B pop ebx
00401E2F .64:890D 00000>mov dword ptr fs:,ecx
00401E36 .81C4 A8010000 add esp,1A8
00401E3C .C3 retn
Ps: 其实破解的关键在于找到关键Call以及跳转.
这里只是一个最简单的破解思路, 希望大家能琢磨透彻 举一反三.. 本帖最后由 feiligood 于 2010-1-18 13:42 编辑
下来学习 在破破在说啊
一载入就跑起来了、同学如何整啊 插件在那里下谢谢啊 楼主虽然分析的不是太完全,但是分享精神很好!继续努力!
页:
[1]