花指令免杀

最近开始研究免杀技术,首先强烈推荐《黑客免杀攻防》一书,作者写的很接地气,非常有实战性的一本教材。我看了之后,对其中的一些思想和用到的技术比较有共鸣,是这段时间难得坚持看的一本书。

免杀中有一种花指令技术,意思就是将可执行文件反汇编,然后加入自己写的一串看似没有意义的,但是可以打乱执行顺序,从而不被杀毒软件捕获的一种技术。按照书中开始实战,但是发现有问题。每次用ollydbg加载可执行文件后会发现文件的首地址每次都发生变化,下面是第一次加载文件,ollydbg自动停在入口点上 ,地址是00FA178A:

下图是第二次加载文件,ollydbg自动停在入口点上 ,可以发现入口地址明显发生了变化。


 

入口地址的随机变化直接影响到了花指令能否正常使用,因为不管我们添加多少汇编代码进去,最后还是得跳转回到程序的原本入口地址的,如果不是一个固定的值的话,可以说这条路就走不下去了。后来突然想到我的操作系统是win7,是不是因为系统的安全特性导致的,记得以前在《0day安全:软件漏洞分析技术》中看到过一些,google发现果然是,微软称之地址随机化(ASLR),解决思路也很简单,因为win7地址随机化要能正常运行必须满足两个条件,其一操作系统支持(比如xp就不支持),其二,被添加花指令的程序在编译的时候就去掉这个选项(ASLR是个默认的编译安全选项),具体可以参考:http://www.freebuf.com/articles/system/15149.html?umynkbzrsrpldnrp

由于可执行文件是我自己写的,所以我很顺利的在编译属性中找到了这个编译选项,直接变为否即刻,见下图:


 

至此一个问题解决了,但是追求真理的过程永远不可能一帆风顺,接下去又碰到了个问题,但是我至今不知道为什么。问题是这样的,当我用ollydbg插入可执行代码,并保存回源文件后,第一次打开源文件会发现原本我修改的那些代码完全变了个样子,根本不是我插入的样子了,下图是我第一次插入的代码:


 

保存到可执行文件后,重新打开就变成了:


 

然后再次打开后,再重复同样的操作就没有问题了,虽然对花指令免杀的实战没有多大影响,最多是流程上多了一步,但我很想知道这个背后的原因,有哪位高人知道的望指教!

猜你喜欢

转载自mercurywin.iteye.com/blog/2028192