首页 > 编程知识 正文

c语言软件(c语言加花指令,花指令的应用)

时间:2023-05-06 09:06:51 阅读:123574 作者:2845

原标题:花指令的应用

对免杀的影响很大,有效利用花的指令可以更高效地进行免杀工作,也可以只通过花的指令达到免杀的效果。

一.花指令在无杀领域的应用

1、花韬的应用技巧

在使用之前,首先我们需要了解什么时候使用合适,同时明确什么时候不使用。 总的来说,应该应用于无壳木马,如果木马已经放入壳中,我们必须先拔掉壳再添加。 添加或添加shell都可以视为加密行为,因此通常先添加,然后添加shell。

有一点需要注意的是,添加还会增加木马被启发式扫描仪发现的概率。 因为常见的可能性本身就含有特征代码,所以究竟什么时候添加、添加多少在仁者眼中和智者眼中都是显而易见的。

这里介绍典型的花指令添加操作。 首先打开Ollydbg,加载添加花的程序。 然后,找到空白区域并写入下一个花命令。

首先选择可用空间,按空格键,在调用的反汇编窗口中依次写入上面的命令,然后写入jmp命令跳转到原始程序的入口点,对程序进行Dump (转储)保存,最后修改OEP

其实除了手动添加花的命令外,还有可以自动添加花的工具。

2、鲜花指令修改技巧

既然可以做,也必然可以修改它,但是的修改能达到我们期待的目的吗? 修正成功吗? 这需要一定程度的汇编语言基础。

花指令首先要避免破坏堆栈平衡,或者在程序允许的范围内进行有目的的破坏,从而保证花后程序仍然正常运行。 说到这里,你可能会对“堆栈”这个名词感到毛骨悚然,但别担心,拿着问题看就知道了。

堆栈平衡现在很容易理解为不影响程序的执行结果。 例如,首先运行推式eax。 也就是说,将eax的内容推入堆栈中,然后运行pop eax。 也就是说,取出堆栈顶部的内容并传递给eax。 这样做对堆栈没有任何影响。 也就是说,此时的堆栈是平衡的。

保持堆栈平衡是制作原则,如果要更改为现成的,请使用特征码等效替换方法将add eax、-3更改为sub eax、3等,或者添加了add eax、3和sub eax、3等自己的语句由此可见,的修正其实很简单。

3、搜索空白区域和添加空白区域

无论是通过反汇编向程序添加功能,还是通过跳转方法修改特征码,还是添加花指令,它们都有共同之处。 也就是说,为了便于修正,需要比较大的0x00区域。

无论是OllyDbg还是WinHex,都可以轻松找到可用的0x00区域,但有几点需要注意。

)1)使用WinHex等十六进制编辑软件找到0x00区域后,首先将其起始地址转换为内存地址。 这样,可以在Ollydbg中找到,如图1所示。

使用图WinHex等十六进制编辑器查找0x00区域

)找到可用空间后,请不要忘记检查该空间是否可写。 如果不可写,最终保存时会发生错误,浪费前面的工作。 验证方法如下:选择要使用的0x00区域,右键单击,从弹出菜单中选择“复制到可执行文件”>; 选择“选择”。 然后,如果出现错误消息,则证明该空间不可用,否则证明该空间可用。

)3)在WinHex上,也可以通过菜单栏“搜索”下的“查找十六进制值”搜索0x00字节来快速定位。

