首页 分享 【逆向学习】花指令的去除

【逆向学习】花指令的去除

来源:花匠小妙招 时间:2024-12-14 21:14

【逆向学习】花指令的去除

Wanglpl 已于 2024-01-03 08:43:32 修改

于 2023-04-22 21:51:34 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

花指令

我在做逆向的题目的时候,经常会遇到需要自己将一堆乱码用IDA分析构建成函数,但函数却无法仍然无法使用f5进行编译,就是因为存在花指令的缘故。花指令经常被作为一种手段来增加代码分析的难度。我就打算记录一下几种解决花指令的方法。

手动nop

我们在用IDA用C构建函数时,其实很容易发现花指令,只要将这些花指令NOP掉就可以了。
这个标红的地方很明显就是花指令。
在这里插入图片描述
到那个位置,把它NOP掉
在这里插入图片描述
main函数就成功出来了
在这里插入图片描述
手动不成功的情况就需要具体分析了。
比如这一题**[MoeCTF 2022]chicken_soup**
在这里插入图片描述

在这里直接nop掉jmp是没用的,我也不知道具体原因,搜了这一题的WP才知道,当出现jn,jnz时,就代表一定会跳,肯定跳转 下面位置即 C7 45 F8 这里。E9命令会略过,不会执行。所以先用U转换数据再Ctrl+N,nop掉E9, 再F5,就可以了。
在这里插入图片描述
函数就出来了
在这里插入图片描述
但有些时候,NOP掉之后可能仍然无法F5,但是出现了黄色的代码位置,就直接用C键将黄色区的数字转换成代码就行(全部转完)。

直接用IDA动态调试(有一定几率可以直接出来)

实在找不到花指令的时候可以动态调式试一下。
在这里插入图片描述
但是有些时候动态出来的更加准确,这个图中的main函数和上面图中的那一个是同一个函数,很明显,这个更加准确。

用代码来去除花指令

当代码中存在大量花指令时,可以使用IDC代码或者python去解决。

范例

startaddr = 0x1135#起始位置
endaddr = 0x3100#终点位置
在这里插入图片描述
这段代码是大佬的
for i in range(startaddr,endaddr):
if get_wide_byte(i) == 0xEB:#需要去除掉花指令
if get_wide_byte(i+1) == 0xFF:
patch_byte(i,0x90)#nop指令的16进制为90h

使用方法
在这里插入图片描述
在这里插入图片描述

总结

后面遇到更多有关花指令的题目还继续总结的。

参考的博客

1.https://www.cnblogs.com/wgf4242/p/16654971.html
2.https://blog.csdn.net/qq_20031585/article/details/124028238
3.https://www.ctfer.vip/note/set/453

相关知识

逆向分析“海莲花” APT木马的花指令反混淆工具
逆向分析基础
CTF常见花指令去除IDA插件
关于花指令,请问要怎么解决呢?
[原创]CTF竞赛中常见花指令解决方法
花指令总结
花指令在医疗健康应用研究
CTF逆向基础
android逆向奇技淫巧十八:x音so层代码花指令防护分析(三)
如何在ida里面使用之花指令的操作+python插件进行运行脚本 以[MoeCTF 2022]chicken

网址: 【逆向学习】花指令的去除 https://www.huajiangbk.com/newsview1096872.html

所属分类:花卉
上一篇: 高接换头嫁接技术,可快速改良果树
下一篇: 12月13日游资操作情况: 1.

推荐分享