这里以...
我们展开,右键【删除指针数据】,现在全部都是有效的了。
5,修复已脱壳的Dumped....
(Get
Impor
<1>重建输入表常规壳(如UPX,北斗等),然后脱壳后修复时重建输入表
<2>转移输入表函数『这次要讲的重点,具有代表性』*
<3>加壳(最好是些猛壳之类的,如ASProtect等,这个很灵活,要多尝试!)
以上只是理论,要运用到实际上来还是有一定的差距,下面就利用第二种方法以一具体实例演示下,至于其它的两种呢,就留给大家自己研究吧!是的,这种方法很典型,所以本次屏幕录像就以它为重点讲解并演示。希望大家能掌握好!
首先让瑞星来查杀下,可以看到,瑞星是查杀的(提示信息为黑客工具,我们忽略)。
为了节省时间,特征码在做录像之前我已经定位好了(相信大家都会定位特征码吧)。特征处如下:
00001EAE <特征处>『目标程序是s扫描器,一款命令行下使用的扫描器,很强大!』
说下本次演示使用到的工具:
C32ASM,Lordpe,计算器(就这三样)
具体步骤:
A.使用C32ASM打开目标程序,找到特征处的输入表函数,复制下函数名(并把此处函数名用90填充掉),记录下起始地址,找到移动地址(我们把这个输入表函数向空白处移动『一般往下移动』,尽量移动远 点,这里我们移动到最底部。)。把这个输入表函数GetProcAddress名复制到移动处后,另存一份文件为exe.exe。
(注意:GetProcAddress就是这个输入表函数,不能修改字符大小写的,得转移下。)
B.使用计算器计算移动的大小,注意是16进制计算:(看C32ASM底部提示)移动『十进制』->334字节
『十六进制』->14E
用瑞星查杀看看,是不被杀的,但是不能运行,看错误提示,那是输入表函数没处理好的结果!
C.使用Lordpe打开目标程序exe.exe,找到目录,导入表,找到第一个动态链接库,修改第二个输入表函数的ThunkVaule,右键编辑就行。
原来Thunk值:0001C0A0。而我们把这个函数向下移动了14E(十六进制)字节,那么应该加上计算下
0001C0A0+14E=1C1EE则Thunk值变为:1C1EE。编辑进去!填写上API名称,即是那输入表函数名:
GetProcAddress。保存下就OK了。
一般我们碰到的输入表函数特征码往往都是内存特征码,我一般可以采用三种方式来处理这种特征码。第一种方法就是函数位置变化发,也称输入表函数移位法,顾名思义,就是把原特征码所在的输入表函数移动到一个新位置,然后在用LordPE这个工具将函数位置重新设定,文件便不会失去原有功能,不过不一定把函数移动到任何位置都可以运行,这个地址是需要尝试的(经验很重要)。一般用这种方法修改特征码后,都要校验和,否则不能正常运行。
第二种方法就是重建输入表法,因为特征码所在位置是输入表函数上,所以我们可以给待“免杀”文件加上一个加密输入表的壳,然后我们再脱掉这个壳,紧接着重建输入表,经过重建输入表后,此处的特征码就没有了,我强烈推荐使用这种方法,因为这种方法对于多处输入表函数特征码“免杀”的效果很好,一次脱壳就可以“免杀”所有输入表函数特征码,不过使用这一方法的前提是自己要有一定的脱壳功底。
第三种方法是这三种方法中最复杂的,也是最简单的。那就是简单添加入口的方法。说这种方法是最难的是因为想要手工实现此过程及其繁琐,需要“免杀”制作人员对汇编和PE结构有较深的了解。说其简单,是因为我们可以用一个很简单的工具实现,这个工具就是大名鼎鼎的MaskPE了,MaskPE中的那个“TYPE 3”选项的意思就是简单添加入口,使用这个选项就可以实现输入表特征码的修改了。尤其是对瑞星的内存查杀,特别有效。这种方法也可以应付多处输入表函数特征码的修改,不过相比于上一种方法,我不是很推荐使用这种方法,因为用这种方法处理后,文件就不容易被其他的方法(如加壳、加花,改特征码)处理了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)