除了OllyDbg和WinHex以外,还可以使用一些工具查找空白部分。 例如,我们常用的PEID有这个功能。 使用PEID打开程序后,位于[PE段]右侧的[>,如图2所示; 中选择所需的墙类型。

打开图PEID的节查看器

右键单击段后,在弹出的对话框中选择“查找所有零个”,如图3所示。

图3检索全部0处

现在,您可以找到如图4所示的所有0x00区域的信息。

图4检索结果

另外,还有用于搜索0x00区域的软件代码库。 也称为“PE空隙搜索器”,可以搜索NOP和0空间,唯一的缺点是需要运行程序进行搜索。 假设你在运行截图软件。 打开代码容器后,从“进程名称”下拉菜单中选择“截图软件. exe”,单击“搜索”按钮,即可找到如图5所示的00个区域信息。

图5使用“PE空隙搜索器”搜索0x00

CodeCaver发现的0x00区域信息非常丰富,可直接在内存中搜索,因此无需地址转换即可直接在OllyDbg中应用。 但是,这个工具只能在木马修改时应用,所以在木马修改时是不利的。

如果通过以上方法找不到合适的0x00区域该怎么办? 实际上,也可以通过添加段来人工创建可用段。 例如,可以使用名为ToPo的小工具来增加所需的部分。 运行ToPo后,单击“打开”按钮打开要添加节的程序,然后在出现的对话框中选择“创建新节”

[文件大小增加]”,然后再单击OK按钮。

接着在“增加字节”栏中填入“128”(一般情况下这里所填写的字节数最好为2的倍数),并勾选上“改变入口”,最后单击“生成”按钮,如图6所示。由图6可以看到,程序已经将128字节增加到0x0103E000这个地址的后面了。

图6 增加字节

在这里需要说明的是,如果此处选择了“改变入口”这个选项,那程序会自动将入口点更改为软件中所提示的"0x0103E000"这个地址处,而且还会在区段结尾添加一个跳转语句跳转到程序原来的入口地址处,所以我们直接将花指令

二、花指令的高级应用

1、花指令的提取与快速应用

当我们拿到一款免杀的木马或自动添加工具时,是否想过将对方的据为己有?要是能将提取出来,那么这个以后就是我们自己的了。

如果木马程序被加了,那么往往在程序开头处的信息便是了。如图7所示就是一个通过加花工具自动添加进去的。

图7 一个由工具自动添加的花指令

通过这个我们可以发现它是通过压栈(push)来跳到程序的原入口点的,因此应用时只需要更改push后面的内容即可。为了方便以后的调用,我们在OllyDbg中先选中这段,然后单击右键,选择“二进制复制”,并将其粘贴到记事本中,这样就完成了的提取操作。

如果以后想应用这段,只需要复制我们保存在记事本中的信息,然后选中一块空白区域,单击右键,选择“二进制粘贴”,并将push指令部分更改为“push程序原入口地址”,最后使用peditor将入口点修改为开始的地址就行了。

这里再给大家介绍一款工具—怒剑狂花,它能够很好地支持自定义的添加。打开“怒剑狂花”后,依次选择“设置”>“自定义”,然后在弹出的窗口中单击“添加”按钮,便进入了“添加”的窗口,如图8所示。

图8 打开花指令添加窗口

在“指令名称”处填写要给取的名字,这里我填写的是"X"。下一步就是将我们刚才保存下来的代码复制进去,然后勾选“自动调整格式”,如图9所示。

图9 添加自定义花指令

可以看到上面还有一个“跳转位置”没有填写,这是我们自定义的一个重要参数,它是用来控制应该向哪里跳转的。回到OllyDbg后,我们可以发现跳转处的的HEX数据为"68 61 63 01 01",而其上面则为"68 90 90 90 90",如图10所示。

图10 获取跳转特征信息

由此可知,在字符"68 61 63 01 01"里的"61 63 01 01"就是原程序入口地址的十六进制数据了,而其中的68代表的则是push。返回到“怒剑狂花”中,单击68后,可以看到窗口底部显示的信息为“选中的字符序号为:23”,如图11所示。

图11 查看显示序号

也就是说我们要在“跳转位置”处填写23,这样程序在添加时,当添加到23个字符后就会插入它获取的原程序入口,以保证程序可以前后连贯起来正常运行。掌握了这些,您以后就可以随意添加自己搜集到的了。

2、SEH异常的应用

SEH异常是一个比较复杂的概念,这里只介绍一下目前我们能用到的知识,以便于引领大家向更深层次迈进。

首先,狂野的枫叶读读MSDN对SHE异常给出的解释:“Windows 支持一种称为结构化异常处理的可靠的异常处理方法,此方法涉及与操作系统的协作,并且在编程语言中具有直接支持”。

“异常”是意外的或是使进程不能正常进行的事件,硬件和软件都可以检测出异常。硬件异常包括被零除和数值类型溢出。而软件异常指的是通过调用RaiseException函数检测到并发出信号通知系统的情况,以及由Windows检测到的特殊情况。

为了避免出现异常后程序崩溃,可以使用异常处理机制编写更可靠的代码,以确保资源(如内存块和文件)在发生意外终止事件时可正常关闭,还可以利用简洁的、不依靠goto语句或详细测试返回代码的结构化代码来处理具体问题(如内存不足)。

SEH异常也叫做“结构化异常处理(Structured Exception Handling)”,它其实是系统提供的一个服务,例如有时我们在执行程序时会出现一个错误提示框,请我们单击“发送报告”或“调试”或“关闭”按钮。在这之前的Windows版本也会弹出一个提示框,如果系统安装了微软的编译工具,那它就会引导你启用工具去调试程序的错误。

当系统检测到异常时,它马上会将发生异常的程序挂起,并交由系统特定的调试程序来处理,也就是说这时程序的执行流程已经转移到了系统上,而如果程序此时又运行起来的话,那么就会使程序的运行流程产生更大的迷惑性。

大家可以想象一下,假如杀毒软件正在跟踪程序的运行,而此时程序抛出了一个异常,其流程转移到了系统上,那么可想而知,杀毒软件肯定也会跟到系统里,而原程序此时就可以大摇大摆地继续完成自己的使命了。

当然,上面所举的例子并不十分准确,这里只是为了尽量使大家了解SEH异常。关于SEH异常在中的应用,暂且把它当成一个跳转使用就行了。假设我们现在有个已经加花的程序,那么只需要将的跳转替换为SEH异常代码就可以了。就以下面的SEH异常代码为例为大家演示一下。

我们先使用OllyDbg打开已经加花的程序,发现程序入口处就是一段花指令,而用鼠标选中的那一行便是跳向程序真正入口的地址了,如图12所示。

图12 找到花指令中的程序原入口地址

现在将其替换为上面的SEH异常代码,并将上面代码中的"********"改为原程序入口地址0x01016361。

最终的修改结果如图13所示,最后保存之。

图13 修改后的情况返回搜狐,查看更多

责任编辑:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。