97, 1/5 회원가입  로그인  
   kywoo81
   엔트리포인트가 어떻게 다를수가 있죠?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=49 [복사]


exe화일을 실행하면 윈도우가 정해진 위치부터
프로그램해석을 시작하는거 아닌가요?
엔트리포인트가 다르면 os가 어떻게 알고 그넘을
실행하나요?
모른다면 실행이안되니 말이안되고 안다면 그리 찾기
쉬운것을 왜 올리디버거나 IDA같은것은 모른다고
나오는건가요....

물론 대부분은 다 나오지만 가끔 안나오는것들 있잔아요...

  Hit : 5200     Date : 2012/09/16 11:35



    
jwkzzangs EntryPoint(EP, 엔트리포인트)는 파일이 메모리에 로드되어 파일작성자가 짜 놓은 코드의 처음 부분을 가리키고 있습니다.

이는 PE View로 확인했을때 NT헤더의 Optional 헤더의 Address of Entry Point 값(RVA)으로 확인할 수 있습니다.

대부분의 실행파일들은 EP가 0이 아닌값이 저장되어있는데 가끔 악성코드나 기타 악용을 목적으로 하는 파일을 강제로 EP에 0을 집어넣고 파일이 실행되고 EP 전까지 파일을 실행하기 위한 코드를 실행하는 부분에 추가로 EP를 0에서 다른값으로 바꾸도록 하는 코드를 삽입해 놓습니다.

EP에 0을 너놓은 이유는 여러가지가 있겠지만 기본적으로 EP가 0이되면 PE View, Olly, Ida같은 프로그램들이 파일을 읽을때 EP가 0이면 잘못된 파일로 인식하게 됩니다. 이를 이용해서 분석을 어렵게 만들기 위함입니다.
2012/09/16  
jwkzzangs 이해가 되셨는지요.... 2012/09/16  
kywoo81 음.. 그럼 EP가 0이면 exe의 첫번째 바이트부터 실행을 시작한다라는건가요?
RVA값을 읽어서 거기부터 어셈블리 코드를 한바이트씩 실행하면
아무리 자기 압축화일이거나 기타 꼬아놓은 실행화일들도 한줄씩 역어셈이 가능하다는 말이죠?
2012/09/16  
jwkzzangs 그렇죠 실행은 되지만 각종툴들이 ep 0체크를 하기때문에 툴 사용 하기가 까다로워지죠 2012/09/16  
jwkzzangs 처음 실행하는 부분은 메모리에 로드 됬을때 이미지베이스 더하셔야 합니다~ 2012/09/16