代码实现exe程序释放资源内容到文件
代码实现,将资源内容独立释放出来,恶意程序常用(隐藏恶意代码)
步骤:
1.添加资源,导入资源内容
2.查找资源,加载资源,锁定资源
3.保存到文件
- 在项目解决方案中看到名为资源文件的空文件夹,右键添加–>资源

- 单击自定义,然后在弹出的资源类型框中随便自己想要命名的类型(例如MYRES)



- 编写代码释放资源到文件。这里需要注意,如果不清楚FreeResource函数第二个参数(资源ID),可以在资源头文件里查看,或者可以使用StudyPE等工具查看资源ID。如图6F就是资源ID

代码部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| #include<stdio.h> #include<windows.h>
BOOL FreeResource(UINT,PCHAR,PCHAR); void ShowError(const char *);
void main() { FreeResource(0x6F,"MYRES","Rsrc.txt"); getchar(); }
BOOL FreeResource(UINT ResName,char * ResType,char * SaveName) { HRSRC hRsrc = FindResource(NULL,MAKEINTRESOURCE(ResName),ResType); if (NULL == hRsrc) { ShowError("FindResource"); return FALSE; }
DWORD dwSize = SizeofResource(NULL,hRsrc); if (0 >= dwSize) { ShowError("SizeofResource"); return FALSE; }
HGLOBAL hGlobal = LoadResource(NULL,hRsrc); if (NULL == hGlobal) { ShowError("LoadResource"); return FALSE; }
LPVOID lpVoid = LockResource(hGlobal); if (NULL == lpVoid) { ShowError("LockResource"); return FALSE; }
FILE *fp = fopen(SaveName,"wb+"); if (NULL == fp) { ShowError("LockResource"); return FALSE; } fwrite(lpVoid,sizeof(char),dwSize,fp); fclose(fp); FreeResource(hGlobal); return TRUE; }
void ShowError(const char * err) { printf("%s--%d",err,GetLastError()); }
|
