论文部分内容阅读
记录输入表信息
狐狸尾巴终于露出来了,原来这小子是找我帮忙啊,这就是“文艺青年”典型的特点。我告诉他说:“现在的杀毒软件,主要还是通过特征码来进行定位。但是这个特征码定位在什么地方,每个杀毒软件都有自己的定位方式。比如有的定位在程序的入口点,而有的则定位在程序的输入表。正是由于定位在这些非常重要的地方,所以一修改就会对程序内部进行保护,这样木马服务端程序无法运行也就是很正常的事。”于是我让朋友马上到我的家里,这样才可以实地对他进行讲解。
首先配置一个全新的木马服务端程序,如果木马拥有没有配置信息的服务端文件,也可以对这个服务端文件直接进行免杀操作。接着,运行查壳工具PEiD来查看输入表的位置,点击“文件”选项后面的“...”按钮,在弹出的窗口选择配置的木马服务端程序,这样PEiD就可以自动分析出木马服务端程序的相关信息(如图1)。然后点击“子系统”旁边的选项按钮,获得木马服务端程序文件的PE信息内容。记录下“目录信息”中“导入表”这项里面“RVA”和“大小”选项中的数值,即000A8000和000033A2就可以了(如图2)。
朋友这时居然脑残的问:“记录这个有什么用啊?”我忿忿地说:“当然有用,没有用的话我操作它干嘛!”接着运行系统中的计算器程序,点击“查看”菜单中的“程序员”命令,这样计算器程序就换了一种显示方式。这里我对朋友说:“由于000033A2是一个十六进制的数值,所以首先选择窗口中的‘十六进制’这个选项。再将000033A2这个信息粘贴到输入框里面,然后再选择窗口中的‘十进制’这个选项(如图3)。这样这个数值就会显示为十进制的13218,这说明输入表的代码拥有13218个字节的内容。”
重新写入输入表
这时我提醒朋友:“现在我们并不要马上退出C32Asm软件,因为我们需要寻找一处新的输入表地址。我们就在以前的输入表地址下面,找到一个全新的输入表信息的输入地址,比如我们这里就选择000B9B60这个地址。”然后重新运行“IAT重建工具”软件,同样点击窗口下方的“选择文件”按钮,在弹出的窗口选择刚刚删除了输入表代码的服务端程序。这时我们可以看到“IAT重建工具”软件中,所有选项信息的内容都是空白的。于是在“RVA转换”中的“文件地址”输入框中,设置刚刚找到的输入表的新地址信息(即000B9B60),这样重建工具就会自动将其他的选项的数值显示出来(如图8)。
这里,我指着软件自动生成的其他选项说:“我们需要记下‘RVA地址’这个选项,因为以后重新写入输入表信息会用到它的。”于是我们马上点击窗口下方的“重建IAT”按钮,在弹出的窗口选择最早保存的服务端IAT信息。这时软件会自动弹出一个“重建引入表”的对话框,将刚刚记录的“RVA地址”中的信息粘贴到里面,最后再点击对话框中的“确定”按钮就可以了(如图9)。看我这么快就操作完成了,朋友半信半疑的说:“就这么几步就完成啦?”
我指着操作完成的“IAT重建工具”主界面对他说:“如果在软件界面的‘DLL名称’中看到KERNEL32.DLL这项,这样就说明服务端程序的输入表已经重建完成了。如果在‘DLL名称’里面显示的都是乱码,就说明服务端程序的输入表没有重建成功。既然你已经来了,我就再免费送你一条技巧。比如你在使用了其他免杀方法成功以后,最好再使用这个方法对输入表进行重建,这样就相当于对免杀的服务端程序进行了二度保护。”朋友一听赞许道:“我就知道你这个2B青年可不是白当的。”
狐狸尾巴终于露出来了,原来这小子是找我帮忙啊,这就是“文艺青年”典型的特点。我告诉他说:“现在的杀毒软件,主要还是通过特征码来进行定位。但是这个特征码定位在什么地方,每个杀毒软件都有自己的定位方式。比如有的定位在程序的入口点,而有的则定位在程序的输入表。正是由于定位在这些非常重要的地方,所以一修改就会对程序内部进行保护,这样木马服务端程序无法运行也就是很正常的事。”于是我让朋友马上到我的家里,这样才可以实地对他进行讲解。
首先配置一个全新的木马服务端程序,如果木马拥有没有配置信息的服务端文件,也可以对这个服务端文件直接进行免杀操作。接着,运行查壳工具PEiD来查看输入表的位置,点击“文件”选项后面的“...”按钮,在弹出的窗口选择配置的木马服务端程序,这样PEiD就可以自动分析出木马服务端程序的相关信息(如图1)。然后点击“子系统”旁边的选项按钮,获得木马服务端程序文件的PE信息内容。记录下“目录信息”中“导入表”这项里面“RVA”和“大小”选项中的数值,即000A8000和000033A2就可以了(如图2)。
朋友这时居然脑残的问:“记录这个有什么用啊?”我忿忿地说:“当然有用,没有用的话我操作它干嘛!”接着运行系统中的计算器程序,点击“查看”菜单中的“程序员”命令,这样计算器程序就换了一种显示方式。这里我对朋友说:“由于000033A2是一个十六进制的数值,所以首先选择窗口中的‘十六进制’这个选项。再将000033A2这个信息粘贴到输入框里面,然后再选择窗口中的‘十进制’这个选项(如图3)。这样这个数值就会显示为十进制的13218,这说明输入表的代码拥有13218个字节的内容。”
重新写入输入表
这时我提醒朋友:“现在我们并不要马上退出C32Asm软件,因为我们需要寻找一处新的输入表地址。我们就在以前的输入表地址下面,找到一个全新的输入表信息的输入地址,比如我们这里就选择000B9B60这个地址。”然后重新运行“IAT重建工具”软件,同样点击窗口下方的“选择文件”按钮,在弹出的窗口选择刚刚删除了输入表代码的服务端程序。这时我们可以看到“IAT重建工具”软件中,所有选项信息的内容都是空白的。于是在“RVA转换”中的“文件地址”输入框中,设置刚刚找到的输入表的新地址信息(即000B9B60),这样重建工具就会自动将其他的选项的数值显示出来(如图8)。
这里,我指着软件自动生成的其他选项说:“我们需要记下‘RVA地址’这个选项,因为以后重新写入输入表信息会用到它的。”于是我们马上点击窗口下方的“重建IAT”按钮,在弹出的窗口选择最早保存的服务端IAT信息。这时软件会自动弹出一个“重建引入表”的对话框,将刚刚记录的“RVA地址”中的信息粘贴到里面,最后再点击对话框中的“确定”按钮就可以了(如图9)。看我这么快就操作完成了,朋友半信半疑的说:“就这么几步就完成啦?”
我指着操作完成的“IAT重建工具”主界面对他说:“如果在软件界面的‘DLL名称’中看到KERNEL32.DLL这项,这样就说明服务端程序的输入表已经重建完成了。如果在‘DLL名称’里面显示的都是乱码,就说明服务端程序的输入表没有重建成功。既然你已经来了,我就再免费送你一条技巧。比如你在使用了其他免杀方法成功以后,最好再使用这个方法对输入表进行重建,这样就相当于对免杀的服务端程序进行了二度保护。”朋友一听赞许道:“我就知道你这个2B青年可不是白当的。”