一个简单的花指令的去处
前几天,我在求助里看到了一个CreakMe,文件名挺有意思,《违章建筑拆除宝典》,我还真把它当成城管什么了。废话不说了,这个CreakMe加的是UPX的壳,可能是UPX的变种吧,PEID查不出来,并且加入了大量的花指令
下断点bp LoadLibraryA,返回后到这里了
00C131A4 FF55 10 call dword ptr ;LoadLibraryA
00C131A7 E8 02000000 call 00C131AE
00C131AC 1C B9 sbb al, 0B9
00C131AE 872C24 xchg dword ptr , ebp
00C131B1 8DAD 46710000 lea ebp, dword ptr
00C131B7 872C24 xchg dword ptr , 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,
那么这一定是一个很好的花指令,壳的强度将大大提高
给个连接地址,看看去 好的,,学习了 yes,楼主最好把原文件也贴出来。 回复 fcwr007 的帖子
这是那个CreakMe,看你能不能从一堆call中走出来 牛人。真想跟你8师 高手高手高手 有心让你头晕。你怎么能不晕。。 高人啊!学习了。。 ··顶下再说别的··
页:
[1]