对VS及windows编程太生硬了,每一步操作都得找好久。 病毒木马之所以会广泛使用资源释放技术,是因为它可以使程序变得更简洁。 这样做的好处是编译出来的程序只有一个exe文件,而不需要附带其他文件,因而使程序变得很简洁,降低了被发现的风险。 环境:VS2019 新建控制台程序即可。 可以看到555.txt已经提取成功了。 第一个问题: 在头文件之前加入此行即可。 第二个问题: 该标识符在上文中插入资源的最后部分展示过了,但程序出现未定义该标识符问题,原因为没有引入resource.h的头文件。 在开发程序的时候,通常会使用第三方库。但是并不是所有的第三方库都会提供静态文件,大多数会提供DLL文件,这样,程序需要相应的DLL文件才能加载启动。 DLL延迟加载技术是一种使用延迟加载方式编译链接可执行文件。这样可执行程序就可以先加载执行,所依赖的DLL在正式调用时再加载进来。 该技术可以跟资源释放技术结合使用,即将DLL文件加载入exe文件的资源节中,然后通过释放资源+DLL延迟加载来减小被发现的概率,只需一个exe文件,不需附加额外的DLL文件,也不担心程序会丢失DLL文件。windows黑客编程系列
资源释放
资源插入
进行资源提取
// 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; }
期间遇到的小问题
#undef UNICODE
#include "resource.h"
DLL延迟加载
如何进行DLL文件的延迟加载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算