看来我是这里除了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
相关资源:数据结构—成绩单生成器