2012-02-04 2 views
0

Ire 자신의 C/C++ dll을 주입하고 entrypoint에서 시작하는 모든 솔루션을 사용할 수 있도록 함수 소켓 보내기 함수가 있어야하고 거기에 내 코드를 붙여야합니다. 그것은 리눅스에서 사용할 수 있습니까?리눅스는 C/C++ DLL을 삽입합니다

감사합니다.

+1

당신은'export LD_PRELOAD = your_so' 또는 완전히 다른 것을 찾고 있습니까? –

+0

@skwllsp : PO는 기존 프로세스에 주입하는 것에 대해 묻습니다. 소켓에 대한 출력을 수정하려면 Kracken, 대신 PCap 라이브러리 –

+0

을 사용할 수 있습니다. 런타임시 주입을 위해 Intel PIN을 확인하십시오. 아키텍처의 세부 사항을 숨기는 DBI 프레임 워크입니다. 그 외에 Valgrind를 볼 수 있습니다. – gon1332

답변

4

일반적인 방법은 프로그램을 시작하기 전에 LD_PRELOAD 환경 변수를 설정하는 것입니다. 예를 들어 tsocks을 참조하십시오. 일부 프로그램에서는 보안상의 이유로 (암호 등을 스누핑 할 수 있음)이를 사용 중지합니다. gnupg는 LD_PRELOAD이 작동하지 못하게합니다.

실행중인 프로그램에 삽입하려는 경우 훨씬 어렵습니다. ptrace으로 끝낼 수 있습니다 (예 : gdb로 연결하고 dlopen 호출). 그러나 프로그램을 첨부 할 때 어떤 상태인지 모르기 때문에 신뢰할 수 없습니다.