让ai分析trace,一般trace文件远大于ai上下文,所以用 large-text-viewer 做核心来让ai使用搜索接口和trace交互。来提供逆向效率(不一定提升得了,和蠢b ai battle将消耗你大量的时间)
trace.txt <- large-text-viewer <- mcp <- llm
表现良好的情况下已经能自主通过trace还原x-gorgon的算法主体
很多因素共同作用:
[1]. 最重要一点是ai模型的性能:上下文长度,幻觉和服从性,下面会给出部分模型的测评
[2]. 其次是 trace 格式和 自定义搜索策略,信息越全越好
自定义搜索策略可以广度优先或者深度优先,也可以先收集一些启发式的信息,具体看个人,把你的思路讲明白告诉ai即可
[3]. 再然后是 ai是否合理使用了mcp的api
比如你现在关注一个值0x36,但ai很可能直接去搜0x36导致结果爆炸,你要在搜索策略中给出这种案例的引导,告诉他添加搜索条件,范围约束,同时从 mcp-api 层直接对结果过多的搜索返回err (为什么不让ai自己发现搜索结果过多?因为返回的result也会浪费你的上下文,不如直接就告诉ai,你的搜索条件不合适,重新写条件)
large-text-viewer-mcp 有三个主要api:
[4]. 最后是要还原的算法本身的复杂度,一些流程很长的自写算法按部就班还原还是有难度的,考虑多给ai一些启发 式的例子学习。每得到阶段性的结论也要让ai总结
search_strategy.md 和 trace_format.md 要使用你自己的trace格式
⚠️注意⚠️ ai的大脑褶皱是平滑的,你只能让他代替你进行机械化的劳动,或者期待他某一下灵光一闪
所以,流水化和标准化的trace搜索方法是你要考虑的,ai做不了你自己认知以外的事
简单的算法ai表现很好,但复杂一些的算法会大量烧token,且表现不一定好,这里要让ai多解释自己的思路自己多调试,也要多总结自己的trace搜索策略
本项目持续更新,许愿请提issue
搞一份 x-gorgon 的trace 给ai分析,见附件
最好使用T1以上的模型
技术交流可以加 vx baserker2 备注看雪
目前已经纯靠还原出x-gorgon的主体逻辑,可以用我给出的样本自己测试实际效果
欢迎大家交流更好的提示词,或者反馈模型表现
large-text-viewer 命令行版本
4fdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6L8$3&6Y4M7r3g2F1k6$3k6W2K9e0p5I4x3e0q4Q4x3X3c8V1L8%4c8Q4x3V1k6D9j5i4u0Y4k6g2)9J5k6s2c8W2P5s2c8Q4x3X3c8$3K9h3g2%4k6i4u0Q4x3V1k6@1M7X3g2W2i4K6u0r3k6r3g2$3i4K6g2X3k6r3g2$3i4K6g2X3L8h3y4H3
python mcp server
356K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6L8$3&6Y4M7r3g2F1k6$3k6W2K9e0p5I4x3e0q4Q4x3X3c8V1L8%4c8Q4x3V1k6@1M7X3q4U0k6g2y4W2j5i4u0U0K9q4)9#2k6V1#2o6f1l9`.`.
ba9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2j5$3g2B7j5i4u0$3K9i4y4Q4x3V1k6D9j5i4u0Y4k6g2)9J5k6s2c8W2P5s2c8Q4x3X3c8$3K9h3g2%4k6i4t1`.
45fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6J5k6i4k6W2M7X3y4U0i4K6u0r3k6%4g2E0g2q4k6y4
f84K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6r3b7f1&6s2c8K6y4Q4x3V1k6S2N6s2c8V1i4K6u0V1N6s2u0S2j5$3g2J5i4K6u0V1M7h3u0V1K9b7`.`.
2fcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Y4x3Y4N6X3N6#2)9J5c8Y4q4T1k6r3W2Q4x3X3c8@1M7X3q4U0k6i4u0Q4x3X3c8S2L8X3c8J5L8$3W2V1
4edK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6N6$3W2X3N6s2A6x3i4K6u0r3M7h3u0V1K9g2)9#2k6Y4c8J5j5h3y4W2M7R3`.`.
和ida-mcp,unidbg-mcp等联动,最好可以多agent组团分析
拓展large-text-view-mcp本身的能力,作为通用的大文本搜索用mcp,服务器log往往也GB级,应用场景很广
开发其他的mcp,比如自动分析网络流量包的mcp
├── large_text_viewer_mcp.py //mcp接口
├── readme
│ ├── api_usage.md // large-text-viewer 的接口文档
│ ├── search_strategy.md // 自定义搜索策略,给实习生看的教程文档
│ └── trace_format.md // 给ai解释你的trace格式
├── requirements.txt
├── target
│ └── release
│ └── large-text-viewer //核心,源码见large-text-viewer/tree/dev_dev_mcp
└── test_mcp.py // 环境测试文件
├── large_text_viewer_mcp.py //mcp接口
├── readme
│ ├── api_usage.md // large-text-viewer 的接口文档
│ ├── search_strategy.md // 自定义搜索策略,给实习生看的教程文档
│ └── trace_format.md // 给ai解释你的trace格式
├── requirements.txt
├── target
│ └── release
│ └── large-text-viewer //核心,源码见large-text-viewer/tree/dev_dev_mcp
└── test_mcp.py // 环境测试文件
```
//trace格式
ld__ 和 st__ 代表产生内存操作的 mem.addr mem.size mem.value
(mr) 和 (mw) 会显示具体的 mem.op.base 和 mem.op.ea
78de873688 +
7c675a1b20 +0x31 = 7c675a1b51
当寄存器指向可读字符串时打印 string__
[libc.so::], [env::] 是函数调用
```
```
[libc.so::memcpy] dest= 0x7c374e14d0 src= 0x7c374a6c30 size= 10 buffer= 676f6f676c65706c6179
...
78eb74fd90 [13dd90] strb w20, [x8, x21] (r) w20=0x37 (mw) 7c675a1b20 +0x31
st____ 7c675a1b51 4 37
...
78eb74f670 [13d670] ret
78eb74fd74 [13dd74] cbz w0,
78eb74fd8c [13dd8c] ldr x8, [x19,
ld____ 78de873690 8 7c675a1b20
String__ 7c675a1b20—>840480a30000267b86a1b0f7e6814449319585f86f7f2056e
78eb74fd90 [13dd90] strb w20, [x8, x21] (r) w20=0x37 (mw) 7c675a1b20 +0x31
st____ 7c675a1b51 4 37
78eb74fd94 [13dd94] ldr x8, [x19,
ld____ 78de873690 8 7c675a1b20
String__ 7c675a1b20—>840480a30000267b86a1b0f7e6814449319585f86f7f2056e773678
```
```
//trace格式
ld__ 和 st__ 代表产生内存操作的 mem.addr mem.size mem.value
(mr) 和 (mw) 会显示具体的 mem.op.base 和 mem.op.ea
78de873688 +
7c675a1b20 +0x31 = 7c675a1b51
当寄存器指向可读字符串时打印 string__
[libc.so::], [env::] 是函数调用
```
```
[libc.so::memcpy] dest= 0x7c374e14d0 src= 0x7c374a6c30 size= 10 buffer= 676f6f676c65706c6179
...
78eb74fd90 [13dd90] strb w20, [x8, x21] (r) w20=0x37 (mw) 7c675a1b20 +0x31
st____ 7c675a1b51 4 37
...
78eb74f670 [13d670] ret
78eb74fd74 [13dd74] cbz w0,
78eb74fd8c [13dd8c] ldr x8, [x19,
ld____ 78de873690 8 7c675a1b20
String__ 7c675a1b20—>840480a30000267b86a1b0f7e6814449319585f86f7f2056e
78eb74fd90 [13dd90] strb w20, [x8, x21] (r) w20=0x37 (mw) 7c675a1b20 +0x31
st____ 7c675a1b51 4 37
78eb74fd94 [13dd94] ldr x8, [x19,
ld____ 78de873690 8 7c675a1b20
String__ 7c675a1b20—>840480a30000267b86a1b0f7e6814449319585f86f7f2056e773678
```
./target/release/large-text-viewer info
--file /path/to/large.txt
./target/release/large-text-viewer info
--file /path/to/large.txt
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1
--end 100
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1000
--count 50
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1
--count 10
--line-numbers
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 42
--count 1
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1
--end 100
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1000
--count 50
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 1
--count 10
--line-numbers
./target/release/large-text-viewer lines
--file /path/to/large.txt
--start 42
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
最后于 4天前
被温泉划水鱼编辑
,原因: