9 macos mach-o dylib otool dyld
我想用一些代码修补一块废弃软件.
该软件是基于碳的,所以我不能使用InputManager(至少,我认为我不能).我的想法是在mach-o标头中添加一个dylib引用,并在调用初始化例程时启动一个新线程.
我使用hexeditor添加了相应的加载命令(LC_ LOAD_DYLIB),并使用mach-o标头.
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部分......
有人有主意吗?
我不确定您要完成什么,但是最简单的方法可能是在启动后将线程注入到mach任务中。有关执行此操作的大量信息(以及执行此操作的代码),请参见:http : //rentzsch.com/mach_inject/。
您应该注意的一些警告: