花指令

我在做逆向的题目的时候,经常会遇到需要自己将一堆乱码用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函数和上面图中的那一个是同一个函数,很明显,这个更加准确。

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

用代码来去除花指令

当代码中存在大量花指令时,可以使用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

【逆向学习】花指令的去除相关推荐

  1. CTF逆向基础----花指令总结

    什么是花指令? 花指令实质就是一串垃圾指令,它与程序本身的功能无关,并不影响程序本身的逻辑.在软件保护中,花指令被作为一种手段来增加静态分析的难度,花指令也可以被用在病毒或木马上,通过加入花指令改变程 ...

  2. 花指令如何用c语言编写,逆向学习笔记之花指令

    概念 花指令是企图隐藏掉不想被逆向工程的代码块(或其它功能)的一种方法,在真实代码中插入一些垃圾代码的同时还保证原有程序的正确执行,而程序无法很好地反编译, 难以理解程序内容,达到混淆视听的效果. 简 ...

  3. CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决

    CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决 来源:https://buuoj.cn/ 内容: 附 ...

  4. 【CTF-Reverse】花指令

    参考自(5条消息) CTF逆向基础----花指令总结_非著名不专业Re选手的博客-CSDN博客_c++ 花指令 本文仅仅属于个人学习笔记,以便知识体系化 花指令是啥? 1.垃圾指令,不影响程序逻辑,用 ...

  5. 逆向分析软件去除易语言花指令完成注册

    文章目录 用到的软件 查壳 去除花指令 寻找关键跳或者关键CALL 完成注册 用到的软件 OD PEID 会员管理软件 查壳 直接拖进PEID看一下,这里没壳,直接干了 去除花指令 查找关键字 首先我 ...

  6. 逆向分析基础 --- 花指令实现及清除

    一.基本概念 花指令:目的是干扰ida和od等软件对程序的静态分析.使这些软件无法正常反汇编出原始代码. 常用的两类反汇编算法: 1.线性扫描算法:逐行反汇编(无法将数据和内容进行区分) 2.递归行进 ...

  7. 190319 逆向-花指令

    以前也接触过简单的花指令,基本上就是jz/jnz式的固定跳转 前几天的某比赛中出现了一个相对而言比较复杂的花指令,参考pizza的笔记开始一阵学习XD 前言 花指令指的是没有卵用,会干扰代码阅读甚至反 ...

  8. 抗去除花指令(一)——花指令基础

    转自 http://blog.csdn.net/yangbostar/article/details/6194133 入门知识,高手勿读 一. 概述 花指令是对抗反汇编的有效手段之一,正常代码添加了花 ...

  9. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

最新文章

  1. java多线程 生产者消费者_java多线程之-生产者与消费者
  2. hive遇到FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误...
  3. javaBean为什么要实现Serializable接口?
  4. OpenCV使用inRange的阈值操作Thresholding Operations
  5. ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
  6. 关于注册登陆时候进行的归档解档--严焕培
  7. java 将Map拷贝到另一个Map对象当中
  8. 3. $()下的常用方法
  9. 一道非常简单的签到题
  10. mysql中交集,并集,差集,左连接,右连接
  11. [转载]安全设置 IIS 中的权限
  12. (XWZ)的Python学习笔记Ⅷ--------numpy
  13. raspberry pi_Raspberry Pi入门指南
  14. 应用程序无法开机自启动
  15. Spring常见面试题55道(附答案2023最新版)
  16. Vue 3 之什么是 解包
  17. scrapy框架连接MongoDB数据库
  18. Ubuntu 快捷键使用说明(一)--截图
  19. Java+MySQL基于ssm家教服务平台
  20. 数组的最长递减子序列java_最长递增/递减子序列

热门文章

  1. Activity生命周期的三种状态
  2. attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer
  3. 快慢指针(java)
  4. uniapp:在HBuilderX里使用夜神模拟器
  5. MATLAB代码:新能源接入的电力市场主辅联合出清 出清模型以考虑安全约束的机组组合模型(SCUC)和经济调度模型(SCED)组成
  6. openldap + samba为openldap添加smb属性----群晖synology
  7. 网格布局(grid布局)
  8. PHP socket 连接 Socket server
  9. OSI七层网络参考模型详解
  10. JNLP 文件无法打开的解决办法