网络攻防作业====简单的恶意函数demo

先说一哈  其实这个 恶意程序 大部分都是参考了 网上的资料 也就是说====

我这里代码都是 网上能找到的  出现了好长时间的代码 没有什么创新性===

so 还请大佬们绕道了==

先说一下程序的大概情况===

其实 程序外表就是一个扫雷的辅助工具==

具体的原理可以参考

https://blog.csdn.net/qq_41071646/article/details/84920382

然后在程序初始化的时候 开启了四个线程

 其中 有个主线程是 辅助还有键盘记录器

键盘记录器是一个很久的东西了  简单来说 有两个方法 

钩子 或者 就是 创建设备

这里参考了  《Windows黑客编程技术详解》 里面的代码

(这本书 刚出我就买了 == 当时还没有人说是一本圈钱书===== 算是我买的书里面最。。。。。可惜的)

 

然后在消息机制里面 调用 函数

然后 继续说一下四个线程都干了什么 

其中一个是   进行截图  其实这个没有啥用 算是我乱凑的===

主要的实现代码

然后 有个是遍历文件夹 

 

然后就可以输出到文件==

文件监控

然后获取本机TIM 和WX的信息

 

 

其中有三个函数 ==

wchar_t * UTF8ToUnicode(const char* str)
{
	int    textlen = 0;
	wchar_t * result;
	textlen = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
	result = (wchar_t *)malloc((textlen + 1) * sizeof(wchar_t));
	memset(result, 0, (textlen + 1) * sizeof(wchar_t));
	MultiByteToWideChar(CP_UTF8, 0, str, -1, (LPWSTR)result, textlen);
	return    result;
}

DWORD process_get_module_base_address(DWORD process_id, TCHAR* dll_name)
{
	HANDLE hSnap; // Process snapshot handle.
	MODULEENTRY32 xModule; // Module information structure.

	hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, process_id); // Creates a module
	if (hSnap == INVALID_HANDLE_VALUE) {
		return 0;
	}

	// snapshot of the
	// game process.
	xModule.dwSize = sizeof(MODULEENTRY32); // Needed for Module32First/Next to work.
	int count = 0;
	if (Module32First(hSnap, &xModule)) // Gets the first module.
	{

		do {
			if (lstrcmp(xModule.szModule, dll_name) == 0) // If this is the module we want...
			{
				//printf("%s %s\n", xModule.szModule,dll_name);
				//printf("%x\n", xModule.modBaseAddr);
				return (DWORD)xModule.modBaseAddr; // return the base address.
			}
			count++;
		} while (Module32Next(hSnap, &xModule)); // Loops through the rest of the modules.
	}
	CloseHandle(hSnap); // Free the handle.

	return 0; // If the result of the function is 0, it didn't find the base address.
}
DWORD GetProcessIDByName(LPCTSTR szProcessName)
{
	STARTUPINFO st;
	PROCESS_INFORMATION pi;
	PROCESSENTRY32 ps;
	HANDLE hSnapshot;
	DWORD dwPID;
	ZeroMemory(&st, sizeof(STARTUPINFO));
	ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
	st.cb = sizeof(STARTUPINFO);
	ZeroMemory(&ps, sizeof(PROCESSENTRY32));
	ps.dwSize = sizeof(PROCESSENTRY32);
	// 遍历进程  
	hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hSnapshot == INVALID_HANDLE_VALUE)
	{
		return 0;
	}


	if (!Process32First(hSnapshot, &ps))
	{
		return 0;
	}
	do
	{
		// 比较进程名  
		if (lstrcmpi(ps.szExeFile, szProcessName) == 0)
		{
			// 找到了  
			dwPID = ps.th32ProcessID;
			CloseHandle(hSnapshot);
			return dwPID;
		}
	} while (Process32Next(hSnapshot, &ps));
	// 没有找到  
	CloseHandle(hSnapshot);
	return 0;
}

这里的偏移 需要自己找  版本不一样===  偏移也不会一样-  用CE直接搜就可以===

 

这里的代码就不放出来了====  大部分都借鉴了别人的代码  而且百度也能搜得到===

感觉东西很浅显====  根本就做不了事情 ==  估计恶意都称不上====

这都是 烂到大街上的代码 === 感觉还是有必要声明一哈

此博客只做技术交流而作  若用作其它用途 与本人无关----

 

参考资料

《Windows黑客编程技术详解》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值