详谈 vc++源码免杀全套思路方法

来源:互联网 发布:有20个usb端口的电脑 编辑:程序博客网 时间:2024/05/29 01:53
首先说中国国内杀毒软件的特征 。

1  金山毒霸 ,我个人觉得杀的代码部分和字符串还是比较普遍的 。输入表函数 我个人不多见 。

2  瑞星 ,经实战经验 ,瑞星杀毒软件是垃圾。 过掉金山 也就过瑞星了  除非杀敏感的字符串 。

3  江民 ,纯属基本就是杀字符串 。。 大家可以进行 隐藏代码 就可以。。你懂得

4  也就是大家最头疼的  360杀毒 。这个就是重点。因为过掉360 -5引擎 基本国内就差不多了。

简单介绍下 ,360云查杀+BD常规+qvm+国外引擎小红伞+主动防御  。

--------------

详谈360各大引擎套路 你懂得...

(1)360云查杀 ,其实就是qvm和红伞的 集成版  。 也就是云qvm  实时鉴定 、 也是大家最头痛的。

(2)BD引擎 我个人怀疑 也有点智能  。有时候大家会认为定位不到或者定位错误 。也就是本地杀代码 函数 等等都有可能吧,我个人过BD 不太感冒  所以没有深入研究。

(3)qvm ,所谓qvm引擎 其实就是 高启发+行为判断+特征  ..这个毫无疑问  智能引擎 。

(4)红伞 ,也就是跟qvm差别不大 。也属于智能 。大部分在杀行为。

(5)主动防御引擎,其实不存在 。也就是卫士 提示主动防御。(也就是说过掉表面 不过提示那是白费)

-------

详谈360 各引擎的 定位套路 方法 以及思路。

前提,注释掉 区段合并 + 延迟加载+ 优化 。删除版权信息 以及图标 (这里也是在排除可能性)以及查看模式R 模式, 不要用debug模式  ,那是调试模式 。(必然 必须的)

其实过掉360 引擎 。也许还有很多方法,我只说说我的定位套路。

第一步  断网 ,关闭所有引擎 ,开启云杀 ,也就是定位云杀的本地 。 很垃圾很好过。

第二步,继续过BD  ,定位 方法 一样, 正向 跳过1000 头 。(源码免杀不可能杀头 所以跳过1000头)定位  根据定位情况解决  ..

第三补步,关闭所有杀软,定位qvm  。方便做定位正确 ,那么我们要加上 反调试代码  (我个人是必须的)以及其他手段 ,因为qvm 是智能的 。大家都知道 qvm杀的百分百是输入表函数 。所以 大家就要逐一 填充定位。(你懂得)填充到哪里 哪里不杀  那么好吧  就是那个dll里 。 所以 反向定位那个段。基本不会有什么问题 ,然后逐一的填充  逐一定位 。这里给大家举例,kernel32.dll +user32.dll 这个2个dll填充。那么就在这里 ,(一般填充跳过 GetProcAddress和LoadLibrary 因为杀那2个函数 说明是假的,定位错误。所以没必要。) 这样定位来 ,如果还是定位不到,那么就是杀的行为判断,需要反调试代码。或者大家可以进行预处理来测试 。比如说 转换大小和最快模式 ,加 减 去版权和图标,都会影响到整个特征的排序。如果那样进行转换 排除 填充所有常见dll还是被杀 ,那么就可以选择放弃 。或者找更有效的反调试方法。

第四 , 小红伞引擎 。也是大家头疼的问题。 我个人的实战经验 过掉小红伞  基本上要加版权的。不知道怎么搞的。我也郁闷 也没深究。没有版权 怎么着 都会杀。我个人认为 。。然后定位方法 基本跟qvm差不多 也是智能 。 一般总会定位错误函数,没关系 继续定位 , 过掉智能 要就是耐心 。

