首页 分享 花指令手动清除

花指令手动清除

来源:花匠小妙招 时间:2025-01-13 16:52

        相信刚学习逆向的选手在静态分析的时候会碰到一个棘手的问题,那就是碰到无法将代码反汇编成伪代码,也就是我们常说的花指令,那么接下来我会从十分通俗易懂的角度来解释说明什么是花指令以及如何快速简单的清除花指令。

1、什么是花指令?

        一句话概括就是构造一个恒成立条件跳转,并在中间塞一段乱七八糟的数据,下面的一段伪代码会更直观。

if(true){

goto flag1;

}else{

向内存写字节(0xe8);

}

flag1:

当然,花指令是用来欺骗静态分析的,在程序运行时自然会跳转至flag1,但静态分析器(比如IDA)会尝试把每一段代码进行解释,而这里的写入的字节为call(就是调用函数),但是后面没有跟具体参数,反编译器就会将后面的东西当作参数导致反编译失败。

2、如何手动清除花指令?

        既然花指令构造时会向内存写入数据,那我们将多余的数据nop掉不就自然能够把花指令清除掉了吗?话不多说,端上一道花指令CTF题进行演示,这里我们只作去除花指令的演示,不作后续算法的逆向。题目==>[HNCTF 2022 WEEK2]e@sy_flower

下载好附件后,直接拖入IDA看看,首先就是f12一波查看字符串定位关键点

跟随

点进去继续跟

到这里就是我们关键函数的主体了,但是这里我们是无法直接f5反汇编的,就是花指令的原因,所以这个时候我们就需要动静结合去动态调试去除花指令,其实仔细看IDA已经把后面的指令全部当成数据了。

打开OD拖入文件运行调试,也先进行中文搜索定位到函数主体

这个时候我们就可以去找哪些是花指令了,只要看je,jnz这类条件跳转指令就OK,然后观察跳转的线是否有终点,如果断了就说明该语句就是花指令,将多余数据nop掉就完成了。

然后看后面的跳转地址是 00C410D5 ,我们发现多了个 00C410D4  地址的数据,直接nop掉即可

接着保存文件即可,再将保存好的文件拖入IDA中

仔细与上图作比较,现在IDA明显已经把这段识别成代码段了(.text),直接f5,大功告成!

相关知识

android 加花指令 花指令的作用
花指令及反混淆
Reverse花指令及反混淆
【逆向学习】花指令的去除
花指令总结
花指令的原理、常用花指令收集及花指令示例
关于花指令,请问要怎么解决呢?
android 花指令防止反编译 花指令原理
给dll加花指令
2024年网安最新Re 花指令学习

网址: 花指令手动清除 https://www.huajiangbk.com/newsview1570910.html

所属分类:花卉
上一篇: 如何有效教学长春版三年级语文一片
下一篇: 第5课 深度学习—花草识别 教案

推荐分享