您的位置:首页 > 其它

病毒常用方法之下蛋

2018-03-10 20:08 197 查看
恶意文件有时会通过资源(resource)来携带一些其他的子文件。一般的资源有图标,对话框等(可以去查看关于FindResoure的文档)。好像可以自己定义资源的种类!下面是如何从母文件中提取子文件的方法:

long SizeOfImage=0;
DWORD NumOfWrittenBytes;
HANDLE hFile;
HGLOBAL hResData;
HMODULE hExe;
HRSRC hResInfo;

hExe=LoadLibrary("完整的母文件名"); //加扩展名
if(NULL==hExe)
{
printf("LoadLibrary err!");
return 0;
}
//FindResource(_In_opt_ HMODULE hModule,_In_ LPCTSTR lpName,_In_ LPCTSTR lpType)
hResInfo=FindResource(hExe," "," ");//找资源,就是查看是否有相关资源
if(NULL==hResInfo)
{
printf("FindResour
ae3f
ce err!");
return 0;
}
SizeOfImage=SizeofResource(hExe,hResInfo);//获取资源大小

if(0==SizeOfImage)
{
printf("SizeofResource err!");
return 0;
}
printf("the size of file:%d\n",SizeofImage);
hResData=LoadResource(hExe,hResInfo);//加载资源
if(NULL==hResData)
{
printf("LoadResouce err!");
return 0;
}
if(!LockResource(hResData))
{
printf("lock resource err!\n");
return 0;
}
//printf("%x ",*(DWORD *)hResData);
//有的资源数据可能经过了一些处理加密,这里将资源读出来之后还差一步解密

hFile=CreateFile("文件名",0x0c0000000,0,0,2,0,0);
if(!hFile)
{
printf("create file err!\n");
return 0;
}
if(!SetFilePointer(hFile,0,0,0))&&
!(WriteFile(hFile,hResData,SizeOfImage,
&NumOfWrittenBytes,0))
{
printf("write file err!\n");
return 0;
}
CloseHandle(hFile);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  病毒