我想用一些代码修补一段废弃软件。
该软件是基于碳的,所以我不能使用InputManager(至少,我认为我不能使用)。我的想法是将dylib引用添加到mach-o header ,并在调用初始化例程时启动新线程。
我已经使用hexeditor添加了适当的加载命令(LC_ LOAD_DYLIB)来处理mach-o header 。
otool报告了我希望看到的内容,因此,我非常有信心文件格式正确。
加载命令63
指令LC_LOAD_DYLIB
指令大小60
名称@ executable_path/libAltInput.dylib(偏移量24)
时间戳记1183743291 2007年7月6日星期五19:34:51
当前版本0.0.0
兼容版本0.0.0
但是,启动二进制文件会给我以下错误
dyld:外部重定位长度错误
我只能猜测这意味着我需要修改LC_ SYMTAB或LC_ DYNSYMTAB部分...
有人有主意吗?
最佳答案
我不确定您要完成什么,但是最简单的方法可能是在启动后将线程注入(inject)到mach任务中。可以在此处找到有关执行此操作的大量信息(以及运行该操作的代码):http://rentzsch.com/mach_inject/。
您需要注意的一些注意事项: