2009-11-29 3 views
14

인사말!리버스 엔지니어링 : Apple Kext - 클래스 재구성

현재 Magic Mouse의 기능을 확장하려고합니다. 이를 위해 멀티 터치 드라이버 인 AppleMultitouchDriver.kext에서 이벤트를 가로 채서 해석하고 새로운 이벤트를 전달하거나 실제 이벤트를 전달하는 kext를 작성하려고합니다. 이 접근법은 DoubleCommand에 의해 사용 된 접근법과 유사합니다.

저는 마우스 이벤트 (클릭, 동작 등)를 가로 채기 위해 필요한 작은 테스트 kext를 이미 만들었습니다.

지금 문제는 AppleMultitouchDevice 및/또는 AppleMultitouchHIDEventDriver 개체의 이벤트를 가로 챌 수 없다는 것입니다. 클래스 정의가 없기 때문입니다. 나는 마우스 인터셉터에서와 마찬가지로 DoubleCommand에서와 마찬가지로 콜백 함수에 포인터를 재 할당 할 수 있어야합니다. 지금까지 내가 아는 한, 이것은 AppleMultitouchDevice 클래스를 재구성해야한다는 것을 의미합니다. 이미 AppleMultitouchDevice 객체의 인스턴스에 대한 참조를 얻을 수 있으므로이를 캐스팅하고 사용할 수 있어야합니다.

이제 여기에, 배경을 가지고 내 직접 질문 있음 :

  • 어떤 방법 나는 KEXT를 리버스 엔지니어링이나 질문의 ​​클래스를 재구성하기 위해 사용해야합니까?
  • 이러한 노력을 돕기 위해 어떤 프로그램을 사용할 수 있습니까?
  • 아는 특정 주제에 초점을 둔 자습서 또는 전자 서적이 있습니까?
  • 전체 클래스를 실제로 재구성하지 않고도 콜백 포인터를 재 할당 할 수 있습니까?
  • 제가 놓친 부분이있을 수 있으므로 다른 부분이 너무 새로 생겼습니다.

미리 조언 해 주셔서 감사합니다.

+0

Apple은 kexts에 소스를 제공하지 않습니까? –

+0

예, 대부분의 경우 그러나 이것은 비공개로 유지됩니다. 나는 특허를 취득한 독점 기술이 멀티 터치를 위해 어떻게 작동하는지 사람들이 엿보기를 바라지 않는다고 생각합니다. – Tyler

답변

1

내가 필요한 것을 찾기 위해 관리했습니다. 이제는 시간과 노력만으로 충분합니다. :)

+1

다른 사람들과 공유하는 데 관심이 있으십니까? – jackrabbit

+0

IDA Pro라는 프로그램을 발견했습니다. 리버스 엔지니어링을 위해서는 바이너리 아웃을하는 것이 좋습니다. 그 프로그램을 GDB/원격 커널 디버깅과 함께 사용하여 콜백 포인터가 할당 된 메소드를 찾길 바란다. 콜백 포인터의 오프셋을 찾으면 ASM 또는 C를 통해 해당 메모리를 직접 주소 지정하여 다시 할당 할 수 있어야합니다. 그래서 가장 어려운 부분은 모든 메서드 호출을 추적하고 모든 어셈블리를 읽는 것입니다. 그 포인터 오프셋을 찾는다. – Tyler

+0

OS 업데이트가 콜백 포인터의 주소를 이동할 때 어떻게됩니까? 음량을 '/', '*'및 '-'로 볼륨 업/다운/오프로 처리하기 위해 시스템 키보드 드라이버를 해킹 할 수 있기를 원했습니다. 콜백을 잡는 것이 가능할 수도 있지만 모든 시스템 업데이트마다 변경 될 수 있음을 발견했습니다. –

1

도움이 될만한가요?

FingerMgMt

+0

불행히도 아닙니다. 나는 이것을 전에 보았다. 그것은 내 게시물과 같은 접근 방식을 사용하고 있습니다 : http://stackoverflow.com/questions/1669909/extending-functionality-of-magic-mouse-do-i-need-a-kext MultiTouchSupport를 사용하고 있습니다. 사용자 공간에있는 프레임 워크. 커널 공간에 이것을 작성하여 최상의 제어가 가능하도록하고 싶습니다. – Tyler