首页
社区
课程
招聘
[原创] 自写简易Arm64模拟执行去除控制流平坦化
发表于: 2024-12-19 17:50 22306

[原创] 自写简易Arm64模拟执行去除控制流平坦化

2024-12-19 17:50
22306
收藏
免费 12
支持
分享
最新回复 (41)
雪    币: 16634
活跃值: (6871)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
26
IIImmmyyy 这应该是一个函数内包含多个不同的操作分发器引起的 比如CMP W10,W28,这个是主分发器, 然后分支下出现了CMP W8,W30 这种情况导致次的主分发器被认定成了真实块。 不知是否能附上样本?
这可不是分发器,这是真实块,看见赋值操作了不
2024-12-23 12:07
0
雪    币: 16634
活跃值: (6871)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
27
IIImmmyyy 这应该是一个函数内包含多个不同的操作分发器引起的 比如CMP W10,W28,这个是主分发器, 然后分支下出现了CMP W8,W30 这种情况导致次的主分发器被认定成了真实块。 不知是否能附上样本?
网上随便找个大厂的都有,这就是编译器优化导致的
2024-12-23 12:09
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
28
大帅锅 网上随便找个大厂的都有,这就是编译器优化导致的
下个版本优化该情况。应该在本周内推出
2024-12-23 13:34
1
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
29
大帅锅 网上随便找个大厂的都有,这就是编译器优化导致的
1.1.0版本已修复该情况 有兴趣可以尝试下
2024-12-25 14:11
1
雪    币: 2730
活跃值: (1625)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
希望能支持arm32位的
2024-12-26 18:42
0
雪    币: 104
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
31

Unhandled exception. System.Exception: Unknown mnemonic: ADDS
   at AntiOllvm.Extension.InstructionsExtension.FormatOpCode(Instruction instruction) in E:\RiderDemo\AntiOllvm\AntiOllvm\Extension\InstructionsExtension.cs:line 146
   at AntiOllvm.entity.Instruction.GetOpCode() in E:\RiderDemo\AntiOllvm\AntiOllvm\Entity\Instructions.cs:line 60
   at AntiOllvm.entity.Instruction.Opcode() in E:\RiderDemo\AntiOllvm\AntiOllvm\Entity\Instructions.cs:line 51
   at AntiOllvm.Helper.SmartDispatcherFinder.BuildDispatcher() in E:\RiderDemo\AntiOllvm\AntiOllvm\Helper\SmartDispatcherFinder.cs:line 131
   at AntiOllvm.Helper.SmartDispatcherFinder.Init(List`1 allBlocks, Simulation simulation) in E:\RiderDemo\AntiOllvm\AntiOllvm\Helper\SmartDispatcherFinder.cs:line 240
   at AntiOllvm.Analyze.Impl.SmartCffAnalayer.Init(List`1 blocks, Simulation simulation) in E:\RiderDemo\AntiOllvm\AntiOllvm\Analyze\Impl\SmartCFFAnalayer.cs:line 19
   at AntiOllvm.Analyze.Simulation.Run() in E:\RiderDemo\AntiOllvm\AntiOllvm\Analyze\Simulation.cs:line 43
   at AntiOllvm.App.Init(Config config) in E:\RiderDemo\AntiOllvm\AntiOllvm\App.cs:line 23
   at AntiOllvm.Program.Main(String[] args) in E:\RiderDemo\AntiOllvm\AntiOllvm\Program.cs:line 65这个是什么原因导致的呢,add没识别成功吗?


最后于 2024-12-26 20:01 被wx_小白_266编辑 ,原因:
2024-12-26 20:00
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
32
wx_小白_266 Unhandled exception. System.Exception: Unknown mnemonic:&nbs ...
"ADDS"  => OpCode.ADDS,
            _ => throw new Exception("Unknown mnemonic: " + mnemonic) 自行补充即可 该指令仅仅只是解析作用而已
2024-12-27 09:14
0
雪    币: 104
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
33
IIImmmyyy "ADDS" => OpCode.ADDS, _ => throw new Exception("Unknown mnemonic ...
好的谢谢大佬,现在没这个提示了,然后Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')是什么原因导致的呢?
2024-12-27 18:25
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
34
wx_小白_266 好的谢谢大佬,现在没这个提示了,然后Index was out of range. Must be non-negative and less than the size of the collect ...
需要更详细的堆栈
2024-12-27 19:07
0
雪    币: 104
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
35
IIImmmyyy 需要更详细的堆栈


该文件的B08函数,麻烦大佬看看

AntiOllvm.exe -s cfg_output_0xb08.json

Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

System.Exception: Unknown mnemonic: B.CC


最后于 2024-12-27 19:35 被wx_小白_266编辑 ,原因:
上传的附件:
  • main (13.73kb,1次下载)
2024-12-27 19:25
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
36
wx_小白_266 IIImmmyyy 需要更详细的堆栈 该文件的B08函数,麻烦大佬看看AntiOllvm.exe -s cfg_output_0 ...
请附上so
2024-12-30 09:39
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
37

这几天测试了一下,发现在某些 特殊so 里面,真实块被重复递归时,程序无法执行完正确流程。

真实块的下一个块为 CSEL 块,且此块无跳转指令时,因 block.isFind 被标识 true 导致当前分支执行流程提前退出。

图片描述

如果放开 block.isFind 则能正常执行到 ret,但会出现栈溢出。因此递归查找真实块的方式,在此种情况不通用。

最后于 2024-12-30 10:03 被mb_hsxnkqcc编辑 ,原因:
2024-12-30 10:02
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
38
mb_hsxnkqcc 这几天测试了一下,发现在某些 `特殊so` 里面,真实块被重复递归时,程序无法执行完正确流程。 > 真实块的下一个块为 `CSEL` 块,且此块无跳转指令时,因 `block.isFind` ...
感谢反馈 确实没有覆盖到这种情况的用例 可提供样本进行兼容
2024-12-30 10:14
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
39

函数:0x6FDC0 sub_6FDC0
另外寄存器快照存储和还原的也需要调整,原本字典的 valueList<Register> 换成 Queue<List<Register>> 的方式,保护递归状态寄存器上下文的一致。

上传的附件:
2024-12-30 10:27
0
雪    币: 104
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
40
IIImmmyyy 请附上so

这是一个可执行文件的附件函数名为sub_B08,没有so的,辛苦大佬看看是什么情况

上传的附件:
  • main (13.73kb,1次下载)
2024-12-30 18:13
0
雪    币: 206
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
41
wx_小白_266 这是一个可执行文件的附件函数名为sub_B08,没有so的,辛苦大佬看看是什么情况
这个是以subs 指令并更新标志位(NZCV) 来进行指令的分发。由于目前框架用的都是CMP 指令作为识别,目前这个格式并不支持
2024-12-31 13:46
0
雪    币: 161
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42

PS C:\Users\Administrator\Desktop\net8.0> ./AntiOllvm.exe -s .\cfg_output_0x10f28df10.json

Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

PS C:\Users\Administrator\Desktop\net8.0>

大佬 这是什么原因 我这个json 48353 kb 是太大了么?


最后于 2025-1-16 14:12 被怪难听的编辑 ,原因:
2025-1-15 10:30
0
游客
登录 | 注册 方可回帖
返回