第五, 也是大家最头疼的问题 ,云查杀 ..我个人表示鸭梨很大。上面我也介绍了  这里再简单说一下云查杀思路 。也就是云的实时鉴定 ,通过什么呢?那么就是qvm和红伞的引擎库了。 估计还有其他行为 ,有待研究。(据了解 360开发者 是一群黑客.你懂得是什么意思)言归正传 ..云查杀  需要联网定位的。 但是想过掉云查杀  必须要过掉前面几个引擎 。最后过云杀 。云杀也是一样  杀的是输入表函数 ,我以前认为云杀 是人工一秒云鉴定 。后来发现貌似不是,是个云qvm.很繁琐很繁琐的 。 提起云杀我就恶心 。但我不得不说 实在是太强悍 太强悍了。 加上qvm和红伞。简直就是让免杀者感觉很蛋疼的一件不蛋疼的事。定位方法 需要正向定位 ,也是逐一去圈。去排除 。傅哥说,动态调用10个函数以上 ,假如可以过掉,那么你下次再拿这套源码定位的时候  很难很难, 可以说基本没什么办法过掉 ,也就是说定位不到输入表函数 。就算定位到  也是些不能调用的地方 函数、。 相信大家都有一套自己的方法,这里我就不废话了。还有一点好多情况 会杀资源  具体方法很多 。大家去JKC 残壳等等 论坛找找相关教程 很好解决 。比如过掉dll但是杀dat的dll资源,那么填充MZ头,在exe的源码里加代码  运行释放dll 加上MZ 。呵呵 这个你也懂得 。

-----------

说实话, 我暂时只能想到这些 。 具体 要靠自己 要靠实战经验  更要有耐心 。有时候我也会为一个问题 郁闷一个星期 。。所以不要轻易放弃 。

----------

总结以上

360 , 强  强的很 。 但是过掉他 方法很多  具体我不说qvm和红伞 , 就说云引擎。比如说upx压缩  可以过掉,现在不知道封了没  。 其实玩黑 ,就是举一反三  活学活用  不管是什么 。不管是免杀  还是渗透  。要对自己有信心  。 一天不行 两天  两天不行三天, 当初我因为免杀实战 ,差点走火入魔了。呵呵 ,总结我不说思路,只说自己要有耐心 , 就像是赚钱养老婆是一回事 。放弃了什么都不要说 ,成功了一过掉杀软,那么 满足感是有的  说明什么  你懂得 呵呵 。。。跟大家扯淡一会 。。

--------------

好继续说。

反调试代码我就不发给大家了 网上也有, 或者去下载多点源码  好多源码都处理过, 所以要学会借鉴 ,别人的代码和花指令 。发下 常用的动态调用以及 字符串隐藏 等,

1.字符串连接

//////////////////////////////////////////////////////////
//把字符串"canxin"连接起来(字符串连接法)
char *str1="can", *str2="xin",*str3=NULL;
str3=new char[strlen(str1)+strlen(str2)+1];
strcpy(str3,str1);//把str1所指由NULL结束的字符串复制到str3所指的数组中
strcat(str3,str2);//把str2所指字符串添加到str3结尾处(覆盖dest结尾处的'\0')并添加'\0'
//这样就实现了str3=str1+str2,把str1和str2连接起来了
//////////////////////////////////////////////////////////


2.字符串隐藏

char XXX[] = {'c','a','n','x','i','n','\0'};


3.动态调用

***************定义*******************
HANDLE
WINAPI
CreateToolhelp32Snapshot(
    DWORD dwFlags,
    DWORD th32ProcessID
    );
***************列子*******************
typedef HANDLE (WINAPI *CreateToolhelp32SnapshotT)
(
    DWORD dwFlags,
    DWORD th32ProcessID
    );
CreateToolhelp32SnapshotT pCreateToolhelp32Snapshot= (CreateToolhelp32SnapshotT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"CreateToolhelp32Snapshot");


4.异常try catch

//////////////////////////列子//////////////////////////

UnhookWindowsHookEx(m_pTShared->hGetMsgHook);

//////////////////////////列子//////////////////////////

-------------------------生成后-------------------------

char canxin=1;
try
{
if(canxin=1)throw 31;
}
catch (...)
{
UnhookWindowsHookEx(m_pTShared->hGetMsgHook);
}

-------------------------生成后-------------------------

----------------

下面谈一下常见的问题 ,比如说BD  云本地,等等常见定位 错误 以及常见解决方法。比如说常见定位BD ,一次生成 ,查杀, 生成20块,查杀20块,大家有可能误解 定位错误 死循环。 其实非也,可以继续定位继续二次  。知道定位2大小,不杀为止,找到特征地址在OD里的位置,进行上下探查,有没有调用或者字符串的形式 ,然后再继续 搜索关键  在源码里的位置。进行分析特征 ,找到那句源代码 在上面进行加花 等处理 。还有一种可能性,无法定位到 真正的特征位置。 可以通过调试 。比如说 我个人常用的一句代码加在main函数头下,加 “   HKEY ck;
char strreg[] = {'S','O','F','T','W','A','R','E','\\','O','D','B','C','\0'};
if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)strreg,0,KEY_ALL_ACCESS,&ck)) 
{
  return 0;
}           ”

