windows黑客编程系列(二):DLL延迟加载和资源释放
文章目录
- windows黑客编程系列
- 资源释放
- 资源插入
- 进行资源提取
- 期间遇到的小问题
- DLL延迟加载
- 如何进行DLL文件的延迟加载
windows黑客编程系列
对VS及windows编程太生硬了,每一步操作都得找好久。
资源释放
病毒木马之所以会广泛使用资源释放技术,是因为它可以使程序变得更简洁。
- 如果程序需要额外加载一些第三方DLL文件,文本文件,图片文件,或者其他的音视频文件等,可以把它们作为资源插入到程序里。
- 等待程序运行后,再把它们释放至本地。
这样做的好处是编译出来的程序只有一个exe文件,而不需要附带其他文件,因而使程序变得很简洁,降低了被发现的风险。
资源插入
环境:VS2019
新建控制台程序即可。
- 右键资源文件->添加->资源
- 选择自定义,输入你想填写的资源类型,我填的是MYTYPES。
- 选择MYTEPES类型,点击导入
- 然后将想插入的文件插入进来。
- 插入完成后,我们查看资源文件是否插入成功。视图->其他窗口->资源视图
进行资源提取
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#undef UNICODE
#include <Windows.h>
#include <stdio.h>
#include "resource.h"// 提取资源
BOOL FreeMyResourse(UINT uiResouceName, char *lpszResourceType, char* lpszSaveFileName)
{HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(uiResouceName), lpszResourceType);if (hRsrc == NULL){printf("can't find the resource!\n");return FALSE;}DWORD dwSize = SizeofResource(NULL, hRsrc);if (dwSize <= 0){printf("the resource's size is error!\n");return FALSE;}HGLOBAL hGlobal = LoadResource(NULL, hRsrc);if(hGlobal == NULL){printf("load resource error!\n");return FALSE;}LPVOID lpVoid = LockResource(hGlobal);if (lpVoid == NULL){printf("lock resource error!\n");return FALSE;}FILE* fp = NULL;fopen_s(&fp, lpszSaveFileName, "wb+");if (fp == NULL){printf("open file error!\n");return FALSE;}fwrite(lpVoid, sizeof(char), dwSize, fp);fclose(fp);return TRUE;
}int main()
{char lpszResourceType[20] = "MYTYPES";char szSaveFileName[20] = "555.txt";BOOL flag = FreeMyResourse(IDR_MYTYPES2, lpszResourceType, szSaveFileName);if (flag == TRUE){printf("the resource is free!\n");}return 0;
}
可以看到555.txt已经提取成功了。
期间遇到的小问题
- “char *” 类型的实参与 “LPCWSTR” 类型的形参不兼容
- 未定义标识符 “IDR_MYTYPES2”
第一个问题:
#undef UNICODE
在头文件之前加入此行即可。
第二个问题:
#include "resource.h"
该标识符在上文中插入资源的最后部分展示过了,但程序出现未定义该标识符问题,原因为没有引入resource.h的头文件。
DLL延迟加载
在开发程序的时候,通常会使用第三方库。但是并不是所有的第三方库都会提供静态文件,大多数会提供DLL文件,这样,程序需要相应的DLL文件才能加载启动。
DLL延迟加载技术是一种使用延迟加载方式编译链接可执行文件。这样可执行程序就可以先加载执行,所依赖的DLL在正式调用时再加载进来。
该技术可以跟资源释放技术结合使用,即将DLL文件加载入exe文件的资源节中,然后通过释放资源+DLL延迟加载来减小被发现的概率,只需一个exe文件,不需附加额外的DLL文件,也不担心程序会丢失DLL文件。
如何进行DLL文件的延迟加载
- 右键项目->属性->链接器->输入->延迟加载的DLL
- 将需要延迟加载的DLL文件输入点击确定即可
windows黑客编程系列(二):DLL延迟加载和资源释放相关推荐
- windows黑客编程系列(九):使用ntdll.dll中并未公开的API进行压缩
文章目录 压缩技术 利用WIN32自带API实现数据压缩 WIN API RtlGetCompressionWorkSpaceSize RtlCompressBuffer RtlDecompressB ...
- windows黑客编程系列(四):修改注册表键值对之自启动
文章目录 自启动技术 注册表 WINAPI介绍 RegOpenKeyEx函数 参数说明 返回值 RegSetValueEx 参数说明 返回值 编码 运行效果 自启动技术 对于一个病毒木马来说,重要的不 ...
- windows黑客编程系列(十一):按键记录
文章目录 功能技术模块 按键记录 WINAPI RegisterRawInputDevices tagRAWINPUTDEVICE结构体 GetRawInputData 编码实现 功能技术模块 病毒木 ...
- windows黑客编程系列(八):以固定频率获取屏幕截图
文章目录 功能技术模块 桌面截屏 WIN API GetDC BitBlt ICONINFO结构体 编码实现 运行效果 功能技术模块 病毒木马的入侵并潜伏在用户计算机上总是有着某种目的,例如获取用户隐 ...
- [笔记]Windows核心编程《二十》DLL的高级操作技术
系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...
- Windows黑客编程基础
俗话说:"万事开头难",编程也不例外,初学者如何入门关键要有一份正确的理论作指 导,下面的这篇文章虽不能说是至理名言,但我相信通过作者细腻的分析.讲解和引导, 定能给初学者起到启蒙 ...
- 《windows核心编程系列》十八谈谈windows钩子
windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...
- (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单
(C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 原文 (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu ...
- mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...
- 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
<Windows核心编程系列>九谈谈同步设备IO与异步设备IO之同步设备IO 同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请 ...
最新文章
- 配对MPLS和SD-WAN是一个双赢的方案
- Javascript模板引擎handlebars使用实例及技巧
- asp.net中MaintainScrollPositionOnPostback属性的使用
- html怎么给变量添加样式,通过CSS变量修改样式
- Asp.net中关于上传文件的各项基本操作
- 中国金融体系主要指标大全!
- spring 的jdbc和事务支持
- 如何在PHP中使用cURL连接到Tor隐藏服务?
- 随机生成26大写字母
- 单应性变换(Homography)
- WMI Defense
- 【bat批处理脚本命令】bat命令接收用户输入的内容(保姆级图文+实现代码)
- 麻雀搜索算法——Matlab
- 激光雷达产业深度研究报告:三大思考
- Prometheus Cadvisor 监控k8s
- echart水滴_echart 水滴图
- 【恩智浦杯(飞思卡尔)全国大学生智能汽车竞赛】解读部分北科技术报告图像处理内容(点到为止)
- C++程序员应了解的那些事(19)C++ trivial(平凡的)和non-trivial(非平凡的)
- Machine Learning with Graphs:Part1
- 产品销售成本与产品制造成本的区别
热门文章
- linux系统国产制图软件,国产操作系统也能用的国产图表绘制软件,替代Visio就用它了...
- 确定单峰区间Matlab,0618法matlab实验报告.doc
- php国家图书馆opac的marc,国家图书馆OPAC书目信息在图书馆编目中的应用
- 校园卡系统mysql与java结合_基于Java+JSP+Mysq+Servletl的校园卡一卡通管理系统
- tp5 mysql 使用ignore_tp5数据库配置操作
- 洛谷OJ_P1009涉及的高精度算法
- ILSpy-Reflexil修改UnityEditor.Timeline.dll
- vue安装vue-pdf(预览pdf)(2021/03/02)
- 12款开源或免费的3D建模软件
- QTouch Linux 组态软件