Ubuntu 18.04에서 IDA Pro나 coreutils를 사용하여 프로그램을 디스어셈블하면 " " 기호가 /bin/cat
있는데 일반적 으로 .start
_start
gimp
그러나 스위치를 사용하여 nm
기호를 찾으면 기호 -D
를 찾을 수 없습니다 start
. 왜 그런 겁니까?
내 임무는 주어진 프로그램의 진입점을 가리키는 기호를 찾는 것입니다.
답변1
바이너리의 진입점은 헤더의 지점으로 찾을 수 있습니다.ELF 바이너리Linux에서 사용되는 경우 오프셋 0x18의 32비트 또는 64비트 값입니다.
objdump -f
바이너리를 실행하면 이를 확인할 수 있습니다 .
nm
바이너리의 디버깅 기호를 바이너리에서 직접(제거하지 않은 경우) 또는 독립형 기호로 사용할 수 있는 경우 컴파일러에서 실제로 생성했다고 가정하면 실제 기호만 표시됩니다.