Process Control 0.1 Release

jz Releases 2008/06/02 13:18 posted by jz-



프로세스 제어용 툴이다.

타 프로세스를 찾거나, Read, Write하거나 dll injection을 편하게 할 수 있다.

추후 thread를 생성하지 않고,  loadlibrarya 를 호출하지 않는 방식으로 바꾸면 좋을텐데..

뭐 아직 인젝션 방지하는 프로그램때문에 문제된적은 없어서..

사용법은 너무 쉬워서, 헤더만 봐도 알 수 있을 것이다.

맘대로 쓰시고, 버그 리포트는 이 포스트로 해주시길.







// Version History

2008.06.02.  Version 0.1 Release
2008.08.05.  injection 버그 수정
2008.08.16.  process 찾을때 대소문자 구분않도록 수정
2008.11.19.  fixed general bugs.






헤더 내 함수를 보려면 more 클릭.

more..











 

Trackbas address :: http://jz.pe.kr/trackback/3 관련글 쓰기

  1. Commented by vbdream at 2008/08/16 10:47

    Code Injection을 해보시는건 어떨까요? :)
    Kernel32.DLL는 프로세스마다 주소가 같으므로...
    Kernel32.dll::GetVersion/GetVersionEx()로 OS 버전을 파악한 뒤
    OS 버전에 따라 LoadLibraryExW를 호출하거나,
    ntdll.dll::LdrLoadDll()을 호출하도록 하게...

    물론 Code Injection과 CreateRemoteThread()를 써서요...
    (CreateRemoteThread를 안쓰려면, DebugActiveProcess() 하고
    SetThreadContext() / SuspendThread() / ResumeThread() 등을
    쓰셔야되겠네요 :) )

    • Commented by jumpzero at 2008/08/16 21:02

      dll injection기능은 이미 ProcessControl 내에 구현돼 있습니다.^^

      제가 더 해보고 싶은건 Stealth injection이죠.

      일부 제품에서 dll injection을 감지한다는데, 감지하지 못하는 injection을 해보고 싶네요. 별로 어려울 것 같지 않거든요..
      담주쯤 시간 나면 해보려 합니다 ㅋㅋ

    • Commented by vbdream at 2008/09/06 19:56

      CreateRemoteThread()를 사용하지 않는다면, Debugger를 이용해서 구현해볼 수도 있겠군요.

      DLL 인젝션 감지를 원천적으로 막기 위해선, PEB의Ldr정보를 슬쩍(?) 해서 Entry Point를 잠깐 모두 NULL로 해서 하는것도 괜찮아 보이더군요.

    • Commented by jumpzero at 2008/09/15 18:48

      디버거도 좋은방법이죠^^

      근데 까다로운 프로텍터로 프로텍팅돼있다면 디버깅되고 있는걸 숨기기가 상당히 까다로운지라...

      굳이 디버거 어태치를 하지 않더라도,

      대상 프로세스의 모든 스레드를 멈춰버리고, 스레드 실행정보를 얻어서 실행되는 라인을 그대로 후킹해버려서 원하는 코드를 실행하게 하고 되돌아가면 좋을 것 같거든요 크크

      근데 코모도를 잠깐 봤는데, 코모도는 OpenThread나 OpenThread만 감지하고, 인젝션여부는 전혀 체크하지 않더군요.
      자세한 감지까진 안돼서 코모도에 좀 실망했다는..

    • Commented by vbdream at 2008/09/27 14:19

      COMODO Firewall Pro는... 저도 솔직히 실망입니다.

      하지만 가볍고 더 좋은 HIPS는 없기에 그냥 쓰고 있죠. :-)

      COMODO Firewall Pro는 SSDT Hooking을 하는데, ZwOpenProcess()를 빼고 모두 복원시켜도 복구조차 안함..