2009-08-09 3 views
2

Mac OS X 10.5를 사용하여 dtrace를 사용하여 Mach-O 바이너리의 실행을 추적하는 방법을 알아 냈습니다. 그러나 기호가 모두 제거되어 내부 클래스/메소드 이름을 기반으로 사용 프로브를 작성하려는 시도가 실패합니다.Mach-O 바이너리에서 제거 된 기호를 재구성

클래스 - 덤프를 사용하여 클래스, 메소드 이름 및 구현 된 주소를 덤프 할 수 있었으므로이 코드를 사용하여 이진 파일의 심볼을 다시 작성할 수 있다고 가정합니다. 그게 가능 한가요? 그렇다면 도움이 될만한 도구 나 더 잘 이해할 수있는 독서 자료를 아는 사람이 있습니까?

이 수준의 바이너리 작업을 처음 시도한 것이므로 도움을 얻을 수 있습니다.

+0

어떻게 프로브를 사용 했습니까? 'objc'공급자를 사용해 보셨습니까? – 0xced

답변

0

아니요, 불가능합니다. 심볼이 제거되면 각 메소드의 코드가 시작되는 위치에서 정보가 손실됩니다. 이 정보를 재구성하려면 코드를 분해해야합니다. 각 클래스의 메소드가 무엇인지 알면, dtrace가 필요로하는 코드에서 코드의 위치를 ​​알 수 없습니다.

+0

사실, 메소드와 클래스의 구현 주소가 있습니다. 위에서 언급 한 클래스 덤프라는 깔끔한 작은 유틸리티. – chrisbdaemon