编辑
2025-01-22
工作知识
0
请注意,本文编写于 135 天前,最后修改于 135 天前,其中某些信息可能已经过时。

目录

一、跟踪函数
二、创建hook
三、验证

对于系统,我们可以针对一个库的函数调用进行ld preload来hack,这样我们只要知道核心库的函数名和相关信息,就能通过hook的方式来伪造系统核心信息

一、跟踪函数

为了跟踪函数的调用,可以通过ltrace,如下:

ltrace -p `pidof activation-daemon`

这样我们可以找到关键函数:license_should_escape

二、创建hook

我们知道了关键函数,则可以编写一个简单的c如下:

#include <syslog.h> int license_should_escape() { syslog(LOG_ERR, "%s kylin hacked\n", __func__); return 1; }

此时我们通过gcc可以将其编译成动态库so,如下:

gcc kylin_hack.c -o libkylin_hack.so --shared

此时我们生成了库 libkylin_hack.so 。接下来需要进行ld preload如下:

echo /usr/lib/aarch64-linux-gnu/libkylin_hack.so >> /etc/ld.so.preload

进行如上的命令之后,我们可以直接重启

三、验证

此时我们发送dbus,可以看到激活已经被破解,如下:

root@kylin:~# dbus-send --system --print-reply --dest=org.freedesktop.activation /org/freedesktop/activation org.freedesktop.activation.interface.date method return time=1723801648.866529 sender=:1.124 -> destination=:1.125 serial=9 reply_serial=2 string "2099-12-31" int32 0

我们查看设置界面的信息,可以看到已激活