ShellCode提取工具(转)

it2025-03-19  18

看来我是这里除了admin外第一个原创呢~~~ 感觉幻影是个很有前途的~~~~RootKit还是木马~~~~混淆了呵呵…… 本来想加入这个团队的,一看要求就有点~~~偶就是米有这么系统的东西~~~喜欢什么就写什么~~呵呵。。。 不过还是没事放点东西上来滴~~~ OK切入主题~ 其实很多前辈已经做了这个工具,而且做得很好。 但是,要自己用自己的工具才比较爽。所以成没事的时候写了这个小东西。 看到前辈们用C的函数写这个程序的比较多,那我就用Windows 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] = '\n';                         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; }

转载于:https://www.cnblogs.com/HappyQQ/archive/2008/01/10/1033752.html

相关资源:数据结构—成绩单生成器
最新回复(0)