2010-03-30 8 views
1

linux에서 실행 파일에서 정보를 읽는 중에 문제가 발생했습니다. 다음과 같은 정보는 다음과 같습니다objdump에서 정보를 얻는 방법

804a0ea: 04 08   add $0x8, %al 
    ... 
804a0f4: a6    cmpsb %es:(%edi),%ds:(%esi) 

나는 두 가지 질문이 있습니다

  1. 주소 804a0ea 및 804a0f4은 무엇을 의미합니까? 프로세스의 주소 공간에있는 가상 주소?
  2. 무엇이 ... 의미합니까? 804a0f0 주소로 어떻게 명령을받을 수 있습니까?

미리 감사드립니다. 코드의이 부분 주위

더 많은 정보 :.

Disassembly of section .got.plt: 

    0804a0e8 <_GLOBAL_OFFSET_TABLE_>: 
    804a0e8:  14 a0     adc $0xa0,%al 
    804a0ea:  04 08     add $0x8,%al 
      ... 
    804a0f4:  a6      cmpsb %es:(%edi),%ds:(%esi) 
    804a0f5:  87 04 08    xchg %eax,(%eax,%ecx,1) 
    804a0f8:  b6 87     mov $0x87,%dh 
    804a0fa:  04 08     add $0x8,%al 
    804a0fc:  c6 87 04 08 d6 87 04 movb $0x4,-0x7829f7fc(%edi) 
    804a103:  08 e6     or  %ah,%dh 
    804a105:  87 04 08    xchg %eax,(%eax,%ecx,1) 
    804a108:  f6 87 04 08 06 88 04 testb $0x4,-0x77f9f7fc(%edi) 
    804a10f:  08 16     or  %dl,(%esi) 
    804a111:  88 04 08    mov %al,(%eax,%ecx,1) 
    804a114:  26 88 04 08    mov %al,%es:(%eax,%ecx,1) 
    804a118:  36 88 04 08    mov %al,%ss:(%eax,%ecx,1) 
    804a11c:  46      inc %esi 

희망 누군가가 나에게 손을 줄 수

+0

를 인쇄 컴파일 또는 터미널 GDB 을 입력 한 후 레이아웃은 ASM을 입력하고 입력합니다. – Johan

답변

1

global offset table 코드를 가리키는되지 :-), 그것은 데이터 (HRM를 가리키는 것 .. . 오프셋, 실제로). 따라서 해체하려고하면 의미있는 코드가 나오지 않습니다. (실제로 코드 값 0804a014, ... 080487a6을보고 어떤 오프셋을 찾을 수 있습니다).

... 일반적으로 스트림에 0이 잔뜩 있음을 의미합니다. 첫 번째 줄 유형 주에 텍스트 편집기

  • +0

    나는이 질문을 게시 한 직후이를 인정했다. 내가 새로 왔기 때문에 나는 쓰레드를 닫는 방법을 모른다 :-). 모두 고마워. 그건 그렇고, 0x0804a014 프로세스의 주소 공간에 가상 주소를 해결합니까? –

    2
    1. 만 복사 어셈블리 코드 (조립 주())
    2. 그리고 *는
    3. 열기 터미널을 .S으로 파일을 저장하고 입력 GCC -s -o 나는 당신이 조금 더 정보를 추가 할 필요가 있다고 생각
    관련 문제