프로그래밍

 3198, 1/160 회원가입  로그인  
   newmin06
   objdump 실행시 출력되는 메모리 주소에 관해서..

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


리눅스에서 objdump [실행 파일명] 실행시..

8048374: 55        push %ebp
8048375: 89 e5    mov  %esp,%ebp
.
.
.

이런 식으로 출력이 되잖아요.

그런데, 왼편에 뜨는 메모리 주소가 감이 잘 안오는데요..

이 메모리 주소들은 objdump [실행 파일명]에 의해, 실행파일이 실제로 실행이 되어서 메모리 상으로 로드가 되어,

얻어진 주소값인지?, 아니면 실제로 실행파일의 실행이 일어난다면, 이러한 메모리 주소들에 로드가 될 것인지?..

여러가지 경우의 수가 떠오르는데, 검색을 해 봐도 다른 분들은 잘 이해하고 계시는지 이러한 질문은 없네요ㅠㅠ

마찬가지로 gdb ㅅㅣㅎ행시 나타나는 메모리 주소도 실제로 무엇을 뜻하는지 아시는 분은 설명해 주시면 정말 감사하겠습니다.

  Hit : 4086     Date : 2011/08/02 10:49



    
$Zero 해당 프로그램이 실행시 메모리에 올라갈 주소가 맞습니다.

디버거로 실행하면서 진행상황을 보는것이니까요 .

이 주소들은 프로그램이 실행되는 환경에 따라서 그때그때 다르지만,

커널영역과 유저영역이 나뉘어 있으므로 대체적으로 올라가는 주소는 비슷합니다.
(범위가 한정적이거든요)
2011/08/02  
pwn3r objdump 부분에 대한 답변을 드리자면 어디서 들은내용으로는 커널에 image 가 매핑될때 기준이 되는 base address가 정의되어있다고하네요 @_ @
그 base address과 프로그램 바이트코드들의 offset을 이용하여 계산하는게 아닐까합니다 (?)
(애초에 디버거도 이과정을 거치겠죠)
2011/08/02