首页
社区
课程
招聘
[原创]基于trace 进行数据流分析的一些实践
发表于: 2025-1-15 15:42 20187

[原创]基于trace 进行数据流分析的一些实践

2025-1-15 15:42
20187

声明

在前面逆向vmp的时候 handle分析写的是欲仙欲死,于是乎有了这篇文章,这篇文章的的灵感来源于 https://bbs.kanxue.com/thread-270799.htm ,由于vmp带来的代码膨胀,寻常的调试 f5 已经对无能为力了,既然寄存器跟踪不了 那我们来跟踪数据吧。

这里选用excel 作为trace 的一个后端,之所以用它,是因为我在b站看到了EXCEL 2024电竞大赛的相关视频 ,看的我是一愣一愣的,它主要有这几个优点
1.结果可视化
2.搜索速率强大
3.奇奇怪怪的功能丰富,不用自己造轮子

1.指令集
2、内存读写
3.寄存器
4.值分析(写不明白)

这里选用的libEncryptor 中的ttEncrypt算法进行实验 trace下来后开始分析。
图片描述
可以看到7w条trace 如果是调试 那么你的键盘已经按烂了

数据分析有两种 一种是参数跟踪到结果 一种是结果跟踪到参数,这里用的是结果跟踪到参数 从下往上找。
先看看结果在哪
图片描述
可以看到v9 长度为 v11 应该就是传出的结果了0x790103e700 excel根据地址从下往上搜索 图片描述
那么现在的问题变成了 谁填写了这个地址
继续搜索memacc
图片描述
图片描述
填写这个地址的是个 aes算法
图片描述
于是乎 问题变成了参数是怎么来
图片描述
跟踪第一个参数 0x793b65fb60
发现 是由memcpy 赋值
图片描述
于是乎问题变成了79011daa00 怎么来的
图片描述
于是乎问题变成了78527c4960怎么来的
图片描述
ida 查看这个地址
图片描述
sha512
于是乎 原文怎么生成的
图片描述
图片描述
跟踪到 6ac4
图片描述
图片描述
一个填充算法
向上继续跟踪
图片描述
又是一次sha512
图片描述
继续向上
图片描述
图片描述
得知是由rand生成

说一下大致流程
rand 随机数 -> sha512 ->填充算法-> sha512 -> key
在完成整个trace后 可以发现基于数据流的分析可以让程序流程无从遁形 大大提高了逆向工程的效率,对比逆向vmp的handle的效率,数据流分析的效率大大提高的,我仅仅是用了excel的搜索功能,就将整个流程分析的差不多了。不想去逆向vmp的兄弟可以自己动手试试

这种trace的分析更像是ttd的一种简化版本 或者说没有ce的无赖之举,但是在trace过程中我尝试过值分析,但是带来的却是trace速度减慢,非常慢,我如果想知道一个值是指针还是地址 还是常数 ,字符串有没有什么更好的办法,利用frida的try catch 机制去强制读写 带来的却是性能的成倍削弱,在引用了缓存机制后,又发现缓存更新又是一个大麻烦,有没有大佬捞一手

num: number;
   addr: NativePointer;
   offset: NativePointer;
   asm: string;
   mem_acc: string;
   reg_analyse: string;
   func_analyse: string;
   X0: NativePointer;
   X1: NativePointer;
   X2: NativePointer;
   X3: NativePointer;
   X4: NativePointer;
   X5: NativePointer;
   X6: NativePointer;
   X7: NativePointer;
   X8: NativePointer;
   X9: NativePointer;
   X10: NativePointer;
   X11: NativePointer;
   X12: NativePointer;
   X13: NativePointer;
   X14: NativePointer;
   X15: NativePointer;
   X16: NativePointer;
   X17: NativePointer;
   X18: NativePointer;
   X19: NativePointer;
   X20: NativePointer;
   X21: NativePointer;
   X22: NativePointer;
   X23: NativePointer;
   X24: NativePointer;
   X25: NativePointer;
   X26: NativePointer;
   X27: NativePointer;
   X28: NativePointer;
   FP: NativePointer;
   LR: NativePointer;
   SP: NativePointer;
   NZCV: NativePointer;
   PC: NativePointer;
num: number;
   addr: NativePointer;
   offset: NativePointer;
   asm: string;
   mem_acc: string;
   reg_analyse: string;
   func_analyse: string;
   X0: NativePointer;
   X1: NativePointer;
   X2: NativePointer;
   X3: NativePointer;
   X4: NativePointer;
   X5: NativePointer;
   X6: NativePointer;
   X7: NativePointer;
   X8: NativePointer;
   X9: NativePointer;

[招生]系统0day安全-IOT设备漏洞挖掘(第6期)!

最后于 2025-1-17 13:32 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 98
支持
分享
最新回复 (57)
雪    币: 367
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
谢谢大佬分享
2025-1-15 16:11
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
谢谢
2025-1-15 16:24
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
感谢大佬分享,大佬是否也在研究attd呢
2025-1-15 16:25
0
雪    币: 2113
活跃值: (4327)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
大佬,请问一下trace是用的什么工具呢?
2025-1-15 16:44
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
1
2025-1-15 16:46
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
大佬nb
2025-1-15 16:57
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
感谢大佬分享
2025-1-15 17:05
0
雪    币: 757
活跃值: (1767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
6
2025-1-15 19:36
0
雪    币: 1715
活跃值: (2581)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
对于上亿规模的trace分析,excel性能不行。
2025-1-15 20:56
0
雪    币: 1549
活跃值: (3125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2025-1-15 23:07
0
雪    币: 24
活跃值: (1055)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
来看看
2025-1-16 08:47
0
雪    币: 38
活跃值: (2005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感谢大佬
2025-1-16 10:05
0
雪    币: 121
活跃值: (2851)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
感觉很不错呀. 关于你提出的值分析问题, 没必要在Trace中把值分析做完, 可以尝试在后端分析过程中, 结合map进行分析. 另外trace端可以借鉴QBDI的shadowMemory机制, 区分内存读写.
2025-1-16 11:32
0
雪    币: 3044
活跃值: (4928)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
FANGG3 感觉很不错呀. 关于你提出的值分析问题, 没必要在Trace中把值分析做完, 可以尝试在后端分析过程中, 结合map进行分析. 另外trace端可以借鉴QBDI的shadowMemory机制, 区分内 ...
受教了,谢谢大佬
2025-1-16 13:05
0
雪    币: 198
活跃值: (623)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
111111111
2025-1-16 13:32
0
雪    币: 250
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
2025-1-16 19:20
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
大佬nb
2025-1-16 21:09
0
雪    币: 242
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
大佬nb
2025-1-17 08:34
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
大佬nb
2025-1-17 08:40
0
雪    币: 225
活跃值: (2796)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
看看怎么回事
2025-1-17 10:15
0
雪    币: 684
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
mb_ldbucrik 感谢大佬分享,大佬是否也在研究attd呢
有什么attd的资料吗
2025-1-17 11:39
0
雪    币: 3044
活跃值: (4928)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
mb_uzklxgat 有什么attd的资料吗
最后于 20小时前 被method编辑 ,原因:
2025-1-17 11:50
0
雪    币: 182
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
感谢分享
2025-1-17 14:05
0
雪    币: 315
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
学习一下
2025-1-17 14:26
0
游客
登录 | 注册 方可回帖
返回