简单花指令

文章讲述了花指令,一种用于干扰反汇编软件的编程技术,通过设计可执行和不可执行的花指令来增加静态分析的复杂性,如使用E8跳转指令和设置永真条件跳转。作者还提供了清除和重构函数的方法示例,以及参考了NewStarCTF2023Petals比赛中的应用。
摘要由CSDN通过智能技术生成

概念

花指令:目的是干扰IDA和OD等软件对程序的静态分析。使这些软件无法正常反汇编出原始代码

常用的两类反汇编算法:
1.线性扫描算法:逐行反汇编(无法将数据和内容进行区分)(例如OD)
2.递归行进算法:按照代码可能的执行顺序进行反汇编程序(例如IDA)

可执行花指令

这部分花指令代码在程序的正常执行过程中会被执行,但执行这些代码没有任何意义,执行前后不改变任何寄存器的值(eip除外),同时这部分代码也会被反汇编器正常识别

这种花指令的首要目的依然是加大静态分析的难度,让你难以识别代码的真正意图,并且可以破坏反编译的分析,使得栈指针在反编译引擎中出现异常

不可执行花指令

虽然被插入到了正常代码的中间,但是并不意味着它一定会得到执行,这类花指令通常形式为在代码中出现了类似数据的代码,或者IDA反汇编后为jmupout(xxxxx)

这类花指令一般不属于CPU可以识别的操作码,那么就需要在上面用跳转跳过这些花指令才能保证程序的正常运行

实现(重点掌握)

简单花指令

0xe8是跳转指令,两个跳转一个指向无效数据,一个指向正常数据来干扰递归扫描算法

 

简单jump

干扰线性扫描算法

永真条件跳转

通过设置永真或者永假使得程序一定会执行

清除 

右键Patching--change  byte,修改E8(有时候是E9)为90(nop)

右键nop整行伪代码范围

Create function重构函数,F5查看伪代码

例题: NewStarCTF 2023 Petals 

参考资料:花指令详解_Kidder111的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值