Windows의 CreateRemoteThread 함수
글쓴이: pynoos / 작성시간: 토, 2004/03/20 - 3:50오전
#include <stdio.h> #include <windows.h> int main( int argc, char * argv[] ) { if( argc == 2 ) { HANDLE h; h = OpenProcess( PROCESS_ALL_ACCESS, FALSE, atoi(argv[1])); if( h ) CreateRemoteThread( h, 0, 0, 0, ExitProcess, 0, 0 ); } return 0; }
작업관리자에서 보이는 PID를 인자로 넘겨주면.. 그 함수 종료됩니다.
물론 거의 비정상종료를 하더군요.
다른 프로세스 공간에 쓰레드를 하나 만드는데... 그 쓰레드의 시작을 ExitProcess로 하니까.. 종료하는 것인데.. 막상 생각나는 입구함수가 저거 밖에 없어서 테스트 코드로 만들어 봤습니다.
posix에는 없는 쓰레드 시작 함수라서 테스트 겸 만들어 봤는데...
이 함수의 용도가 대체 뭘까요...
다른 프로세스공간에 쓰레드를 하나 만들수 있는 것이란...
잘 생각하면 프로세스 코드를 전송하고 쓰레드 입구함수로 그것을 사용할 수도 있겠는 걸요....
Forums:
dll injection에 사용하는 것을 몇번 본 적이 있습니다만...
dll injection에 사용하는 것을 몇번 본 적이 있습니다만... 뭐, 역시 그다지 합법적이지만은 않은 용도로 많이 사용되겠지요. ;-)
^^;
많이 지난 글인데..검색하다가 봤어요^^;;
Hooking에서 잘 쓰이는 방법인걸로 알고 있어요
재미있게도
LPTHREAD_START_ROUTINE 의 형과
LoadLibrary()의 Type과 비슷하지요.
그래서 Start Routine에 LoadLibrary를 넣어서
해당 Process Address에 침투(DLL Injection)하는 기법이 있는걸로 알고 있습니다.
이궁 다 아시는 내용인거 같네요.. :oops:
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
댓글 달기