Show newer

RT @[email protected]

马老板用JavaScript控制宇宙飞船,中国用ActionScript调度高速铁路,cui先生看着go代码里满屏的 if err != nil 骂街,人类有非常光明的未来

🐦🔗: twitter.com/cuicat/status/1349

你知道中国人有多拼吗?尽管有时勇猛,有时怂的像个孙子。但仍不敢相信:庸碌没有未来,拼搏定会白费。致敬每一个你,成就富裕的资本家。永别了,打工人!

interpose!

interposelibc.so:
	$(CC) -share -fPIC -o interposelibc.so $(OBJ)
#include <unistd.h>
#include <errno.h>

// original
pid_t (*fork_fp)(void);

// init
__attribute__((constructor))
void interposelibc_init()
{
    fork_fp = dlsym(/*RTLD_NEXT*/ -1, "fork");
}

pid_t fork(void)
{
    if(INTERPOSE_ALL_FAIL)
    {
        errno = ENOMEM;
        return -1;
    }
    return fork_fp();
}

我日你大爷的,路上风是从地上往脸上挂的,我出来干啥

果然还是男人更懂男人
这发型,这神态,绝了

新年临晨3点和网友吐槽unix-like系统设计,真刺激

FreeBSD 加调试

设施
···txt
<sys/systm.h> // log()
<sys/syslog.h> // log level
log(LOG_LEVEL, “fmt string”, …);
···

结果

时间 主机 kernel: 日志。。。

实例

--- kern_exec.c.orig	2020-12-30 16:50:13.809780000 +0800
+++ kern_exec.c	2020-12-30 16:49:54.466415000 +0800
@@ -358,6 +358,8 @@
 static int
 do_execve(struct thread *td, struct image_args *args, struct mac *mac_p)
 {
+	log(7 /*LOG_DEBUG*/, "execve(%s)\n", args->begin_argv); // TODO: literal
+
 	struct proc *p = td->td_proc;
 	struct nameidata nd;
 	struct ucred *oldcred;
Show thread

我也是瞎改过内核的人了! :pio_cute:

FreeBSD-12.1-RELEASE
kern_exec.c:599 (*execsw[i]->ex_imgact)(imgp)启动的elf##-imgact中
imgact_elf.c:1264
__elfN(load_interp)(imgp, brand_info, interp, &addr, &imgp->entry_addr);
将 entry_addr 换成动态链接器的

b站上看完了电影百鸟朝凤,画风一转就开始发刀了。。。

freebsd的do_execve
文件都找了,都加载了,内存都映射了。
然后一个检测,卸载映射,释放内存,fname改成interpreter然后加载ld-elf.so去了,从头再来。。。
???我怀疑我看的是盗版

这已然不是逐梦的时代了,这个时代的主旋律是挥动无袖而起舞,在妄想中寻求超脱。
(我就随口说了几句,对方想到鲁迅好像说过类似的,我搜不到,也没法找,这可有点秀,随便就能撞上吗(

如今手机被搞的,使得我们与监管者“关系”越来越近,与朋友关系越来越远

Show older
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。