나는 x86-64에서 리눅스를 사용하고있다. 사용자 프로그램이 코드 실행을 시작하기 직전에 시스템 호출 (OS에 트랩이 필요함)을 삽입해야합니다 (하지만 로더/링커가 라이브러리를 매핑 한 후 등). 아무도 바이너리 수정/재 컴파일이 필요없는이 을 달성하는 가장 좋은 방법은 무엇입니까?메인 바로 전에 시스템 호출하기
0
A
답변
2
libc 앞에 LD_PRELOAD 환경 변수를 사용하면 _start가 실제 main() 함수를 시작하는 데 사용하는 것으로 보이는 __libc_start_main에 대한 호출을 차단합니다.
또는 디버거처럼 프로세스에 연결하려면 ptrace()를 사용하십시오.
+0
나는 이것으로 조금 놀아 왔습니다. 내 자신의 __libc_start_main()을 정의하면 호출 된 것을 얻는 것이 쉽고 dlsym과 RTLD_NEXT를 사용하여 원본 주소를 찾는 것처럼 보이지만 지금까지 원본 또는 반환을 호출 할 수 없었습니다. 나는 적절한 함수 시그니처를 찾지 못했고 스택을 손상시키고 있기 때문에 이것이 의심 스럽다. eglibc 소스에서이 함수의 실제 정의를 찾는 것이 쉽지 않습니다. –
관련 문제
- 1. C에서 메인 전에 어떤 함수 호출하기
- 2. 어셈블리에서 메인 호출하기
- 3. DllImport를 호출하기 바로 전에 깨는 경우 왜 AccessViolationException이 발생합니까?
- 4. 전에 다른 메소드 호출하기
- 5. 메소드를 호출하기 전에 서비스 바인딩하기
- 6. 을 호출하기 전에 session.gettransaction을 호출해야합니까?
- 7. 메인 C++ 내에서 멤버 함수 호출하기
- 8. 메인 사이트에 들어가기 전에 등록
- 9. 시스템 항아리 전에 항아리로드
- 10. 표준 버퍼 시스템 전에()
- 11. 시스템 바로 가기에서 바로 가기 쉘 아이콘을 얻는 방법은 무엇입니까?
- 12. 루비에서 위생 쉘 명령 또는 시스템 호출하기
- 13. 메소드를 호출하기 전에 메소드를 수동으로 호출하는 방법
- 14. FB.init()을 호출하기 전에 FB.login()이 호출되었습니다.
- 15. NSURLConnection의 대리자 메서드를 호출하기 전에 컨트롤이 반환됩니다.
- 16. 닫기()를 호출하기 전에 파일에 문자열을 쓰는
- 17. 페이지 나가기 전에 GET 호출하기 - 자바 스크립트
- 18. stat를 호출하기 전에 파일을 fflush하거나 닫아야합니까?
- 19. EventLog.SourceExists를 호출하기 전에 EventLog 사용 권한을 확인하십시오.
- 20. 다른 메서드를 호출하기 전에 매번 메서드를 호출하십시오.
- 21. getVarDate를 호출하기 전에 JavaScript 날짜를 UTC로 변환해야합니까?
- 22. 왜 NSArray 항목의 메소드를 호출하기 전에 캐스트해야합니까?
- 23. Xdocument.save를 호출하기 전에 건너 뛸 문자
- 24. 대리자가 다시 호출하기 전에 아크가 삭제되었습니다.
- 25. 호출하기 전에 사용자 정의 템플릿 태그 변경하기
- 26. createChannel을 호출하기 전에 Channel.Open 메서드를 호출해야합니까?
- 27. 위임자를 호출하기 전에 iOS의 LocationManager를 다시 할당합니다.
- 28. yacc/lex에서 YYACCEPT를 호출하기 전에 버퍼 지우기
- 29. respondsToSelector를 호출하기 전에 델리게이트가 여전히 존재하는지 확인하십시오.
- 30. 이벤트를 호출하기 전에 처리기를 할당하는 이유는 무엇입니까?
왜 바이너리 수정을 필요로하지 않고 이와 같은 작업을 원하십니까? 저를 위해 당신은 당신이 사람들을 배포하고 스파이 할 소프트웨어를위한 추적 소프트웨어를 만들고 싶습니다 ... xD지만 제발 내가 틀렸다고 정정 해주세요. :) – evotopid