恶意软件反调试分析的对抗技术
副问题[/!--empirenews.page--]
在本文中,我们会先容恶意软件怎样操作一个打包的Exe原始进口点来诱骗布局化非常处理赏罚措施(SEH)。 在此,我们会拿一个名为sample.exe的恶意软件样本举办详细讲授,起首将其加载到ExeInfo,举办打包。 留意进口点是28E8,另外,我们开始调试它的时辰,为了确保不被ASLR搜查到并停止稍后呈现的动态加载,看看DLL的特点,就可以看到这个DLL不能移动。 此刻将该sample.exe示例加载到OllyDBG中,它向我们提供了一个信号,即代码可以被压缩,以下是我们之前看到的。 一旦样本加载到OllyDBG中,它将开始在Unpacker代码中运行,因为手动慢慢执行此代码将必要许多时刻,以是我们会很也许错过OEP,下面就说明一下我们已经执行的这几行代码。 有一些指向SHE布局的FS寄存器,在进一步相识之前,必要相识Windows是怎样找到FS寄存器地点的。FS寄存器指向线程信息块(TIB),其包括有关当前正在运行的线程的信息,而且指向SHE链的出发点的指针位于TIB的偏移量0x00处。 此刻,我们来看看布局非常处理赏罚措施。 单个SEH记录由仓库上的两个元素构成,此进程称为_Exception_Registration。组成SEH记录的两个要素是: 1.SEH处理赏罚函数; 2.PTR到下一个SEH记录; 这样才气形成SEH链布局。 一旦代码被加载,它将519870复制到EAX并将其推到仓库的顶部。 我们可以看看仓库的顶部这个推送的ESP指向14FF80。 按照SEH的上述声名,这是处理赏罚措施函数代码,但如故必要由下一行代码PUSH DWORD PTR FS:[0]完成的FS来指出。把指针指向SEH链的仓库顶部,将完成SEH记录。此时寄存器的当前状态如下所示。 有了MOV DWORD PTR FS:[0], ESP的声名,代码通过将ESP(指向记录的顶部)移动到FS:[0]来将新建设的记录指定到SEH链的顶端。执行此语句后,我们可以看到仓库状态SEH记录的两个元素。 我们也可以在VEH/SEH链中建设新的记录。 可是,自从下一行代码XOR EAX,EAX将0放入EAX后,样本代码应该执行这个SEH处理赏罚措施代码。 然后它试图将它写入一个只读位置来导致非常,第一个处理赏罚措施会捕捉此非常,然后执行解包措施代码。 另外,在执行最后一条语句时,将跳转到519870(记着这是我们之条件交给EAX寄存器的地点,而且是SEH处理赏罚函数SEH记录的一部门)。 这是潜匿打包措施代码的一种智能技能,可是我们的说明还没有完成,由于我们如故必要找到OEP,从二进制文件中解压缩代码并从头构建它是很坚苦的。 为此,我们将实行通过在打开代码之前查找打包措施凡是行使的一些常见模式:
因此我们应该凭证这个次序查察:整理仓库→JMP EAX。 一旦进入519870(SEH处理赏罚措施代码)中,我们可以通过每个指令,也可以沿着建设SEH记录配置一个断点。 下面就让我们回收沿着建设SEH记录配置一个断点的步伐。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |