文章目录

  • windows黑客编程系列
    • 资源释放
      • 资源插入
      • 进行资源提取
      • 期间遇到的小问题
    • DLL延迟加载
      • 如何进行DLL文件的延迟加载

windows黑客编程系列

对VS及windows编程太生硬了,每一步操作都得找好久。

资源释放

病毒木马之所以会广泛使用资源释放技术,是因为它可以使程序变得更简洁。

  • 如果程序需要额外加载一些第三方DLL文件,文本文件,图片文件,或者其他的音视频文件等,可以把它们作为资源插入到程序里。
  • 等待程序运行后,再把它们释放至本地。

这样做的好处是编译出来的程序只有一个exe文件,而不需要附带其他文件,因而使程序变得很简洁,降低了被发现的风险。

资源插入

环境:VS2019

新建控制台程序即可。

  1. 右键资源文件->添加->资源
  2. 选择自定义,输入你想填写的资源类型,我填的是MYTYPES。
  3. 选择MYTEPES类型,点击导入
  4. 然后将想插入的文件插入进来。
  5. 插入完成后,我们查看资源文件是否插入成功。视图->其他窗口->资源视图

进行资源提取

// 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已经提取成功了。

期间遇到的小问题

  1. “char *” 类型的实参与 “LPCWSTR” 类型的形参不兼容
  2. 未定义标识符 “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延迟加载和资源释放相关推荐

  1. windows黑客编程系列(九):使用ntdll.dll中并未公开的API进行压缩

    文章目录 压缩技术 利用WIN32自带API实现数据压缩 WIN API RtlGetCompressionWorkSpaceSize RtlCompressBuffer RtlDecompressB ...

  2. windows黑客编程系列(四):修改注册表键值对之自启动

    文章目录 自启动技术 注册表 WINAPI介绍 RegOpenKeyEx函数 参数说明 返回值 RegSetValueEx 参数说明 返回值 编码 运行效果 自启动技术 对于一个病毒木马来说,重要的不 ...

  3. windows黑客编程系列(十一):按键记录

    文章目录 功能技术模块 按键记录 WINAPI RegisterRawInputDevices tagRAWINPUTDEVICE结构体 GetRawInputData 编码实现 功能技术模块 病毒木 ...

  4. windows黑客编程系列(八):以固定频率获取屏幕截图

    文章目录 功能技术模块 桌面截屏 WIN API GetDC BitBlt ICONINFO结构体 编码实现 运行效果 功能技术模块 病毒木马的入侵并潜伏在用户计算机上总是有着某种目的,例如获取用户隐 ...

  5. [笔记]Windows核心编程《二十》DLL的高级操作技术

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  6. Windows黑客编程基础

    俗话说:"万事开头难",编程也不例外,初学者如何入门关键要有一份正确的理论作指 导,下面的这篇文章虽不能说是至理名言,但我相信通过作者细腻的分析.讲解和引导, 定能给初学者起到启蒙 ...

  7. 《windows核心编程系列》十八谈谈windows钩子

    windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...

  8. (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单

    (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 原文 (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu ...

  9. mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解

    01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...

  10. 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO

    <Windows核心编程系列>九谈谈同步设备IO与异步设备IO之同步设备IO 同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请 ...

最新文章

  1. 配对MPLS和SD-WAN是一个双赢的方案
  2. Javascript模板引擎handlebars使用实例及技巧
  3. asp.net中MaintainScrollPositionOnPostback属性的使用
  4. html怎么给变量添加样式,通过CSS变量修改样式
  5. Asp.net中关于上传文件的各项基本操作
  6. 中国金融体系主要指标大全!
  7. spring 的jdbc和事务支持
  8. 如何在PHP中使用cURL连接到Tor隐藏服务?
  9. 随机生成26大写字母
  10. 单应性变换(Homography)
  11. WMI Defense
  12. 【bat批处理脚本命令】bat命令接收用户输入的内容(保姆级图文+实现代码)
  13. 麻雀搜索算法——Matlab
  14. 激光雷达产业深度研究报告:三大思考
  15. Prometheus Cadvisor 监控k8s
  16. echart水滴_echart 水滴图
  17. 【恩智浦杯(飞思卡尔)全国大学生智能汽车竞赛】解读部分北科技术报告图像处理内容(点到为止)
  18. C++程序员应了解的那些事(19)C++ trivial(平凡的)和non-trivial(非平凡的)
  19. Machine Learning with Graphs:Part1
  20. 产品销售成本与产品制造成本的区别

热门文章

  1. linux系统国产制图软件,国产操作系统也能用的国产图表绘制软件,替代Visio就用它了...
  2. 确定单峰区间Matlab,0618法matlab实验报告.doc
  3. php国家图书馆opac的marc,国家图书馆OPAC书目信息在图书馆编目中的应用
  4. 校园卡系统mysql与java结合_基于Java+JSP+Mysq+Servletl的校园卡一卡通管理系统
  5. tp5 mysql 使用ignore_tp5数据库配置操作
  6. 洛谷OJ_P1009涉及的高精度算法
  7. ILSpy-Reflexil修改UnityEditor.Timeline.dll
  8. vue安装vue-pdf(预览pdf)(2021/03/02)
  9. 12款开源或免费的3D建模软件
  10. QTouch Linux 组态软件