2012-07-18 20 views
1

我试图打破我的MIPSEL核心(小端MIPS)的设备里面。我主要想这样做,因为它上面的软件有点破,不能按预期工作(并且制造商不会帮助我,因为我不会每月购买数千个单元)。用自定义的一个替换共享对象中的二进制函数(MIPSEL)

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

我已经“objdump”这两个文件,并具有两者的dissasembly。

我的问题是:

我怎么能与我的自定义一个这样我就可以在包装盒上运行我的代码从原来的库替换给定函数?我知道objcopy可以工作,但它很难得到它的文档来实现这一点。我想要做的就是像病毒一样,虽然我不想分发它,也不想闯入其他人的设备(顺便说一句,这个设备我说的是非常罕见的)。

UPDATE

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

回答

0

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

+0

这是行不通的,因为我没有shell访问设​​备。 – Chiguireitor 2012-07-25 13:43:56

+0

如何在C中使用setenv/putenv设置LD_PRELOAD,然后设置execvp? ....但如果你能做到这一点,我想你可以安装一个shell。 – technosaurus 2012-07-25 20:04:55

+1

确切地说......问题不是执行某些功能,而是如何通过捎带已经运行的二进制文件来运行它。无论如何,我拧了我的设备,我锁定了一个很好的telnetable砖。猜猜我需要找到另一个错误的设备来测试我的破解。 – Chiguireitor 2012-07-26 13:48:08