|
PE (윈도우용 실행 파일 포맷) 관련 코드를 작성하다가 지금까지 몰랐던 사실을 하나 알게되어 지금까지 나만 그랬던 것인지 알고싶어, 퀴즈를 하나 내보려고 합니다. ^^;;
보통 PE 를 다루는 코드는 아래의 코드 처럼 CreateFile() -> CreateFileMapping() -> MapViewOfFile() API 를 호출해서 file 에 대한 포인터를 구한다음 어쩌구 저쩌구 처리를 하죠. 지금까지 저도 별 생각없이 이런식으로 처리했었는데요. 오늘 유닛테스트를 하다가 심각한 문제가 있음을 깨달았습니다. Exception 에 의한 crash 가 발생할 수도 있는 버그입니다. 데체 뭘까요? ( SafeHandle 객체는 그냥 resource 관리를 위한 객체이니 신경쓰지 마시구요 ^^) ps. 최초로 정답을 맞추시는 분께는 ... 박수쳐드릴께요. -_-;;
jz 님께서 답을 맞추주셨습니다. ~~ 짝짝 ~~ 박수~~ 아래는 수정된 코드 입니다. CHECK #1 에서는 이 파일이 만일 PE 파일의 최소 사이즈를 검사합니다. 대상이 PE 라면 적어도 IMAGE_DOS_HEADER 크기 보단 클테니까요. CHECK #2 에서는 dos file 사이즈를 검사합니다. e_cp 는 파일이 차지하는 페이지의 수이고, e_cblp 는 마지막 페이지의 바이트 수입니다. 따라서 PE 라면 (IMAGE_DOS_HEADER::e_cp * PAGE_SIZE) 이상의 크기이어야 합니다. CHECK #3 에서는 e_lfanew 오프셋에 대한 유효성 검사를 합니다. 당연히 해야겠죠. :-) 예전에 작성한 코드엔 저런 예외처리 코드가 없었는데, 심심이 코드를 보니 다 처리하고 있었더군요. 매번 까먹는 제 머리가 문제였던것이군요. -_-;;
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
|
카테고리
< 링크 >
게시판 욕해도 됩니다. ㅋㅋ 심심이 - springnote zesrever 의 지식펌프 까마구님 cpplog Woof 님 maystyle 사파고수 재학사마 서우석님 x-Type 이기탁님 정성태님 신영진님 이명헌경영스쿨 haskell 언어 이재원 e-campus codian.net zendlinde - 건즈온라인개발자 xecode.net 이동우님 위키 왕멀-게임개발자로살아가기 삽질하는 플머-민성기님 블로그 검색엔진 첫눈 블로그 Kei 의 바이러스 세상 mat 님 블로그 신경준님 블로그 윤훈남님 블로그 blog.hsd.or.kr IDA 메인 아키텍트 게임개발-sky team 송상무님 세율이 민쓰 hackaday.com 해킹속임수의 예술 네이버-임베디드 카페 정원교 zealot님 serious-code 홍가일보 doronh peterwie - UMDF leader sysinternals sysinternals 뉴스레터 MS r&d bkchung blog MS 서진호님 window communication 최근 등록된 덧글
잘 보고 가요.. :)
by :) at 10/30 워 이거때문에 해맸는데 .. by 일리 at 10/26 진정한 take(공유)!!!!.. by rees at 10/03 그러게 술한잔 해야 하는.. by somma at 09/25 쫑호~ 잘 지내고 있는감?.. by somma at 09/25 안녕하세요 잘 지내시죠?.. by 김종호 at 09/22 지만이네나 여기나 역시.. by 양군 at 09/22 필코 마제는 기계식인데.. by 욱 at 09/07 그냥 할당에 비해서 걍 3.. by Hide_D at 09/01 으흠.. 해보시고 알려.. by somma at 08/20 최근 등록된 트랙백
폴포츠 꿈은 이루어지다
by 연예의 인연으로... DDK VS에 연동하기~! by 박한범님의 이글루 [PE]DOS대가리의 .. by 미친감자의 BLOG 십년차의 생각 by sugiii's me2DAY 십년차의 생각 by sugiii's me2DAY Windows Handle by MalwareLAB [디버그랩] Windows .. by NaggingMachine jjjismy의 생각 by jjjismy's me2DAY Vista의 EncodePoint.. by Woof's EncodePointer 함수 .. by Woof's 이글루링크
미친병아리가 삐약삐약
김명신의 즐거운 하루 소스코드위를 걷다..... zoops 이야기 ▒ 제닉스의 사고뭉치 ▒ 餘分D: physics and fun Just for fun~ 달리다. 그리고 날다. 게임회사 이야기 ~★~ 우하하!!~ 프로.. 헐랭이와 IT보안 Alphageek 견우의 블로그 from __future__ impor.. Sodécho 내일은 내일의 바람이 분다. 델파이로 만드는 검색엔진 The second story ::거듭나기:: kkamagui의 프로그래.. 루오니의 집 개발자 서씨 Zealot Xeraph@NCHOVY SecurityCode Bellevue Project Coderant의 보안과 전략 Jania's Blog 미친감자의 LOG 그 냥반의 기술 공간 art.oriented mocca Strategy Thinking 이글루 파인더
라이프로그
태그
|