드라이버가 메모리 상에 올라가는 위치
글쓴이: ssibseya / 작성시간: 금, 2008/04/18 - 11:58오전
exe나 dll의 경우 메모리 상에 올라가는 주소가 거의 항상 동일합니다.
예를 들어 다음과 같은 프로그램을 짜서 실행시키면
링크옵션:
/FIXED:0x80000000
실제코드:
VOID main()
{
static int temp=0x11223344;
__asm mov eax, temp
}
전체 PE 이미지가 0x80000000에 올라가게 되고(이건 세그먼테이션과 페이징 파일시스템의 특성을 활용한 윈도우즈 메모리 관리체계로 가능) 결과적으로 메모리상에 올라가는 temp의 주소는 PE 이미지 자체에 firxed됨으로써 "__asm mov eax, temp"에서 접근하는
temp의 주소값이 정해진 값을 가지게 됩니다.
그런데 드라이버를 작성해서 결과적으로 나오게 되는 "~.sys" 파일도 마찬가지로 메모리의 특정 주소번지에 이미지를 로딩하도록 작성하는 것이 가능한지 알고 싶습니다. 오래된 legacy diver의 소스코드를 사용해서 드라이버를 작성하는 경우에 이런
문제가 생기더라구요.
전문가 여러분의 관심 부탁드립니다.
그럼 이만...
Forums:
댓글 달기