查看: 990|回复: 5

[VC资源] PE文件提取,可提取wai挂辅助或者病毒里的功能dll

[复制链接]
发表于 2020-7-31 16:08 | 显示全部楼层 |阅读模式
Gu_city 2020-7-31 16:08 990 5 显示全部楼层
可以提取某个PE文件中作为资源存放的其他PE文件,例如提取辅助辅助或者病毒里的功能dll,具体看源码
  1. class TiQu{
  2. public:
  3.         TiQu(char*);
  4.         ~TiQu();
  5.         int TQ();
  6.         char* buffer;
  7.         FILE* hf;
  8.         long len;
  9. };

  10. TiQu::TiQu(char* name){
  11.         hf=fopen(name,"rb+");
  12.         fseek(hf,0,SEEK_END);
  13.         len=ftell(hf);
  14.         buffer=new char[len];
  15.         fseek(hf,0,SEEK_SET);
  16.         fread(buffer,len,1,hf);
  17. }

  18. TiQu::~TiQu(){
  19.         fclose(hf);
  20.         delete[] buffer;
  21. }

  22. int TiQu::TQ(){
  23.         int numbers=0;//内含PE文件数量
  24.         char* PEstruct[10]={0};//存放内含的PE文件起始指针,假设文件里含有不超过10个PE文件
  25.         char* point=buffer;
  26.         do{
  27.                 char M=*point;
  28.                 char Z=*(point+1);
  29.                 if(M=='M' && Z=='Z'){
  30.                         int E_lfanew=*(int*)(point+0x3c);
  31.                         if(E_lfanew>0 && E_lfanew<0x1000){//E_lfanew偏移一般很小,注意排除负数,因为读取出来的E_lfanew可能超过有符号整数范围变成负数
  32.                                 char P=*(point+E_lfanew);
  33.                                 char E=*(point+E_lfanew+1);
  34.                                 if(P=='P' && E=='E'){
  35.                                         PEstruct[numbers]=point;
  36.                                         numbers++;
  37.                                 }
  38.                         }
  39.                 }
  40.          point++;
  41.         }while(point<buffer+len);
  42.         //char text[30]={0};
  43.         //sprintf(text,"共找到%d个PE文件\r\n",numbers);
  44.         //MessageBox(NULL,text,"提示",MB_OK);

  45.         if(numbers>1){//如果有超过1个PE文件就提取
  46.                 for(int i=1;i<numbers;++i){//从PEstruct[1]开始提取,PEstruct[0]是原文件PE结构
  47.                         int E_lfanew=*(int*)(PEstruct[i]+0x3c);
  48.                         PIMAGE_FILE_HEADER pfile=reinterpret_cast<PIMAGE_FILE_HEADER>(PEstruct[i]+E_lfanew+4);
  49.                         WORD character=pfile->Characteristics;
  50.                         int sectionnumbers=pfile->NumberOfSections;
  51.                         PIMAGE_SECTION_HEADER psec=reinterpret_cast<PIMAGE_SECTION_HEADER>(PEstruct[i]+E_lfanew+sizeof(IMAGE_NT_HEADERS));
  52.                         for(int j=1;j<sectionnumbers;++j){
  53.                                 psec++;
  54.                         }
  55.                         int pesize=psec->PointerToRawData+psec->SizeOfRawData;
  56.                         char lujing[200]={0};
  57.                         GetCurrentDirectory(200,lujing);
  58.                         char filename[10]={0};
  59.                         if((character&0x2000)==0x2000)
  60.                                 sprintf(filename,"\\%d.dll",i);
  61.                         else
  62.                                 sprintf(filename,"\\%d.exe",i);
  63.                         strcat(lujing,filename);
  64.                         FILE* hfile=fopen(lujing,"wb+");
  65.                         int error=GetLastError();
  66.                         fwrite(PEstruct[i],pesize,1,hfile);
  67.                         fclose(hfile);
  68.                         std::cout<<"提取文件:"<<lujing<<"成功"<<std::endl;
  69.                 }
  70.         }
  71.         return numbers;
  72. }

  73. int _tmain(int argc, _TCHAR* argv[])
  74. {
  75.         char buffer[200]={0};
  76.         std::cout<<"请输入要提取的目标程序"<<std::endl;
  77.         std::cin>>buffer;
  78.         TiQu ceshi(buffer);
  79.         ceshi.TQ();
  80.         system("pause");
  81.         return 0;
  82. }
复制代码

PE文件提取.jpg
发表于 2020-7-31 16:47 | 显示全部楼层
Jrdan 2020-7-31 16:47 显示全部楼层
加过壳的可以吗
回复

使用道具 举报

头像被屏蔽
发表于 2020-7-31 20:08 | 显示全部楼层
jmjmNB 2020-7-31 20:08 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2020-8-1 08:11 | 显示全部楼层
没有成品吗?大哥
回复

使用道具 举报

发表于 2020-8-3 16:33 | 显示全部楼层
没看见软件啊
回复

使用道具 举报

发表于 2020-8-5 13:06 | 显示全部楼层
能做成成品吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表