使用自定义One替换共享对象中的二进制函数(在MIPSEL下)

时间:2012-07-18 22:02:19

标签: mips embedded-linux shared-objects objdump

我正试图打破我的具有MIPSEL核心(Little endian MIPS)的设备。我主要是想这样做,因为它上面的软件有点破碎而且无法正常工作(制造商也不会帮助我,因为我不会每月购买数千台)。

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

我已经“objdump”这两个文件,并且两者兼顾。

我的问题是:

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

我想做的事情就像病毒一样,虽然我不想分发它,也不想闯入别人的设备(顺便说一下,我说的这个设备非常罕见)。

更新

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

1 个答案:

答案 0 :(得分:0)

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