1625-5 王子昂 总结《2018年3月4日》 【连续第519天总结】
A. 抵御静态分析(3)
B.
信息隐藏
为了提高界面的友好度,大多数软件都会在大量地方显示提示语。
而这些提示语由于特殊性和特征明显,经常被作为静态分析的突破口。(例如IDA的Shift+F12,OD的智能搜索字符串233)
破解者循着破解点的字符串即可直接找到破解点的代码,进行操作。
为了防范这一点,许多加壳、混淆工具会自动加密所有字符串。
在编写的时候,也可以自行进行加密字符串。
即使是简单的ascii+1,也可以使得字符串变得完全不可读
更复杂的可以使用一些函数来处理,使每个字符串都不尽相同,增加破解时的复杂度
多态变形技术
多态技术往往意味着它会把核心代码进行编码,然后生成一个复杂的解码器,在运行的时候对其解码。
变形则是把一段代码重新编码,虽然仍然使用x86指令集,但是例如”add eax, 5”可能会被换成等价的5个”inc eax”,并且可以用jmp打乱代码的顺序。
诸如此类的变换使代码迅速膨胀,因此注重小体积的病毒并不过多地用变形,而在壳中可以不去关心体积。Themida壳保护一个几KB的小文件会膨胀到将近2MB。
尽量地将代码变形,可以很好地干扰分析人员。
变形引擎编写较为困难,因为它需要一个反汇编引擎,还要能对代码块进行分析。
要想还原变形,就必须写一个相应的收缩程序(Shrinker),这也同样需要一个反汇编引擎。
在代码中插入的数据一致是所有反汇编引擎头疼的东西,即使是IDA也没有把握区分出谁是数据谁是代码。
变形引擎主要来自病毒,VX Heaven(http://vx.netlux.org)上有非常多的病毒资料,几乎所有的病毒引擎都可以下载。
C. 明日计划
文件完整性校验