이상한 ELF 바이너리가 있습니다. 32 비트 리눅스에서이 바이너리를 실행할 수 있습니다.이상한 ELF 바이너리
그러나이 바이너리를 IDA 디스어셈블러로 열면 IDA에 "잘못된 진입 점"이라고 표시됩니다. readelf의
결과는 다음과 같습니다 : 어떤 부분이 없다
[email protected]:/home/meltdown# readelf -S -l SimpleVM
There are no sections in this file.
Elf file type is EXEC (Executable file)
Entry point 0xc023dc
There are 2 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00c01000 0x00c01000 0x013c7 0x013c7 RWE 0x1000
LOAD 0x00019c 0x0804b19c 0x0804b19c 0x00000 0x00000 RW 0x1000
. 나는이 바이너리가 압축되어 있다고 생각했다. 그러나 첫 번째 LOAD 세그먼트의 마지막 가상 주소는 0xc023c7입니다. 진입 점의 가상 주소가 0xc023dc 범위를 벗어났습니다 ...
누군가가 내게 무슨 일이 일어 났는지 말해 줄 수 있습니까?
미리 감사드립니다.
은/proc/PID /지도 (두 개의 프로세스가 생성됩니다 ...)
[email protected]:/proc/3510# cat maps 00110000-00111000 rwxp 00000000 00:00 0 006c0000-006c1000 r-xp 00000000 00:00 0 [vdso] 007d2000-007d4000 rwxp 00000000 00:00 0 00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM 00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e46000-00e49000 rwxp 00000000 00:00 0 08048000-0804b000 r-xp 00000000 00:00 0 0804b000-0804c000 rwxp 00000000 00:00 0 b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack] [email protected]:/proc/3511# cat maps 00110000-00111000 rwxp 00000000 00:00 0 006c0000-006c1000 r-xp 00000000 00:00 0 [vdso] 007d2000-007d4000 rwxp 00000000 00:00 0 00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM 00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so 00e46000-00e49000 rwxp 00000000 00:00 0 08048000-0804b000 r-xp 00000000 00:00 0 0804b000-0804c000 rwxp 00000000 00:00 0 b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack]
(+1) 흥미로운 질문입니다. 그러나 실제 바이너리를 검사 할 수 있다면 성공 가능성이 더 높아질 것으로 생각합니다. – NPE
'file SimpleVM'과'ldd SimpleVM'은 무엇을 말합니까? –
이것이 독점 프로그램 인 경우 저자가 분해하지 못하도록하고 싶습니다. 알려진 바와 같이, 커널은 바이너리 형식에 대해 좀 더 관대합니다 (디스어셈블러/디버거에서는 수행 할 수없는 약간 잘못된 실행 파일을 기꺼이 받아들입니다).이 사실은 바이너리가 리버스 엔지니어링되는 것을 방지하기 위해 악용되었습니다. –