코드영역을 비교해 보려고 다음과 같이 덤프를 떳는데
한참 작은 size 만 덤프가 되었다.
data.save.binary "D:\c_expat_code_2.dat" 0x40031000++0x1d000
다시한번 시도해 보니 bus 애러가 난다.
이유인 즉슨...
linux 는 4kb 단위로 demanding page 를 한다.
따라서 hit 가 되지 않은 code 영역은 ram 상에 없고, map 되어 있지 않으므로 애러가 나고
덤프되던 영역까지만 저장이 되는 것이다.
코드 영역이
40031000-4004e000 r-xp 00000000 b3:02 25236034 /mnt/data/factoryfs/lib/libexpat.so.1.5.0
이정도 크기라면,
해당 영역을 뒤져가며 다 dump 를 떠야지만 code 유효성 검사를 할 수 있다.
한참 작은 size 만 덤프가 되었다.
data.save.binary "D:\c_expat_code_2.dat" 0x40031000++0x1d000
다시한번 시도해 보니 bus 애러가 난다.
이유인 즉슨...
linux 는 4kb 단위로 demanding page 를 한다.
따라서 hit 가 되지 않은 code 영역은 ram 상에 없고, map 되어 있지 않으므로 애러가 나고
덤프되던 영역까지만 저장이 되는 것이다.
코드 영역이
40031000-4004e000 r-xp 00000000 b3:02 25236034 /mnt/data/factoryfs/lib/libexpat.so.1.5.0
이정도 크기라면,
해당 영역을 뒤져가며 다 dump 를 떠야지만 code 유효성 검사를 할 수 있다.
'Programming > Linux_Kernel' 카테고리의 다른 글
flush_dcache_page와 kmap_atomic (0) | 2010.04.26 |
---|---|
L1, L2 cache (0) | 2010.04.26 |
symbol table 로 code area 에서 함수 위치 찾기 (0) | 2010.04.22 |
readelf - 섹션 위치 한눈에 보기 (0) | 2010.04.21 |
objdump - 실행파일에서 asm code 확인 (0) | 2010.04.21 |