2009-11-29 39 views
14

Chúc mừng!Kỹ thuật đảo ngược một Apple Kext - Xây dựng lại lớp

Tôi hiện đang cố gắng mở rộng chức năng của Magic Mouse. Để làm điều này, tôi hy vọng sẽ viết một kext chặn các sự kiện từ trình điều khiển cảm ứng đa điểm, AppleMultitouchDriver.kext, diễn giải chúng, và hoặc gửi các sự kiện mới hoặc chuyển tiếp sự kiện thực tế. Cách tiếp cận này tương tự như cách tiếp cận được sử dụng bởi DoubleCommand.

Tôi đã tạo một kext thử nghiệm nhỏ để chặn các sự kiện chuột (nhấp, chuyển động, v.v.) vì điều đó cũng sẽ cần thiết.

Vấn đề tôi đang gặp phải là tôi không thể chặn các sự kiện từ các đối tượng AppleMultitouchDevice và/hoặc AppleMultitouchHIDEventDriver vì không có định nghĩa lớp cho chúng. Tôi cần có thể gán lại con trỏ cho hàm gọi lại như tôi làm trong trình chặn chuột và được thực hiện trong DoubleCommand. Theo như tôi biết, điều này có nghĩa là tôi cần phải xây dựng lại lớp AppleMultitouchDevice. Tôi đã có thể để có được một tham chiếu đến trường hợp của đối tượng AppleMultitouchDevice, vì vậy tôi chỉ cần để có thể đúc nó và sử dụng nó.

Bây giờ bạn có nền, đây là những câu hỏi trực tiếp của tôi:

  • gì phương pháp làm tôi cần phải sử dụng để thiết kế đối chiếu các kext hoặc tái tạo lại lớp học trong câu hỏi?
  • Những chương trình nào có sẵn sẽ hỗ trợ tôi trong nỗ lực này?
  • Có hướng dẫn hoặc sách điện tử nào tập trung vào chủ đề cụ thể mà bạn biết không?
  • Tôi có thể gán lại con trỏ gọi lại mà không thực sự tạo lại toàn bộ lớp không?
  • Bất kỳ điều gì khác tôi có thể đã bỏ lỡ vì tôi rất mới mẻ với điều này.

Cảm ơn bạn đã được tư vấn hoặc hỗ trợ !!

+0

Apple có cung cấp nguồn cho kexts của họ không? –

+0

Có, đối với hầu hết trong số họ. Điều này, tuy nhiên, được giữ kín. Tôi đoán họ không muốn mọi người nhìn vào cách tất cả các công nghệ độc quyền được cấp bằng sáng chế của họ hoạt động cho cảm ứng đa điểm. – Tyler

Trả lời

1

Tôi đã tìm được thứ mình cần. Bây giờ tất cả nó sẽ mất là thời gian và công sức. :)

+1

Chăm sóc để chia sẻ với người khác? – jackrabbit

+0

Tôi đã tìm thấy một chương trình có tên là IDA Pro. Nó là tuyệt vời cho kỹ thuật đảo ngược khá nhiều bất kỳ nhị phân ra khỏi đó. Tôi hy vọng sẽ sử dụng chương trình đó, kết hợp với GDB/gỡ lỗi hạt nhân từ xa để định vị phương thức mà trong đó con trỏ gọi lại được gán. Một khi tôi tìm thấy bù đắp của con trỏ gọi lại, tôi/nên/có thể gán lại nó bằng cách giải quyết trực tiếp bộ nhớ đó, hoặc thông qua ASM hoặc C. Vì vậy, phần khó nhất sẽ truy tìm qua tất cả các cuộc gọi phương thức và đọc tất cả các assembly thấy rằng bù đắp con trỏ. – Tyler

+0

Điều gì xảy ra khi bản cập nhật hệ điều hành di chuyển địa chỉ của con trỏ gọi lại? Tôi muốn có thể hack trình điều khiển bàn phím hệ thống để xử lý numpad '/', '*' và '-' làm tăng/giảm âm lượng. Tôi thấy rằng trong khi nó có thể có thể lấy các cuộc gọi lại nó có thể thay đổi với mọi bản cập nhật hệ thống. –

1

Đây có thể là sự giúp đỡ nào không?

FingerMgMt

+0

Thật không may là không. Tôi đã thấy điều này trước đây. Nó đang sử dụng cách tiếp cận tương tự như bài viết của tôi ở đây: http://stackoverflow.com/questions/1669909/extending-functionality-of-magic-mouse-do-i-need-a-kext Nó đang sử dụng MultiTouchSupport. khuôn khổ trong không gian người dùng. Tôi muốn viết điều này trong không gian hạt nhân để có được sự kiểm soát tốt nhất có thể. – Tyler

Các vấn đề liên quan