好友
阅读权限10
听众
最后登录1970-1-1
|
wzb
发表于 2011-6-23 10:54
前几天,我在求助里看到了一个CreakMe,文件名挺有意思,《违章建筑拆除宝典》,我还真把它当成城管什么了。
废话不说了,这个CreakMe加的是UPX的壳,可能是UPX的变种吧,PEID查不出来,并且加入了大量的花指令
下断点bp LoadLibraryA,返回后到这里了
00C131A4 FF55 10 call dword ptr [ebp+10] ; LoadLibraryA
00C131A7 E8 02000000 call 00C131AE
00C131AC 1C B9 sbb al, 0B9
00C131AE 872C24 xchg dword ptr [esp], ebp
00C131B1 8DAD 46710000 lea ebp, dword ptr [ebp+7146]
00C131B7 872C24 xchg dword ptr [esp], ebp
00C131BA C3 retn
这里就是花指令了,你如果想F8过00C131A7,那么就跑飞了,应该F7进入。
因为OD的F8的原理是在下一条指令处(00C131AC)下CC断点,然后run。
但是这个call 00C131AE把00C131AC压入堆栈后又给它加了7146,
使得返回地址不是那个CC断点处(其实那个地址根本就不执行),当然要跑空了
刚开始我也没太在意F7就能过去的,往后边看有很多类似的语句,并且还是在IAT表的解码循环里
这下完了,如果想F4跳出循环根本不行,原理是因为OD的F4是下一个硬件断点,然后就run到那里
然后可想而知,跑飞了。
其实这个花指令很容易去处,一个jmp完事,它并没有动其它寄存器
在循环里搜索类似指令,全部改了以后就可以F4跳出循环了。
其实这个call就是一个变形的jmp,我想如果在call中再加入一点东西,
修改一下寄存器的值(类似于一个加密过程),使得你不能轻易的jmp,
那么这一定是一个很好的花指令,壳的强度将大大提高
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|