这样直接可以直接过掉,  有时候也要看情况 进行处理, 首先就是要做好预处理   我个人一般 去掉所有优化 延迟 以及区段的处理代码 。  云本地 ,其实就是断网 定位的云的本地特征  一般不会杀 。但是强烈建议 过360 要逐一过,  不能 红伞和qvm一起过, 也不能云本地和BD 一起正向定位, 那样 不行,我还是怀疑BD也有干扰效果  。所以,除云查杀意外, 其他都更新最新库  进行断网 。全部过掉,再联网过云。



-----------------

接下来再说一下常见过云查杀技巧  ,常见一般dll和dat已经过掉, 但是生成木马 却被干掉,这是因为行为 或者是dll和dat的行为, 或者杀到了 dll在exe里的资源 ,也就是说资源也是重点  大家进行排除,还有一个就是加个正规文件资源进去 ,这样也有效果 ,如果生成还杀 那么填充资源头 进行处理等等。然后配置信息里 服务名称等 随便输入 不要输入敏感字符 ,比如说360. 或者什么模块什么的。都是敏感的 。

------------

现在简单谈一下  过提示这一方面 ,其实现在的360 已经基本把全部精力 放在了云和qvm这里 。 而安全卫士过掉的难度 也大大降低。所以过提示基本没什么难度 ,再一个就是卫士的本地引擎,以及云引擎。这个我觉得没必要多说, 就是一秒云鉴定, 没什么鸡肋的方法 。只有定位卫士   。往往有时候qvm那云和杀软的云  杀到的特征不太一样,  可能库也不一吧  。这个大家进行测试 ,进行排除 应该不难 。现在就是2个问题,一个云查杀 , 再一个就是 重启上线问题,   以及防上传 ,这些都是必须的。思路就不说了,大家可以去论坛探讨 或者多看看教程 。

--------------------------

给大家点代码 ,反调试



    HKEY ck;
char strreg[] = {'S','O','F','T','W','A','R','E','\\','O','D','B','C','\0'};
if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)strreg,0,KEY_ALL_ACCESS,&ck)) 
{
  return 0;
}

bool IsVirtualPC()//反nod32查杀
{
__try
{
  __asm
  {
   mov eax, 1
    _emit 0x0F
    _emit 0x3F
    _emit 0x07
    _emit 0x0B
    _emit 0xC7
    _emit 0x45
    _emit 0xFC
    _emit 0xFF
    _emit 0xFF
    _emit 0xFF
    _emit 0xFF
  }
}
__except(1)
{
  return FALSE;
}
return TRUE;
}



if(IsVirtualPC())
{
  return 0;
}

_asm push esi;
_asm mov esi,46;
_asm inc esi;
_asm mov eax,dword ptr fs:[esi+1];
_asm mov eax,dword ptr ds:[eax+24];
_asm mov eax,dword ptr ds:[eax+12];
_asm cmp eax,2;
_asm pop esi;
_asm je Begin;
_asm lock dec ebx;
Begin:







HKEY dd;
char sof1[]={'S','O','F','T','W','A','R','E','\\','C','l','a','s','s','e','s','\\','.','3','8','6','\\','\0'};
if (ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,sof1,0,KEY_ALL_ACCESS,&dd)) 
{
  __asm nop;
  __asm nop;
  return -1;
}


给大家一个源码免杀工具最好在虚拟机或者影子系统中做免杀:http://pan.baidu.com/share/link?shareid=342856530&uk=1879657625


免杀工具包:http://pan.baidu.com/share/link?shareid=400367493&uk=1879657625

-------------

最后一段话 ,

举一反三 ,不要只用教程里的死方法 。不懂可以问度娘 或者谷歌  或者问那些大牛那样 他们实战多了最起码有思路  只差逐一测试  。测试测试再测试 。。。 不怕测试任何方法 就怕没耐心去测试。



http://www.cnhonkerarmy.com/thread-180955-1-2.html