我想要给一个废弃的软件打补丁,加入一些代码。
这个软件是基于Carbon的,所以我不能使用InputManager(至少我认为我不能)。我的想法是在mach-o头文件中添加dylib引用,并在调用初始化例程时启动一个新线程。
我已经使用十六进制编辑器混淆了mach-o头文件,添加了适当的加载命令(LC_LOAD_DYLIB)。
otool报告了我期望看到的内容,所以我相当有信心文件格式正确。
Load command 63 cmd LC_LOAD_DYLIB cmdsize 60 name @executable_path/libAltInput.dylib (offset 24) time stamp 1183743291 Fri Jul 6 19:34:51 2007 current version 0.0.0 compatibility version 0.0.0
然而,启动二进制文件后出现以下错误:
dyld: bad external relocation length
我唯一能猜测的是我需要修改LC_SYMTAB或LC_DYNSYMTAB部分...
有人有什么想法吗?