1

我试图打破我的一个具有 MIPSEL 核心(小端 MIPS)的设备。我主要想这样做是因为它附带的软件有点损坏并且无法按预期工作(制造商不会帮助我,因为我每月不购买数千台)。

这个设备有一个 telnet 控制台,我已经有一个固件升级,它修改了一个具有可重定位代码的共享对象(一个 .so 文件)。我知道有一个函数被调用。所以当我访问这个设备的某个功能并且我已经完成了一个二进制文件来修改 /etc/passwd 以便我可以远程登录(这可以在我手动刷新我的自定义后完成固件自己)。

我已经“objdump”了这两个文件并且对这两个文件都进行了反汇编。

我的问题是:

如何用我的自定义函数替换原始库中的给定函数,以便我可以在盒子上运行我的代码?我知道 objcopy 可以工作,但是很难获得关于它的文档来实现这一点。

我想做的有点像病毒,虽然我不想分发它也不想闯入其他人的设备(顺便说一句,我所说的这个设备非常罕见)。

更新

我手动合并了二进制文件,“二进制”复制了我的自定义函数,然后手动更改了重定位文字。我注意只使用已经链接到原始共享对象的外部函数。但是,我将自己锁定在设备之外,因为我修改了一个(奇怪地)在设备启动时使用的函数,而主二进制文件的弱点让我更新它停止工作。

4

1 回答 1

0

您可以构建自己的包含该函数的共享库,并使用 LD_PRELOAD 覆盖包含的共享库。

于 2012-07-25T04:17:37.953 回答