• 标 题:FI原理 (1千字)
  • 作 者:娃娃[CCG]
  • 时 间:2001-10-22 19:28:24
  • 链 接:http://bbs.pediy.com

一般来说在不通过载入的情况下判断文件的类型只有两种
第一是 通过判断扩展名  这个谁都会 而且通过扩展名也不可能判断出是什么东西加壳  所以这一项基本排除
第二就是特征码判断  举个例子来说 比如一个软件使用UPX加壳 那么他的区段名称必然是UPX0 UPX1 UPX2…………  只要写一个软件读取EXE文件的区段名称就可以轻易的判断出是使用什么东西加壳  而且现在使用大多数加壳软件加壳后的文件都会有自己独有的区段名称  比如上面的UPX ASP(ASPACK加壳) PEC(PECompact) .yc(Yode) 等等 就不一一列举了
但是加壳的人都不是傻子 用这种方法加壳后的文件只要通过单一点修改区段头信息就可以预防被检测了 所以FI采用的也不是这种方法检测(有可能个别类型的壳出外)
因此得出的结论就是它要通过加壳后程序固有的一段特征代码来验证 这段特征代码一定是不会改变的 不信你试试用UPX加壳后  无论你将它的区段改成什么都无法逃过FI的眼睛…………
或者你用字符串替换器查找脱壳后的FI  你就会发现有很多看不懂得ASCII字符 这些大多是加壳程序的特征代码  你在使用这种加壳程序加壳后都会在程序中找到这段特征代码 ^_^

至于逃过检测的方法………… 据我知道有三种
一种是通过SMC技术 让加壳后的程序改变 这是一个有效的方法 因为FI所检测的特征码大多是在壳的第一个入口之前 所以SMC可以改变程序的代码 即躲过FI的检测  如果你使用过冰天雪地以前制作过的SMC破解的ASPACK2.0的话 你就会体会到了  它加壳后的程序即无法使用UnASPACK脱壳 也无法是FI检测!!  不过会SMC技术的Cracker很少 而且浪费时间 所以不推荐使用
第二种是通过TOPO这个软件  在加壳后使用它创建一个新的区段 这样对某些测试工具有效 比如language ………… 在FI下也对有些壳有效!而且这种方法还可以导致在使用W32dasm反汇编的时候产生非法操作!
第二种方法呢就简单了  呵呵 就是~~~~~~~ 打死FI的作者 呵呵 就没有升级了  哈哈