Windows 64비트로 드라이버 포팅
Posted in Device Driver 관련 on 05/27/2010 02:33 pm by adminWindows 64비트로 드라이버 포팅 할 일이 생겼다.
아래의 문서와 링크를 참고한다.
http://support.microsoft.com/kb/888728/ko
————–
64bit 플랫폼은 x64와 IA64가 있다.
IA64는 진정한 Real 64bit 운영체제를 위한 CPU로써 인텔 HP Microsoft의 공동 작품.
그리고 x64는 AMD에서 인텔의 64비트 프로세서에 대응하기 위해 Memory Addressing 영역을 2의 64승까지 늘린 프로세서.
IA64는 비싼가격이기에 보통 일반 유저는 사용하지 않는다.
————–
빌드시 error C2220: warning treated as error – no ‘object’ file generated 에러가 난다면 아래를 Sources 파일에 추가한다.
1.
!
if
$(FREEBUILD)
2.
MSC_WARNING_LEVEL=/W1
3.
!
else
4.
MSC_WARNING_LEVEL=/W3
5.
!endif
그래도 안되면.. /W1 부분을 /W0 으로 변경한다.
————–
64비트 드라이버는 반드시 인증을 거쳐야한다.
인증을 받지 않은 드라이버는 로딩조차 되지 않는다.
개발시에는 테스트 모드로 부팅해서 개발이 가능하다.
하지만 어차피 인증은 받아야 하는데, 대략 1년에 40만원 정도라한다.
인증 방법은 여기, 여기 를 본다.
인증 업체는 아래와 같다.
Baltimore CyberTrust
Equifax Secure
GTE CyberTrust
GlobalSign
GeoTrust
VeriSign
——————
윈도우즈 7 테스트 모드로 변경 및 드라이버 파일(.sys) 에 테스트 사인 삽입 프로그램
(개발자들이 필요한 프로그램)
——————
아래는 64비트에 와서 갑자기 인증 방법이 왜 생겼는지에 대한 마소의 답변이다.
결론: 보안을 위해서 인증을 사용한다.
출처: http://www.driveronline.org/bbs/view.asp?tb=systembbs&no=12
대충의 내용을 살펴보면 아래와 같습니다.
Q. kernel-mode code signing을 하는 이유는 무엇이냐
커널 모드 code를 사용하는 악성코드가 많이 늘어났기 때문에
Q. 32Bit는 안하고 64Bit 에서만 하는 이유는?
32Bit를 할경우 이미 많은 드라이버가 설치 되어 있어서 문제가 많이 발생한다.
아주 적은 Driver 만이 64Bit에서 동작하고 있기 때문에 64Bit에서만 한다.
Q. 32Bit version을 가지고 있는데 signed 받아야 하나?
64Bit 모듈과 32Bit 모듈 둘다 제공 한다면 MS에서는 인증 받으라고 권하고 있다.
Q. 왜 그룹 Policy 적책으로 신뢰하게 하지 않는가
악성코드들이 이용할 수 있기 때문에 MS 에서는 허용하지 않는다.
Q. 왜 VeriSign 으로 부터 $499 짜리 인증서가 필요한가?
믿을만한 인증기관에서 인증을 받아야 한다고 한다. 전세계에 판매하는 Software에서 $499는 작은 돈이라고 한다.
Q. 왜 VeriSign만 되는가 다른 CA가 안되는 이유?
현재 MS가 OCA, WER 에서 VeriSign의 인증을 사용하고 있기 때문이고 다른 CA하고도 진행중이다.
Q. $500은 나에게 비싸다 다른 방법이 없겠나?
^^; 인증을 받는것이 더 좋다는 이야기 뿐이네요
Q. 이것은 DRM 적책의 시작인가?
아니다 보안과 품질을 향상 시키고자 하는 것이다.
Q. 왜 Windows Logo, DRS대신 signing 이 필요한 것인가?
Logo, DRS는 보안영역에 대한 보증을 하지 못한다 signing을 사용해야 한다.
————–
출처: http://www.driveronline.org/bbs/view.asp?tb=drivetc&no=948
H/W 를 사용하는 DeviceDriver 라면 WHQL 인증을 받으셔야 합니다.
(WHQL 인증방법: http://www.sinwoong.co.kr/144)
이것은 지금 DTM 으로 변경되었지요
결국 Microsoft 가 원하는 방식으로 Code 가 작성되고 동작하는지 검증을 받은 후 Microsoft 에서 해당 드라이버가 안전하다는 인증을 해주는 것 입니다.
그러나 파일 필터와 같이 장치를 사용하지 않는 드라이버에 대해서는 DTM 을 통하지 않고 SelfSing 을 진행 합니다.
필터 드라이버와 같이 자주 Update 하는 드라이버를 DTM 인증을 통하면 너무 많은 시간이 걸리기 때문에 다른 길을 열어 준 것 입니다.
방법은 Test sing 한 것과 비슷 합니다.
먼저 Microsoft 의 whdc 사이트에서 cross sign 을 지원하는 cross certification 을 지원하는 회사에서 인증서를 하나 구입하신 후 아래 site 에서 cross sing 인증서를 다운 받으신 후 구입하신 인증서와 cross 인증서를 사용하여 인증하시면 됩니다.
이 게시판에 인증에 대한 이야기가 있으므로 검색해보세요
그리고 보다 자세한 내용은 아래 사이트를 참고하세요
————–
바이너리 호환(.sys)은, 64bit 시스템에서 사용하는 드라이버는 64bit 컴파일러로 만든 바이너리 파일 이여야 한다.
32bit 컴파일러에서 만든 바이너리 파일은 응용프로그램에서는 wow64를 통해서 허용 되지만, 드라이버 파일에서는 허용되지 않는다.
반드시 64bit 컴파일러로 컴파일해서 사용한다.