CreateMutex
까보면 다나와~
Device (1)

Windbg, Device driver BreakPoint(BP)

퍼옴 :: cjhnim.egloos.com/3880348


Windbg에서 Breakpoint 잡는 다양한 방법들...Windbg에서 breakpoint를 설정하는 방법들에 대해서 써볼까 합니다.

제가 처음 Windbg를 접했을 때는 명령어를 사용하여 breakpoint를 잡는 방법을 애용했었습니다.


•kd> bp driverentry - breakpoint를 설정하고자 하는 대상 드라이버가 이미 로딩되어 있고 symbol도 로딩되어있을 때 사용합니다.

•kd> bp mydriver!driverentry - 대상 드라이버가 로드되지 않은 경우 사용할 수 있는 breakpoint 설정 방법입니다. 드라이버가 로드될 때 windbg가 자동으로 symbol을 로드하며 이때 mydriver!driverenty 가 실제 주소 값으로 변경되어 breakpoint로 설정됩니다. 그러므로 대상 드라이버가 언로드되고 다시 로드된다면 이 설정은 무용지물이 되어버립니다.

•kd> bu mydriver!driverentry - 이번 방법은 심볼로 breakpoint를 거는 방법입니다. 드라이버가 언로드되었다가 다시 로드되더라도 breakpoint 설정이 유효하게 됩니다.

•kd> bm /a mydriver!driver* - 와일드카드를 이용하여  breakpoint를 거는 방법입니다. 여러개의 함수를 한번에 설정할 때 사용하면 유용합니다.
하지만 위의 방법은 함수의 중간에 breakpoint를 걸기엔 좀 부적합합니다.. 그래서 vc 처럼 소스코드에 breakpoint를
바로 걸고 싶은 충동이 생기죠... 이럴 땐 아래의 방법을 사용하면 됩니다.

•kd> open -a mydriver!driverentry
라고 하면 mydriver.sys에 driverentry 함수가 있는 소스를 windbg창에 자동으로 열어줍니다.. 여기서 원하는  위치에 F9를 통하여 breakpoint를 설정을 하면 됩니다.. 단 이방법은 해당 모듈에 대한 symbol이 로드된 경우에만 사용가능한 방법입니다......

더 다양한 방법들은 WinDBG의 도움말을 참고하면 됩니다.

 


 

  Comments,     Trackbacks