운영 체제/하드웨어 통신/리버스 엔지니어 드라이버 캡처

운영 체제/하드웨어 통신/리버스 엔지니어 드라이버 캡처

나의 주요 질문은 오픈 소스 커뮤니티가 Windows 드라이버(예: 비디오 카드)를 리버스 엔지니어링하여 Linux에서 다시 작성할 수 있는 방법입니다.

저는 전기공학을 전공했기 때문에 마이크로프로세서 설계, 조립, 임베디드 시스템용 C언어 등의 강좌를 수강하고 임베디드 리눅스 관련 작업을 했습니다. 그러나 하드웨어 제조업체의 API 없이 Linux용 드라이버를 작성하는 방법을 이해하려고 하면 뭔가 빠진 것 같습니다.

내 문제는 일부 새 노트북에는 듀얼 그래픽 카드가 함께 제공된다는 것입니다. 통합형과 개별형의 두 가지 유형이 있습니다. Windows에는 둘 사이를 전환할 수 있는 드라이버 소프트웨어가 있지만, 제가 아는 한 오픈 소스나 독점 드라이버는 없습니다. 분명히 나는 ​​"맙소사, 그 메시지를 어떻게 써야 하는가?"와 같은 어리석은 질문을 하는 것이 아닙니다. 하지만 그 일을 통해 내가 항상 궁금했던 점을 깨달았습니다.프로세스Linux에서 하드웨어 지원을 받으세요.

답변1

물론 많은 가능성이 있습니다.

예를 들어 USB 장치인 경우 드라이버 지원(네트워크의 tcpdump와 유사)이 있는 시스템의 장치/컴퓨팅 간의 USB 트래픽을 모니터링할 수 있습니다. 예를 들어 Windows의 경우 IIRC usbsnoop과 같은 여러 가지 USB 모니터링 도구를 사용할 수 있습니다.

USB 스캐너의 경우 기본 설정을 사용하여 추적을 생성한 다음 하나의 설정을 변경하고 다른 추적을 생성하고 비교하고 변경된 내용을 찾는 등의 작업을 수행할 수 있습니다.

마찬가지로 SCSI, Firewire 등의 장치 내용을 추적할 수 있습니다.

그런 다음 독점 드라이버를 분해/디버깅해 볼 수 있습니다(예:IDA 프로페셔널 에디션).

또는 가상 머신이나 에뮬레이터(예: qemu)에서 Windows를 실행하고 중단점을 사용하여 드라이버 호출 전후에 하드웨어 상태를 확인할 수 있습니다. 이와 유사하게 드라이버가 무엇을 레지스터에 쓰고/읽는지 관찰할 수 있습니다.

관련 정보