2009-11-23 3 views
12

필자는 elf 실행 파일을 수동으로 실행한다. 나는. 모든 섹션을 올바른 위치에로드하고, main()을 쿼리하고 호출합니다 (그리고 정리). 실행 파일은 정적으로 링크되므로 라이브러리를 연결할 필요가 없습니다. 또한 기본 주소를 제어하므로 가능한 충돌에 대해 걱정할 필요가 없습니다.리눅스 사용자 공간 ELF 로더

그럼, 거기에 어떤 라이브러리가 있습니까?

나는 oskit의 그 liboskit_exec을 찾았지만,이 프로젝트는 죽은 것으로 보인다 이후 2002 년

내가으로 (물론, 라이센스를 존중) 프로젝트의 일부를 복용하고 내 필요에 재봉와 OK,하지만 난 리눅스 세계에서 멍청한 멍청 아. 그 부분을 어디에서 찾을 지조차 몰라. :)

추신. ARM 플랫폼 용으로 필요합니다.

UPD 글쎄,로드 elfs의 문제에 대한 좋은 지식 (한숨)을 요구하는 것, 그래서 나는 몇 가지 사양과 매뉴얼을 읽을거야. 그리고 저는 바이오닉/링커와 libelfsh에 충실 할 것입니다. 고마워요!

요약 결과 :

+0

* bump * 나는 또한이 똑같은 문제가 (또한 ARM),하지만 또한 재배치를해야합니다. –

답변

2

빠른 apt-cache searchlibelf1, libelfg0 및/또는 libelfsh0 제안합니다. 제 생각에 elfsh 프로그램 (이름이 같은 패키지에 있음)은 libelfsh0을 사용하는 방법에 대한 흥미로운 실질적인 예가 될 것 같습니다.

나는 어떤 시도도하지 않았지만 도움이되기를 바랍니다. 행운을 빌어 요 :-)

0

실행 형식을 읽으려면 libelf을보십시오. 너는 내가 생각하기에 이것에 문제가있을 것이다.

라이브러리를 필요로하지 않으므로, 실행 파일을 mmap하고 다양한 메모리 영역과 jmp/b에 대한 데이터를 설정하는 것이 좋습니다.

ARM에 NX 비트가 있지만 가치가 있는지는 잘 모르겠다.

1

Google의 Android는 "bionic"libc 구현에서 완전히 다시 구현 된 ELF 로더를 가지고 있습니다. 그것은 합리적으로 깨끗하고, 아마도 당신이 뭔가를 찾고 있다면 gilb보다 더 좋은 소스 일 것입니다.

0

이 도구는 ELF 로더를 포함 http://bitwagon.com/rtldi/rtldi.html

내가 다른 프로젝트에서 ELF chainloader에 대한 rtldi의 코드를 재사용.코드는 여기에 http://svn.gna.org/viewcvs/plash/trunk/chroot-jail/elf-chainloader/?rev=877이고 배경은 http://plash.beasts.org/wiki/Story16입니다. (분명히 stackoverflow 날> 1 링크를 게시 할 수 없기 때문에 분명히 이러한 링크를 끊어야합니다!)