2012-05-10 3 views
8

Windows에서 CreateRemoteThread을 사용하고 있으며 Linux에서 동일한 작업이 가능한지 알고 싶습니다. Linux에서이 작업을 수행 할 수 있습니까?Linux에서 CreateRemoteThread

+0

어떻게 이것이 C++ 질문입니까? –

+0

CreateRemoteThread는 C++ 코드에서 사용 된 WINAPI입니다. – CrazyC

답변

-2

`#INCLUDE pthread.h를

의 INT는 pthread_create (보이드가 pthread_t * 스레드 CONST pthread_attr_t의 *의 ATTR, 공극 * (* start_routine) (*), 보이드 * ARG)와` 컴파일 및 링크 - pthread.

세부 사항에 대한 남자는 pthread_create를 참조

+2

어떻게 스레드를 생성하고 스레드를 생성하여 원격 프로세스에 삽입하지 않습니다. –

6

리눅스에이 일을하는 전통적인 방법은 별도로 다음, 거기에 코드와 동적 라이브러리 (.so를) 만들 실행중인 응용 프로그램에 라이브러리의 로딩을 강제하는 것 . Windows에는 CreateRemoteThread과 같이 원 스톱 샵이 없습니다.

그래서 여기

는 기본 단계 : 그건 당신이 원격 프로세스에서 실행하고자하는 코드가 포함되어 있으므로

  1. 가/dylib를 만듭니다.
  2. 지정된 so 파일 (주로 복사하여 붙여 넣기 this link, 파트 1)을로드하는 아주 간단한 코드를 어셈블리에 작성합니다.
  3. 로드 코드 ASM을 2 차 페이로드로 두 번째 코드 파일/app의 버퍼에 삽입합니다. 여기서는 ptrace을 사용하여 2 단계에서 작성된 바이너리 페이로드를 실행합니다. 그러면 대상 앱이 실행하려는 실제 코드가 들어있는 1 단계에서 만든 .so에서 _dl_open()을 호출합니다. 메인 펌프에서 별도의 스레드에서 실행하는 코드가 필요한 경우, 다음 단계에서 코드에서 1

    희망이 pthread_create를 사용해야합니다 (the same link에 주어진 샘플, 2 부)

귀하의 질문에 대한 답변. 네, Windows보다 더 많이 관련되어 있습니다. 그러나 그것은 똑같이 잘 작동해야합니다. 또한 향후 원격 코드 삽입 프로젝트를 위해 2 단계와 3 단계의 전체 코드를 재사용 할 수 있습니다.