吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5862|回复: 10
收起左侧

[C&C++ 转载] 自动隐藏PE文件输入表~.~工具+源码

[复制链接]
vcvycy 发表于 2016-12-3 22:41
上次发了一个http://www.52pojie.cn/thread-559945-1-1.html,感觉没什么人愿意看代码。
直接封装了一个隐藏输入表功能的命令行工具。

对免杀应该有点用。

这个工具在存在TLS Callbacks函数应该是不能正常工作,因为tls回调函数在entry point之前执行,API调用由于导入表还未初始化会导致失败。
(应该可以把重建输入表的函数注册成一个TLS回调函数解决这个问题,但是我懒,因为大部分程序应该都没有TLS回调函数的)

用法很简单:
输入:
final.exe notepad.exe no.exe

notepad.exe这个是我们要隐藏输入表的文件,
no.exe:这个是我们隐藏后的文件。

隐藏后输入表里只有两个导入函数,如下:

简单测试了几个程序,完美运行。有bug的话,可以跟我说下。


核心代码:
//我使用fun函数来替代大部分汇编代码(少部分还是要自己写的)
//此函数在final中不会调用到,但是这个函数编译后的代码会写入要隐藏输入表的文件中。不知道你们理不理解。

void fun(DWORD LoadLib,DWORD GetAddr,DWORD IID,DWORD base){
  LoadLib+=base;
  GetAddr+=base;
  IID+=base;
  LoadLib=*((DWORD*)LoadLib);
  GetAddr=*((DWORD*)GetAddr);
  PIMAGE_IMPORT_DESCRIPTOR pIID=(PIMAGE_IMPORT_DESCRIPTOR)IID;
  while (pIID->OriginalFirstThunk!=NULL){
    DWORD vaDLL=pIID->Name+base;                       //"Kernel32.dll"字符串地址
    DWORD hDLL=(*(DWORD _stdcall(*)(DWORD))LoadLib)(vaDLL);
    PIMAGE_THUNK_DATA32 vaINT=(PIMAGE_THUNK_DATA32)(pIID->OriginalFirstThunk+base);
    PIMAGE_THUNK_DATA32 vaIAT=(PIMAGE_THUNK_DATA32)(pIID->FirstThunk+base);
    while (vaINT->u1.AddressOfData!=0){
      DWORD vaFun;
      if (vaINT->u1.Ordinal&0x80000000){
        vaFun=vaINT->u1.Ordinal&0xff;
      }else{
        vaFun=vaINT->u1.AddressOfData+base+2;  //2个字节的Odinals
      }
      vaIAT->u1.AddressOfData=(*(DWORD _stdcall(*)(DWORD,DWORD))(GetAddr))(hDLL,vaFun);
      vaIAT++;
      vaINT++;
    }
    pIID++;
  }
  return ;
}



int CPE32::IIDHide(){
   static char *szItem[3]={"Kernel32.dll","LoadLibraryA","GetProcAddress"};
   DWORD rvaIID;
   IIDConstruct(szItem,3,&rvaIID);

   PIMAGE_IMPORT_DESCRIPTOR pIIDK32=(PIMAGE_IMPORT_DESCRIPTOR)RVA2PBYTE(rvaIID);
   //修改导入表指针
   DWORD rvaOldImpTable=m_pINH->OptionalHeader.DataDirectory[1].VirtualAddress;

   IMAGE_DATA_DIRECTORY ImportTable;
   ImportTable.VirtualAddress=PBYTE2RVA((PBYTE)pIIDK32);
   ImportTable.Size=0x100;

   m_pINH->OptionalHeader.DataDirectory[1]=ImportTable;
   InitMemberValue();

   //添加代码初始化
   DWORD rvaLoadLibrary;  IIDGetFunAddrPtr(szItem[1],&rvaLoadLibrary);
   DWORD rvaGetProcAddr;  IIDGetFunAddrPtr(szItem[2],&rvaGetProcAddr);
   DWORD base=m_pINH->OptionalHeader.ImageBase;

//   DWORD base=m_
   BYTE Code[1000];
   PBYTE p=Code;
   *p++=0x60;                                        //pushad
   *p++=0x68;*((DWORD*)p)=base;p+=4;                 //push {base}
   *p++=0x68;*((DWORD*)p)=rvaOldImpTable;p+=4;       //push {OldImportTa}
   *p++=0x68;*((DWORD*)p)=rvaGetProcAddr;p+=4;       //push {GetProcAddr}
   *p++=0x68;*((DWORD*)p)=rvaLoadLibrary;p+=4;       //push {LoadLibrary}
   *p++=0x50;                                        //push eax;{这里只是随便填充4个字节,用于ret的地址。
   PBYTE pfun=(PBYTE)fun;
   while (*pfun!=0xc3)*p++=*pfun++;                   //写入编译后的函数
   *p++=0x58;
   *p++=0x58;
   *p++=0x58;
   *p++=0x58;
   *p++=0x58;                                        //pop eax,弹出4个参数加一个ret的地址。
   *p++=0x61;                                        //popad
   AddCodeAtEntry(Code,p-Code);                         //代码加入入口处。

   return 0;
}



捕获.JPG

点评

本来免杀的东西,用了秒杀  发表于 2016-12-3 23:12

免费评分

参与人数 3热心值 +3 收起 理由
黑色切线 + 1 坐等更新,用了NOD32是不杀,其他杀得很猛
流浪天涯 + 1 热心回复!
wattwei + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| vcvycy 发表于 2016-12-3 22:44
工具怎么发不出来。。

final.rar

195.44 KB, 下载次数: 174, 下载积分: 吾爱币 -1 CB

隐藏输入表

wattwei 发表于 2016-12-3 22:54
 楼主| vcvycy 发表于 2016-12-3 23:32
测试了下,应该可以躲过NOD32的输入表查杀。
之前各种修改dll名称字符串、函数名称字符串,一点用没有,真的是化成灰它都认识你。
现在整个输入表全改了。
程序还有一个问题,重建过程中需要的各种空间,本来可以新建一个区块,把要加的东西放进去的,但是我不想这么做。
我自己把所有区块末尾0填充的空间全部收集过来,用来放置新增的数据代码。这样文件大小不会变大,但是需要把所有区块属性置为 read write execute。
pengtusheng 发表于 2016-12-3 23:38
试试  先!!! 收下了
 楼主| vcvycy 发表于 2016-12-4 10:39
关于用了秒杀的问题~.~
之前写这个是为了过nod32,其他杀毒软件没怎么考虑。
刚才测试了下。
我把helloworld文件隐藏输入表,放到virscan上扫描,擦,真的不少杀软(5/39),比如百度这个弱智,连helloworld都杀。
估计是判断到异常的输入表,直接干掉了。

所以正常情况下,隐藏部分关键函数就好了。
过两天又空了,改成自定义隐藏DLL或者导入函数。
yang1014906725 发表于 2017-11-21 10:25
打不开啊老铁
13655041307 发表于 2018-10-17 16:23
学习了!
黑色切线 发表于 2018-11-1 12:49
有没有兴趣有偿写壳
hp140715 发表于 2018-11-14 15:20
感觉有用,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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