Dante

Dante

加入于 · 2024-06-23 15:27:23
avatar
@dantezy@dabr.ca
#bpftrace #ebpf

t.me/danteslimbo/3336

周末开始想一个问题:在 kretprobe 里面怎样获取 probed 函数的名字。见 t.me/danteslimbo/3327

首先 bpf_get_func_ip 和 PR_REGS_IP 都不行(实测)。

第二个思路就是把所有寄存器都打出来看看,看有哪个寄存器存了可用的地址,用来算出 probed 函数的地址——并没有。

Nameless One 给了一个思路:在 kprobe 的时候存一下地址,在 kretprobe 的时候读出来,我觉得这是正路,但是有点麻烦,后面我把 bio 也做进来再采用这种办法吧。

还有第三个思路就是看 bpftrace 的 probe 看它怎样实现的。当时我以为 bpftrace 也是通过 offset 算地址的思路,所以对着 bpftrace --emit-elf 的 bpf 汇编算了半天,还学了一下如何直接写汇编 ebpf t.me/danteslimbo/3330

昨天想了一下,去看 bpftrace 的翻译出来的 ebpf 内容(用 -dd),把翻译出来 llvm IR 扔进 chatgpt 里面,发现它定义了一个 printf_t 结构体,然后往这个结构体里面写满0,就从 perf_event_output 扔出来,更加迷茫了。

当然 Nameless One 很快找到正确的答案了(此处有掌声)。

看一下

shell

bpftrace -dd -e 'kretprobe:blk_put_request,kretprobe:blk_mq_free_request, kretprobe:blk_mq_alloc_request { printf("%s\n", probe); }'

的结果就会知道答案,简单来说,这里 probed 了三个 kretprobe, bpftrace 会生成三个 prog,在里面给 printf_t 赋值为 {0,0}, {1,0}, {2,0}, 然后在用户态把这个硬编码翻译回来。

哎。
查看详情
0
0
1
avatar
@dantezy@dabr.ca
t.me/danteslimbo/3327

dust 抄了 purw 拿 probed 函数的方法:从 ip 寄存器里面拿指令地址,再用指令地址从符号表反查函数名。

但这方法放 blk_mq_alloc_request 不灵了,因为这里挂的是 kretprobe ,ip 的地址指向 kretprobe_trampoline. 昨天拿 bpftrace 琢磨了半天,把所有寄存器都打出来看了一下,最后还是不知道怎样拿到 blk_mq_alloc_request 的地址。

不过我倒是学了一点别的伎俩:

1. bpftrace 有一个 --emit-elf 参数,可以把 bpftrace script 导出成 elf 文件,然后就可以用 llvm-objdump 分析了。
2. bpftrace 的 print 其实用了一个 perf_event 往外吐数据。

回到 dust 我决定先用 addr = 0 标注这是从 blk_mq_alloc_request 返回的事件,先糊弄过去了。

github.com/dantesli...
查看详情
0
0
1
avatar
@dantezy@dabr.ca
@wzyboy 竟然提供 Linux 电脑,cool
查看详情
0
0
1
avatar
@dantezy@dabr.ca
github.com/dantesli...

整了个 release 页。
查看详情

GitHub

Release v0.0.2 · danteslimbo/dust

0
0
1
avatar
@dantezy@dabr.ca
加上了 github action

t.me/danteslimbo/3277
查看详情

Telegram

Dante's Limbo

#ebpf #dust 给 dust 加上了 github action: https://github.com/danteslimbo/dust/actions/workflows/makefile.yml 有空继续抄 #pwru

0
0
1
avatar
@dantezy@dabr.ca
我要夫子自道地卖一下广告:

dust

一个抄 pwru 的 ebpf 小工具,主要作用就是跟踪一个 io request 的生命周期。别的不说,能省一点穿越层层调用链看调用次序。

github.com/dantesli...
查看详情

GitHub

GitHub - danteslimbo/dust

Contribute to danteslimbo/dust development by creating an account on GitHub.

0
0
1
avatar
@dantezy@dabr.ca
#吐槽

t.me/danteslimbo/3253

之前说过一个同学跑去搞玄学组织。今天群里接了一个 LLM chatbot,可以问它问题,然后,在回答所有问题之前,它都会加一段六壬神算的分析,画风如下:

xsx 33 A股下半年最高到多少点?

**六壬排盘:**

* 年命:丙午
* 月令:甲申
* 日建:庚戌
* 时辰:戊寅

**取用神:**

* 事体:财爻(己酉)
* 世爻:庚戌日建(代表求测者)
* 应爻:己酉财爻(代表股市)

**综合分析:**

**空间:**

* 财爻临白虎,主财运不佳,股市走势疲软。
* 白虎空亡,不利于聚集财气,股市难有起色。

**时间:**

* 日干庚金自合,主时间不确定,股市波动不定。
* 天盘庚金与地盘己酉相冲,冲力受损,股市难以快速上涨。

**外环境:**

* 官鬼临腾蛇,有外力干预,股市受政策影响较大。
* 旬空逢劫杀,外力难以发挥正面作用,股市缺乏支撑。

**人际:**

* 世爻自刑,求测者心态不定,难以把握投资时机。
* 应爻伏吟,股市走势反复无常,难以预测。

**外力:**

* 旬空逢六合,外力难以发挥作用。
* 天罗地网卦,外援受阻,无法及时提振股市。

**判断:**

综合以上分析,A股下半年最高点位预计在3500点左右。

**原因:**

* 财爻临白虎空亡,财运不佳,股市难有起色。
* 外环境阻力较大,外力难以发挥正面作用,股市缺乏上涨动力。
* 求测者心态不定,难以把握投资时机,影响获利空间。

**结论:**

预计A股下半年最高点位在3500点左右,股市走势整体震荡疲软,缺乏持续上涨动力。求测者需谨慎投资,把握好止损点,避免因追涨杀跌而遭受较大损失。


这,有种红夷大炮配合葵花宝典的诡异画风。
查看详情
0
0
1
avatar
@dantezy@dabr.ca
@mashiro 可以切人真是太棒了
查看详情
0
0
1
avatar
@dantezy@dabr.ca
查看详情

【MyGO/素世MAD】即使恶梦却仍然绮丽,甘心垫底衬你的高贵_哔哩哔哩_bilibili

0
0
1
avatar
@dantezy@dabr.ca
@wzyboy 广东人噩梦
查看详情
0
0
1
avatar
@dantezy@dabr.ca
#吐槽

咱单纯从 B 站舆论风向来看,我都为张艺谋喊冤,老谋子依然奋战在电影一线,尝试各种不同方向,成不成最多是个水平问题,反而被 B 友喊打喊杀。不拍片的周星驰反而封神称圣,真是冤枉。
查看详情
0
0
1
avatar
@dantezy@dabr.ca
@wzyboy 攒下来当飞镖
查看详情
0
0
1
没有更多数据了