일부 코드로 포기 소프트웨어를 패치하려고합니다.Mach-O 바이너리 (OSX)에 LC_LOAD_DYLIB 명령을 삽입하는 방법
소프트웨어는 탄소 기반이므로 InputManager를 사용할 수 없습니다 (적어도 필자는 생각하지 않습니다). 내 생각은 mach-o 헤더에 dylib 참조를 추가하고 초기화 루틴이 호출 될 때 새 스레드를 시작하는 것이 었습니다.
적절한로드 명령 (LC_ LOAD_DYLIB)을 추가하기 위해 hexeditor를 사용하여 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 부분을 수정해야한다는 것입니다 제공
누구든지 아이디어가 있습니까?
우수. 이것은 좋은 팁입니다. 답변을 받으려면 앱을 배포하지 않아야합니다. 나는 대체 HID를 사용할 수 있도록 개인적인 용도로 패치하고있다. (나는 HID에 대한 앱 배포자와 드라이버 제조업체 모두에게 희망을 포기했다.) –
네, 방금 다른 질문을 읽었습니다 ... mach_inject가 아마도 가장 좋고, 가장 쉬운 내기 일 것입니다. –