ShellCode 추출 도구

3063 단어 shell
내 가 여기 admin 외 에 첫 번 째 크 리 에이 터 인가 봐 ~ ~ ~ 환영 은 전도 가 유망 한 것 같 아 ~ ~ ~ 루트 키 트 는 목마 ~ ~ ~ 헷 갈 렸 어 ㅋ ㅋ...............................................................그래도 할 일 없 으 니까 올 려.하지만 스스로 도 구 를 써 야 시원 하 다.그래서 괜 찮 을 때 이 작은 걸 썼어 요.선배 님 들 이 C 함수 로 이 프로그램 을 많이 쓰 시 는 걸 보 니 윈도 API 로 쓰 겠 습 니 다. 그리고 이렇게 해서 ASM 버 전 으로 바 꾸 는 게 편 하 겠 죠 ~ ㅋ ㅋ.
클립보드 로 내용 복사
코드:/**********************************************************
nightxie     ,
, ~~~~~
Exe2ShellCode Just for fun
C ~~~~

***********************************************************/


#include "stdafx.h"
#include <windows.h>
#include <stdio.h>


void Exe2ShellCode(char *Name)
{
        char BufferTemp[5];
        int Stop = 0;
        int Line = 0;
        HANDLE hFileRead = CreateFile(Name,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
        if(hFileRead == INVALID_HANDLE_VALUE)
        {
                printf("Load File Fail!");
                exit(0);
        }
        DWORD dwNumFile = GetFileSize(hFileRead,NULL);
        DWORD dwNumFileRead;
        Line = dwNumFile/16;
        LPBYTE lpBuffer = (LPBYTE)GlobalAlloc(GPTR,dwNumFile);
        LPBYTE lpBuffer2 = (LPBYTE)GlobalAlloc(GPTR,dwNumFile*5+Line*2);
        ZeroMemory(lpBuffer2,dwNumFile*5+Line*2);
        ReadFile(hFileRead,lpBuffer,dwNumFile,&dwNumFileRead,NULL);
        for(unsigned int i=0;i<dwNumFile;i++)
        {
                wsprintf(BufferTemp,"0x%2.2x ",lpBuffer);
                lpBuffer2[Stop] = BufferTemp[0];
                lpBuffer2[Stop+1] = BufferTemp[1];
                lpBuffer2[Stop+2] = BufferTemp[2];
                lpBuffer2[Stop+3] = BufferTemp[3];
                lpBuffer2[Stop+4] = BufferTemp[4];
                if((1+i)%16==0)
                {
                        lpBuffer2[Stop+5] = '\r';
                        lpBuffer2[Stop+6] = '
';
                        Stop+=7;
                }
                else Stop+=5;
        }
        HANDLE hFileWrite = CreateFile("ShellCode.c",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
        if(hFileWrite == INVALID_HANDLE_VALUE)
        {
                printf("Write File Fail!");
                exit(0);
        }
        WriteFile(hFileWrite,lpBuffer2,dwNumFile*5+Line*2,&dwNumFileRead,NULL);
        CloseHandle(hFileRead);
        CloseHandle(hFileWrite);
        GlobalFree((HGLOBAL)lpBuffer);
}

int main(int argc, char* argv[])
{
        if(argc == 1 || argc > 2)
        {        
                printf("Exe2ShellCode Name.exe");
                exit(0);
        }
        Exe2ShellCode(argv[1]);
        
        return 0;
}

좋은 웹페이지 즐겨찾기