spinjector 소스 코드 공개 :-)

전에 KOSR 세미나때 코드를 공개한다고 했는데 이제야 하는군요.
대충 공개하면 안되는 코드들 조금 빼고, 컴파일 되는거 확인하고 올려버렸습니다.
샘플 플러그인으로 PE 헤더를 보여주는 dll 도 함께 올렸고요. (플러그인 코드에 버그가 있는지 가끔 크래시가.. -_-)
중요한건 injector 의 코드니 그냥 냅뒀습니다.

뭐하는 놈인가 하면 dll 인젝션을 통해 다른 프로세스에 접근하지 않고, thread 만 인젝션 해서 타겟 프로세스와 통신을 하는
녀석입니다. 물론 인젝션된 스레드에게 커맨드를 전송해서 dll 을 로드/언로드 할 수도 있고, 타겟 프로세스의 내부 함수나
로드한 dll 들의 함수를 호출하고, 그 결과값을 injector 쪽으로 전송 할 수도 있습니다.
설명하긴 매우 귀찮으니, 관심있는 분들은 코드를 살펴보시길 바랍니다. :-)

code gate 에서 카스퍼스키가 발표한 내용중에 리모트에 인젝션된 스레드를 검출하는 방법에 관한 내용이 있던데, 요놈이 바로
리모트에 스레드만 인젝션 해 주는 녀석인 것이죠. >.<

프로젝트 주소는 여기입니다.    http://code.google.com/p/spinjector/





심심이의 다른 프로세스들의 PE 헤더 정보를 읽어오는 기능은 이 모듈을 통해서 구현되었죠.


이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by somma | 2009/04/20 17:35 | 시스템 프로그래밍 | 트랙백 | 덧글(10)
트랙백 주소 : http://somma.egloos.com/tb/4119786
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by ZIZI at 2009/04/21 13:11
오호...대단하삼~ 찬찬히 살펴보고 배워야쥐..@@
Commented by bps at 2009/06/26 08:37
흑흑... blog 다시 열렸군요 ;ㅁ;)b

다시는 닫지마세요...
Commented by somma at 2009/06/26 11:46
ㅋㅋㅋ
제 블로그를 그리워해주신 분이 계시는군요.. ^^
Commented by Pendulum at 2009/06/26 22:53
실례지만 어떻게 받는건지요-.-;
혹시 소스를 보면서 복사 붙여넣기 해야하나..
제가 보고 싶은 부분은
DLL(혹은 쓰레드)와 일반 어플리케이션과의 통신부분인데[..]
Commented by somma at 2009/06/26 23:05
http://code.google.com/p/spinjector/source/checkout
위 URL 에서 SVN client 를 통해서 코드를 체크아웃 하실 수 있습니다. (google code 가 SVN 으로 코드 버전 관리를 해주거든요)

injector <--> target 이 통신하는 부분은 injector.cpp 부분을 살펴보시면 됩니다.

개념은 간단한데 코드가 좀 복잡합니다. -_-;;

- 인젝션된 스레드와 데이터를 공유하기 위한 공유메모리를 생성하고,
- 통신을 위해(send/recv) 이벤트를 생성하고
- 타겟 프로세스에서 해당 공유메모리/이벤트에 간단하게 엑세스 하기 위해 핸들을 복사하고,
- 타겟 프로세스에 스레드를 하나 인젝션 하고.
- 인젝션된 스레드에서는 injector 가 생성한 이벤트에 대해 무한루프를 돌면서 대기하다 이벤트가 날라오면
- 공유메모리에 기록된 명령/파라미터 정보등을 읽어서 처리
- 처리완료가 되면 완료 이벤트 설정
- 다시 이벤트 대기
- .....

뭐 이런 순서입니다. dll 이나 그런걸 인젝션 하지 않기 때문에, 상대 주소를 이용할 수 없죠.
__check_esp() 같은 함수나 혹은 문자열, switch~case 문등은 상대주소를 이용하거나 점프 테이블을 생성하기 때문에
인젝션된 스레드에서 사용할 수 없는데 그래서 인젝션 할 스레드 코드를 작성하는게 좀 짜증납니다. -_-;;
(물론 디버깅도 어셈블리로만 해야 하고요..ㅋㅋ)

코드를 보시는게 가장 쉬울듯 합니다. :-)


Commented by ng at 2009/06/30 09:29
유용한 자료 감사합니다. ^^ 멋지세요~
Commented by 미친감자 at 2009/07/01 21:13
다시 열렸군요....
Commented by chpie at 2009/07/02 17:51
다시 여셨군요 ㅎ_ㅎ
Commented by 안녕하세요~ at 2009/07/28 19:56
이제막 입문하는 초급자에요...ㅎㅎ
이것저것 책을 뒤져봐도... 같은것만 5번을봐도 항상이해가 안되는 부분이 많아서...
최대한 아무거나 자료를 구해서 읽고있습니다...ㅠㅠ
그래서 여기까지 흘러들어왔는데... 직접작성하신글들중 링크가 깨진것도 있고 그래서...ㅠ_ㅠ
자료좀... 주실수 있으세요..??
Commented by 홍랩 at 2009/07/30 11:24
역시나 변함없는 신선하고 산뜻한 정보 와~우

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >