概述
之前发了篇贴子关于特征码免杀的,不过,看回贴都希望发点关于特征码定位的,本人菜鸟一只,平时一点小积累,不敢独藏,写出来分享一下。不废话了,直接
上菜。
源码定位特征码后所需修改的特征码大致有四种:
1、指令 2、字串 3、启发特征 4、函数 (输出表 )。
初步确定特征码后可随意上汇编指令:__asm nop; 花指令。可随意在代码段中添加,无所谓多少。本来花指令就是冗余代码。当然,也可以在源码中添加花指令,要具备一定的汇编
基础知识才行。
有人把特征码定位分为3类:工具定位,代码定位,手工定位。个人认为分两类就行了,一个是工具定位,一个是手定位。
当然,如果你经常在基地里学习,基地里的某大师的Gh0st 源码课程资料中有记录.手工定位特征码!该大师的特征码定位方法,同样适用于Visual C++ 源码免杀中进行定位。
工具定位:
MyCLL、MutiCLL特征码定位工具,很实用的。相信有一定认识免杀基础的朋友都懂如何利用MyCCL 、MutiCCL 进行定位,这里我也就不去记那么点废话,学会就行了。
手工定位:
其实手工定位中又可以分为几种定位:比如二进制文件特征码,无特征码定位、源码定位,纯属个人认知,如有不同,望见谅。
对二进制文件特征码或无特征码定位,直接甩工具,在些不多说,如果各位想要教程,改天再发。今天主要说一下手工源码免杀。
手工定位方法:
其实要定位特征码方法都是一样的,无论是源码还是二进制文件,无非就是构造意外代码。在C++中构造意外代码最直接莫过于return。这个代码牛啊,如果你感觉哪一块被报了,直接
在其在加个return false;或return;。加后如果被杀表明被报代码在return之前,如果没被报,那不表明特征码在return 之后。依以逐步查找,总能找到被报代码,找到后再改就OK了。
这样就定位到了哈,定位到后我们该如何去改呢?
这方法多了去了,简单说几种啊,其他的大家搜一下就OK了,在基地里提供的方法也多了去了。
过高启发的可以用
try{
...
}
catch(...)
{
...
}
在try中搞点异常代码,把被杀的代码写到catch(...)中,一般杀软对catch(...){...}中的代码是不做分析的,这样不就可以过高启发。
另外可以在代码前加花指令,诸如
__asm
{
nop
...
}
这样的,花指令网上一把一把的,自己找去。
还有就是如果被报的是API函数,这时该怎么办呢?
怎么办,动态获取API地址罢,Loadlibrary(),GetProAddress(...)。
还有,有人反应字符串被报。我晕,像这个wsprintf(czExp, "%s\%s", czExp1, "Explorer.exe");现在杀软,哎,有点变态。哦,不是有点,是很变态。
他要报这个,你就想着法的给他变个方式。不就是格式化个字符串吗,方法多了去了
wsprintf(czExp, "%s\", czExp1); //格式化字串是两个东西
lstrcat(czExp, "Explorer.exe");
其实归根究底总结就两字:动态
他报你这样,你给他变成那样就行了。
结语:些篇仅为个人见解,如有不同或误解,望高手大虾们给予指正,小弟在些感激流涕。另能加精加精,不能就算了,别让他沉了就行啊,权当交流。读到的帮顶下,在些谢过。
最后
以上就是顺心康乃馨为你收集整理的C++源码免杀小记的全部内容,希望文章能够帮你解决C++源码免杀小记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复