어셈 분석하다가 -_-

lacovnk의 이미지

_dl_runtime_resolve () from /lib/ld-linux.so.2
do_lookup_versioned () from /lib/ld-linux.so.2
fixup () from /lib/ld-linux.so.2

gdb로 하나하나 가다보면, 이런 것들을 call하는데, 이것들이 어떤 영향을 미치는지 알수 있을까요?

예를 들면 어떤 것을 리턴하는지, 어떤 args를 순서대로 사용하는지 등등에 대해 알아볼 곳이 없을까요 ㅠㅠ

저 파일들을 objdump해서 보면 보이긴 합니다만 장난아니던데요 :(
소스코드를 다운받아서 봐도 잘모르겠고요 ㅠㅠ

그리고 다음이 이해가 안갑니다

80486e8:       ff 35 e8 a7 04 08       pushl  0x804a7e8
80486ee:       ff 25 ec a7 04 08       jmp    *0x804a7ec

점프할 내용이 담긴 주소로 가보면 다음과 같습니다.

804a7e4:       08 a7 04 08 00 00       or     %ah,0x804(%edi)
 804a7ea:       00 00                   add    %al,(%eax)
 804a7ec:       [b]00[/b] 00                   add    %al,(%eax)
 804a7ee:       00 00                   add    %al,(%eax)
 804a7f0:       fe 86 04 08 0e 87       incb   0x870e0804(%esi)
 804a7f6:       04 08                   add    $0x8,%al

저 위에 명령은 "0x0804a7ec주소에 있는 내용"으로 jump하라는 말아닌가요?
저 주소를 보면 저 굵은 글씨부터 뒤로 네개, 즉 0x000000 을 가리키는 것 아닌가요?

근데 x *0x804a7ec 하면

0x4000bcb0 <_dl_runtime_resolve>: 0x8b525150

-_-

무얼 잘못 생각한건지요? :shock: