TGTGInsighttelegram intelligenceLIVE / telegram public index
Back to channels
Welcome to the Black Parade avatar

TGINSIGHT CHAT

Welcome to the Black Parade

@TheB1ackParade

Music

Death has many faces, I look forward to seeing this one.

Subscribers787Current channel subscribers
Tracked posts907Indexed post count
Recent reach1,778Sum of recent post views
Recent posts

Recent posts

Page 49 of 76 · 907 posts

Posted Aug 7

https://t.me/hyi0618/33 这个其实值得用 bpf 做一个工具,我之前就想过但是太懒了。 整体思路是,tracepoint attach exec,然后 bpf_write_user 修改 char **env。虽然 bpf 不能修改内核栈和寄存器,但是可以修改用户栈,正好这几个参数都在用户堆栈上。 但是细节没想象中那么容易: a. 修改已有环境变量。很难判断哪些变量不会被进程使用、可以安全被篡改,不小心就玩坏。 b. 新增环境变量。需要遍历 char **argv 和 char…

192 views

Posted Aug 7

https://t.me/hyi0618/33 这个其实值得用 bpf 做一个工具,我之前就想过但是太懒了。 整体思路是,tracepoint attach exec,然后 bpf_write_user 修改 char **env。虽然 bpf 不能修改内核栈和寄存器,但是可以修改用户栈,正好这几个参数都在用户堆栈上。 但是细节没想象中那么容易: a. 修改已有环境变量。很难判断哪些变量不会被进程使用、可以安全被篡改,不小心就玩坏。 b. 新增环境变量。需要遍历 char **argv 和 char **env,那些已经被占用的堆栈不能使用,找到足够大小的空余内存,追加到 env 的最后。可用的堆栈范围应该可以通过 task_struct 得到,大不了直接回溯到 main 修改 main 的栈帧。如何通过 verifier 是手艺活,但是理论上做一个限制性的工具(len(argv) < 10?)是可行的。 当然这工具并不解决所有问题,如 systemd 启动的进程 dockerd,还有不吃 ALL_PROXY 环境变量的进程(git?),还有虚拟机,但是也足以解决如 kind 这种重度容器化的开发流程。 但是这些还是太麻烦了,linux 也需要一个类似 macOS 上的 Surge 增强模式,修改默认路由接管所有外出流量。还修改环境变量,修改个屁。

158 views

Posted Aug 7

https://t.me/+TpIXpkr6GtYyNTc1 一位段位比我高很多的年轻的 bpf 中国贡献者的频道,我是半年前在 github 认识他的,这半年里从他热情的知识分享里学到了很多。本频道也已经数次提过他。

140 views

Posted Aug 6

震惊, clang 原来是英语单词,意思是金属的铿锵声,读音是 /klæŋ/!而我一直读作( )! reddit 上有个投票,看来大多数人还是按照单词本身去发音。当然应该按照单词本身发音去读。 #我太菜了

143 views

Posted Aug 6

https://zhuanlan.zhihu.com/p/618704031 用卡西欧计算器的缓冲区溢出劫持执行、输出任意(内置)字符。 原理倒是清晰无误,问题是文章作者是高中生,英雄出少侠。。。 我长期围观的一位初三学生上周还自弹自唱cover了 Radiohead 的 My Iron Lung,也是让我感叹英雄出少侠。。。

133 views

Posted Aug 5

https://groups.google.com/g/vim_announce/c/tWahca9zkt4 😢 Vim 作者 Bram Moolenaar 去世了,我虽然在几年前由于 jumplist-stack 的问题换成了 neovim,但是对外我一直宣称自己**只**用 vim 做开发,我的 vim 心永恒。

136 views

Posted Aug 5

https://groups.google.com/g/vim_announce/c/tWahca9zkt4 😢 Vim 作者 Bram Moolenaar 去世了,我虽然在几年前由于 jumplist-stack 的问题换成了 neovim,但是对外我一直宣称自己**只**用 vim 做开发,我的 vim 心永恒。

142 views

Posted Aug 4

一眼看过去感觉倒数第二位的头像有中国风,结果还真的是中国开发者!😂 #中式刻板印象++

134 views

Posted Aug 2

github following feed 根本没有我想看的信息。 当我 fo 一个账号的时候,我是想看 ta 的 pr / issue / comment / review,而不是谁又 star 了什么仓库,fo 了什么人。 比如说,假如有人是用 github.io 或者 issue 写博客,那么这就可以直接在 following feed 里展现出来;或者有人发现了有意思的 bug 报告了一个 issue,可能我也有兴趣。 不过目前来看似乎并不是有很多人和我持有相同的看法,社区有一个讨论:https://github.com/orgs/community/discussions/13446 ,不过一年过去了,估计由于优先级不高已经烂尾。

154 views

Posted Jul 31

