发一个难度小一点的CrackME
无壳无花无V无暗装无检测调试器无恶意代码大神们快点虐,成功后有信息框提示,仅仅有一个跳
pnccm 发表于 2015-7-11 00:19
int3那个是如何实现的00401DD4|> \58 pop eax
00401DD4|> \58 ...
在XP下就不会这样了,VEH异常处理
好像学破解也有一个 赖哥 发表于 2015-7-8 21:49
好像学破解也有一个
都是同一个 这CM,明天就火了 凉游浅笔深画眉 发表于 2015-7-10 23:48
这CM,明天就火了
有没有录制视频啊,错过珈蓝老师的讲解很遗憾啊,有录制就分享下,谢谢老师。{:301_971:} int3那个是如何实现的00401DD4|> \58 pop eax
00401DD4|> \58 pop eax
00401DD5|.A3 94244B00 mov dword ptr ds:,eax ; 1-
00401DDA|.B8 01000101 mov eax,0x1010001
00401DDF|.CC int3 ;这个是怎么实现跳转的?
00401DE0|.8BE5 mov esp,ebp
00401DE2|.5D pop ebp
00401DE3\.C3 retn
F7跟进去。在没找打关键位置前是跳转到这里来的006A99F1 B8 C81B4000 mov eax,0x401BC8 ; 就会跳到这里
006A99F6 FFE0 jmp eax
006A99F8 0000 add byte ptr ds:,al
006A99FA 0000 add byte ptr ds:,al
006A99FC 0000 add byte ptr ds:,al
006A99FE 0000 add byte ptr ds:,al
如果找到关键跳转的话就能回溯到这里下断点。然后到int3后就能跳转到这里。这是如何实现的呢?
00401BD4 .56 push esi
00401BD5 .57 push edi
00401BD6 .53 push ebx
00401BD7 .8D7424 10 lea esi,dword ptr ss:
00401BDB .83EC 04 sub esp,0x4
00401BDE .8BFC mov edi,esp
00401BE0 .FC cld
00401BE1 .B9 01000000 mov ecx,0x1
00401BE6 .F3:A5 rep movs dword ptr es:,dword ptr ds>
00401BE8 .E8 42F5FFFF call 123.0040112F
00401BED .5B pop ebx
00401BEE .5F pop edi
00401BEF .5E pop esi
00401BF0 .C2 0400 retn 0x4
没在代码3设置断点前int3处单步是直接运行过去。来到到代码2的地方。如果有在代码3处下断点却能断下来。楼主能说说原理吗?
本帖最后由 ollydebug 于 2015-7-11 17:18 编辑
@XKQ @珈蓝夜雨 这个CM类似于去年CM大赛@Poner 的那个,是利用VEH的CM。
按钮事件断下后来到这里。
00401C90/.55 push ebp
00401C91|.8BEC mov ebp,esp
00401C93|.81EC 14000000 sub esp,0x14
00401C99|.68 00000000 push 0x0
00401C9E|.BB 807C4000 mov ebx,cracked.00407C80
00401CA3|.E8 B3550000 call cracked.0040725B
00401CA8|.83C4 04 add esp,0x4
00401CAB|.68 01030080 push 0x80000301
00401CB0|.6A 00 push 0x0
00401CB2|.50 push eax
00401CB3|.68 01000000 push 0x1
00401CB8|.BB C0774000 mov ebx,cracked.004077C0
00401CBD|.E8 99550000 call cracked.0040725B
00401CC2|.83C4 10 add esp,0x10
00401CC5|.8945 F8 mov ,eax
00401CC8|.68 05000080 push 0x80000005
00401CCD|.6A 00 push 0x0
00401CCF|.8B45 F8 mov eax,
00401CD2|.85C0 test eax,eax
00401CD4|.75 05 jnz short cracked.00401CDB
00401CD6|.B8 A2AC4800 mov eax,cracked.0048ACA2
00401CDB|>50 push eax
00401CDC|.68 01000000 push 0x1
00401CE1|.B8 02000000 mov eax,0x2
00401CE6|.BB D03D4600 mov ebx,cracked.00463DD0
00401CEB|.E8 7D550000 call cracked.0040726D
00401CF0|.83C4 10 add esp,0x10
00401CF3|.8945 F4 mov ,eax
00401CF6|.8B5D F8 mov ebx,
00401CF9|.85DB test ebx,ebx
00401CFB|.74 09 je short cracked.00401D06
00401CFD|.53 push ebx
00401CFE|.E8 52550000 call cracked.00407255
00401D03|.83C4 04 add esp,0x4
00401D06|>6A FF push -0x1
00401D08|.6A 08 push 0x8
00401D0A|.68 5E1C0116 push 0x16011C5E
00401D0F|.68 5D1C0152 push 0x52011C5D
00401D14|.E8 5A550000 call cracked.00407273
00401D19|.83C4 10 add esp,0x10
00401D1C|.8945 F0 mov ,eax
00401D1F|.8B45 F4 mov eax,
00401D22|.50 push eax
00401D23|.FF75 F0 push
00401D26|.E8 C8FEFFFF call cracked.00401BF3
00401D2B|.83C4 08 add esp,0x8
00401D2E|.83F8 00 cmp eax,0x0
00401D31|.B8 00000000 mov eax,0x0
00401D36|.0F94C0 sete al
00401D39|.8945 EC mov ,eax
00401D3C|.8B5D F0 mov ebx,
00401D3F|.85DB test ebx,ebx
00401D41|.74 09 je short cracked.00401D4C
00401D43|.53 push ebx
00401D44|.E8 0C550000 call cracked.00407255
00401D49|.83C4 04 add esp,0x4
00401D4C|>8B5D F4 mov ebx,
00401D4F|.85DB test ebx,ebx
00401D51|.74 09 je short cracked.00401D5C
00401D53|.53 push ebx
00401D54|.E8 FC540000 call cracked.00407255
00401D59|.83C4 04 add esp,0x4
00401D5C|>837D EC 00 cmp ,0x0
00401D60|.0F84 05000000 je cracked.00401D6B
00401D66|.E8 79000000 call cracked.00401DE4
00401D6B|>6A FF push -0x1
00401D6D|.6A 08 push 0x8
00401D6F|.68 5E1C0116 push 0x16011C5E
00401D74|.68 5D1C0152 push 0x52011C5D
00401D79|.E8 F5540000 call cracked.00407273
00401D7E|.83C4 10 add esp,0x10
00401D81|.8945 FC mov ,eax
00401D84|.68 04000080 push 0x80000004
00401D89|.6A 00 push 0x0
00401D8B|.8B45 FC mov eax, ;cracked.00401C90
00401D8E|.85C0 test eax,eax
00401D90|.75 05 jnz short cracked.00401D97
00401D92|.B8 DAAF4800 mov eax,cracked.0048AFDA
00401D97|>50 push eax
00401D98|.68 01000000 push 0x1
00401D9D|.BB C0774000 mov ebx,cracked.004077C0
00401DA2|.E8 B4540000 call cracked.0040725B
00401DA7|.83C4 10 add esp,0x10
00401DAA|.8945 F8 mov ,eax
00401DAD|.8B5D FC mov ebx, ;cracked.00401C90
00401DB0|.85DB test ebx,ebx
00401DB2|.74 09 je short cracked.00401DBD
00401DB4|.53 push ebx
00401DB5|.E8 9B540000 call cracked.00407255
00401DBA|.83C4 04 add esp,0x4
00401DBD|>8B45 F8 mov eax,
00401DC0|.50 push eax
00401DC1|.8B1D 94244B00 mov ebx,dword ptr ds:
00401DC7|.85DB test ebx,ebx
00401DC9|.74 09 je short cracked.00401DD4
00401DCB|.53 push ebx
00401DCC|.E8 84540000 call cracked.00407255
00401DD1|.83C4 04 add esp,0x4
00401DD4|>58 pop eax ;cracked.0041F240
00401DD5|.A3 94244B00 mov dword ptr ds:,eax
00401DDA|.B8 01000101 mov eax,0x1010001
00401DDF|.CC int3
00401DE0|.8BE5 mov esp,ebp
00401DE2|.5D pop ebp ;cracked.0041F240
00401DE3\.C3 retn
其中还会有一个假码来迷惑你,看到int3后我就知道应该是VEH。他前面有个常量,所有常量搜索1010001即可到达关键位置,经过分析他下面的一个跳转即为关键跳,nop掉就ok。
0040176E .813B 01000101 cmp dword ptr ds:,0x1010001
00401774 .0F85 57020000 jnz cracked.004019D1
0040177A .68 02000080 push 0x80000002
0040177F .6A 00 push 0x0
00401781 .68 01000000 push 0x1
00401786 .68 01030080 push 0x80000301
0040178B .6A 00 push 0x0
0040178D .68 30000000 push 0x30
00401792 .68 02000000 push 0x2
00401797 .B8 01000000 mov eax,0x1
0040179C .BB B03B4600 mov ebx,cracked.00463BB0
004017A1 .E8 C75A0000 call cracked.0040726D
004017A6 .83C4 1C add esp,0x1C
004017A9 .A3 90244B00 mov dword ptr ds:,eax ;cracked.00401BD4
004017AE .B8 88AC4800 mov eax,cracked.0048AC88
004017B3 .33C9 xor ecx,ecx
004017B5 .85C0 test eax,eax ;cracked.00401BD4
004017B7 .74 03 je short cracked.004017BC
004017B9 .8B48 04 mov ecx,dword ptr ds:
004017BC >51 push ecx
004017BD .83C0 08 add eax,0x8
004017C0 .50 push eax ;cracked.00401BD4
004017C1 .A1 94244B00 mov eax,dword ptr ds:
004017C6 .33DB xor ebx,ebx ;ntdll.7C99D5E0
004017C8 .85C0 test eax,eax ;cracked.00401BD4
004017CA .74 03 je short cracked.004017CF
004017CC .8B58 04 mov ebx,dword ptr ds:
004017CF >83C0 08 add eax,0x8
004017D2 .50 push eax ;cracked.00401BD4
004017D3 .3BD9 cmp ebx,ecx
004017D5 .B8 01000000 mov eax,0x1
004017DA .75 0A jnz short cracked.004017E6
004017DC .48 dec eax ;cracked.00401BD4
004017DD .85C9 test ecx,ecx
004017DF .74 05 je short cracked.004017E6
004017E1 .E8 9DF8FFFF call cracked.00401083
004017E6 >83C4 0C add esp,0xC
004017E9 .85C0 test eax,eax ;cracked.00401BD4
004017EB .90 nop ;关键跳,nop掉
004017EC .90 nop
004017ED .90 nop
004017EE .90 nop
004017EF .90 nop
004017F0 .90 nop
大神请问我分析的对么。时间紧迫只能简单写写了。
ollydebug 发表于 2015-7-11 17:10
@XKQ @珈蓝夜雨 这个CM类似于去年CM大赛@Poner 的那个,是利用SEH的CM。
按钮事件断下后来到这里。
确实是这样的,不过我是用VEH的(好像也没什么差别),我也没想到常量会泄露关键位置,先学习一下了
页:
[1]
2