那些只能在大陆听到的我喜欢的歌曲们 Spotify 和 Apple Music 的版权真的是一言难尽,不少歌曲只能在QQ音乐或者网易云音乐听到。先推荐十首吧。 1. 童话生死恋,花儿乐队。不要小看花儿乐队,大张伟16岁的时候写出静止,1999年杨乃文在专辑《Silence》里翻唱静止,拿到了第二年金曲奖。那年金曲奖的其他竞争对手是:王菲《只爱陌生人》张惠妹《我可以抱你吗》,感受一下这含金量。 2. 《昼夜本色》,梁博。虽然Spotify有梁博的二专《迷藏》,但是这张live专辑没有续版权。其中的日落大道歌词又孤独又绝美,我脑海中总是浮现出失去一切的巴耶克(刺客信条:起源)在金黄色的芦苇原里往前走的样子,有时候也像我自己。 3. 奥乖,Carsick Cars。原唱是窦唯在《黑梦》里的第八轨,居然被晕车车现场诠释得更好,连打击乐都敲出了旋律,管乐更是吹得人毛骨悚然,而歌词居然是写小孩子的,能量太大了。窦唯《黑梦》本身也是极佳的佳作,不过在Spotify上都能听到,就不浪费笔墨了。 4. Jump,麦当娜。好吧Spotify上当然有这张专辑《Confession On a Dance Floor》,但是唯有大陆音乐app买的版权是non-stop连专,也就是相邻两首歌之间没有停顿,听起来像是连在一起的一首歌。如果听歌稍微多一点一定知道披头士最著名的那张也早就用了这种玩法。麦奶这张舞曲专辑是我最爱的一张,而我最爱的居然是里面的Jump,相当小众。 5. 河西走廊之梦,雅尼。没错就是那个出生希腊,后来移民美国,热爱人类文化遗产,曾在紫禁城开音乐会的雅尼。他的经典现场雅典卫城音乐会就不多说了,但是河西走廊之梦是雅尼为中国纪录片《河西走廊》专门创作演奏,长河落日圆。 6. 《Close To 蔡健雅》,蔡健雅。听了这么多年才知道蔡健雅是新加坡人- - 我推荐这张 demo 专辑的越来越不懂。这首歌市面上有三个版本,录音室那版编曲有点油腻,live版过于朴素,唯有这张 demo 是我最爱。我越来越不懂爱。 7. 随心所欲,罗琦。Spotify上有这首,但是有杂音。Spotify上有些偏门音源有杂音这件事我也不是第一次遇到了。罗琦大姐我是很喜欢的,她的另一首歌回来的歌词更加精彩:带着忏悔飘荡,看到坚强在生长。都是灵魂摇滚歌手。 8. 菩萨蛮,姚贝娜。年轻人可能不知道这位英年早逝的歌手,她的绝唱是live版本的鱼,迪士尼也邀请她为冰雪奇缘1的Let it go演唱中文版。菩萨蛮后来也被刘欢翻唱,双双金鹧鸪。 9. Everybody Woohoo,吴青峰。一首廉价的流行歌,但是我特别喜欢那句“我孤独时候woo,我欢呼当然woo”,配上吉他的riff和转瞬即逝的弦乐,简直太棒了!!!我可以把话撂在这:只有绝对悲观主义才能唱出这首歌的精神。可惜国内也听不到苏打绿2016年的live专辑《故事未了》,我太爱第一首故事的娓娓道来了。 10. Starfield,东野美纪。这是红白机游戏沙罗曼蛇第二关的背景音乐。我平时经常听电影游戏动漫原声带,最后推荐这个虽然有童年滤镜,但是音乐本身是素质过硬、非常优秀的。虽然是简单的合成器音乐,但是真有太空漫游感,更感人的是创作者当时才20岁!英雄出少女。后来的卡比更是有一首主题曲Green Greens从初代开始,每代不断演变,妙趣横生。

158 views

Posted Jul 31

fentry 要多坑有多坑! 比如 fentry on tc,入参 __sk_buff 结构体没有经过 verifier 字段调整,读到的 skb->data / skb->data_end 全是错的。 比如 fentry on kprobe,想取当前寄存器无能,用 task_struct->stack 读出来的都是错的,因为没有把寄存器刷入内存。 比如 bt when fentry,不检查一下汇编根本猜不到隐藏了一个入参在 $rdi,bpf_get_stackid() 只接受这个隐藏参数。 比如必须依赖 trampoline nop 替换,还不够,nop 的下一指令还不能弹栈,因为 fentry 实现机制依赖两次额外的 call 指令做了一层装饰器。 我只能说,fentry 的想法是好的,但是下面的人执行出了问题。表面上给你宣传说“几乎没有性能损失”、“比 kprobe 快多啦”,实际的代价没人提,你真的去用才会发现,rnm 还我 kprobe!kprobe / uprobe 的 out of line execution 大干快上精妙绝伦,不需要任何假设,而 fentry 手握一个 nop 还这个不行那个不行,实在是菜。

143 views

Posted Jul 30

pwru 的两个局限 1. 由于大量(大部分?)处理 skb 的内核函数都是在 __dev_queue_xmit 之前,在那之前二层头是没有的,所以目前 pcap filter 是直接从三层开始过滤,导致 arp 相关的函数会被 filter out。 2. 由于 tcp 相关函数都是以 struct sock* 或者 struct tcp_sock* 作为入参,而 pwru 只扫 btf 找 struct sk_buff* 入参的函数,所以很多内核行为还没有被观测到。 第一个问题需要想办法静态(或者动态?运行时判断 skb->mac_header?)分类函数们,对二层和三层函数用不同的过滤代码。 第二个问题恐怕比较棘手,因为目前用 btf 貌似不能看出哪些 sk 可以转成 tcp_sock。只能弱智一点,比如函数里包含 'tcp' 则强转类型。 希望有一天,有一个工具能直接告诉大家:你好,你的这个 tcp 会话撞上慢启动了,不信你看这里的内核函数调用情况。

145 views
12•••5•••10•••15•••20•••25•••30•••35•••40•••45•••4748495051•••55•••60•••65•••70•••7576