
特征码知识.docx
10页修改技术总结(图片详解)图片:图片:图片:图片:图片:图片:来自猴岛论坛 : 电脑版评选热心会员及置顶帖的奖励活动(第一期) 台湾**被黑 著名红客单恋一支花再次出手(速度围观) 原创!!小H独家制作一键破解收费软件(傻瓜版)只要你会用鼠标就能学的会! 一By 丶小 H 希望大家支持灰鸽子2.03(无DAT)版特征码修改技术总结 如今杀软的升级,他们的性能越来越强大,查杀力度和广度都大幅度提高,启发式杀毒的日 益完善,使免杀工作越来越困难杀软在进步我们小黑也不能落其后啊,我们必须努力掌握 最新的免杀技巧和动向,同时也不能一步登天的忘了我们的基础而传统的特征码差杀,杀 软依然在使用因此要想使我们的木马文件不被查杀,修改文件特征码也是一种常用的方法, 今天就以特征码修改技术给大家做一个总结,献给支持和关心暗组的朋友,也献给免杀初学 者和即将要学习免杀的朋友,本人能力有限,错误之处请大家指出,我们共同学习进步„一. 什么是“特征码”我们从字面意思上看,就是具有一定特点或特征的一串字符„而这串字符就是被杀软定义一 文件是否是病毒的依据..然而稍微专业点就是程序运行时,在内存中为完成特定的动作,要有特殊的指令,一个程序 在运行时,同一内存地址的指令是相同的同一个程序中,一段连续的地址(它的指令相同), 那么我截取这段地址,就可以判断它是不是这个程序。
为了防止出现病毒的误查杀,可以提 取出多段特征码这也就是我们所说的复合特征码.A. 特征码主要又分为:文件特征码,内存特征码,行为特征码,(主动特征码,如瑞星)B. 同时,又分为:单一特征码和复合特征码;单一特征码就是说,一个程序中的几句代码被杀毒软件做为识别标志修改掉一处就可以免 杀复合特征码:一个程序中的多句代码被杀毒软件作为识别标志有一处不修改都不能免杀二. 修改特征码免杀技术修改特征码技术,是以杀软查杀特点得来的杀软会用它们的特征库(也就是我们说的病毒 库)和我们的文件某些字符作对比,如果彼此吻和,就定义为我们的文件为木马病毒同时, 我们只要修改了它定义出的文件特征码,这样会出现什么情况呢,不用说那就是我们所说的 免杀,也就是用修改特征码技术来达到我们文件的免杀.三. 分析文件特征码我们要使一个木马文件免杀就要修改它的特征码,但这些特征码我们如何得来这就 说到了我们特征码分析,也就是我们所说的特征码定位而定位的工具有很多,常见也是大 家都觉得好用的有(CCL MYCCL multiCCL等).这就不具体说明,我们重点是特征码修改四. 修改特征码常用工具OD(Ollydbg.exe) C32(C32Asm.exe)辅助:RestoratRestorator.exe LordPE.exePEID 0.95.exe 汇编指令查询器(可以很好的帮助我们在修改特征码过程中遇到不认识的汇编指令时,我们可以用它来查询,了解相关功能)(如下图)五. 修改特征码基础汇编指令到了这里眼看就要修改了做免杀了。
大家别急,有句话说的好:“巧妇难为无米之炊” 也就是说,我们现在有了好的工具但是你会用吗?如果回答是否定的,那一切还是等于零工具的使用我这里就不说了,暗组论坛自己搜,NEW4写的OD使用说明就很不错,大家可 以看看好了,我们言归正传修改特征码需要具备基本的汇编知识,不懂没关系,只要你 肯学肯记,不需要你对汇编了解太深,只要记住常见的指令和它们的作用大家请注意,这 步是学习免杀即修改特征码最关键的一步,这步学习的好坏,决定你以后修改特征码技术的 高低„这里我给大家列出我们必须去掌握的一些指令,希望大家下来好好背记„1.算术运算符ADC:带进位加法ADD:二进制数加法DEC :减一DIV:无符号数除法IDIV:带符号数(整数)除法IMUL :带符号数(整数)乘法INC:加一MUL:无符号书乘法NEG:求补SBB:带借位减法SUB:二进制减法XADD:交换并相加2.ASCII-BCD 转换AAA:加后ASCII调整 AAD:除前ASCII调整 AAM:乘后ASCII调整 AAC:减后ASCII调整DAA:加后十进制调整 DAS:减后十进制调整3.移位RCL:带进位循环左移 RCR:带进位循环右移ROL:循环左移ROR:循环右移SAL:算术左移SAR:算术右移SHL:逻辑左移SHR:逻辑右移SHLD:双精度左移SHRD:双精度右移4.比较BSF/BSR:位扫描 BT/BTC/BR/BB:位测试 CMP:比较CMPSN:串比较 CMPXCHG:比较交换CMPXCHG8B :比较并换?lt;br>TEST:测试位5.数据传送LDS:装如数据段寄存器LEA:装入有效地址LES:装入附加段寄存器LODS:从串取LSS:装入堆栈段寄存器MOV:传送数据MOVS:串传送MOVSX:带符号扩展传送MOVZX:带零扩展传送STOS:存入串XCHG :交换XLAT换码6.标志操作CLC:清除位标志CLD:清除方向标志CLI:清除中断标志CMC:进位标志求反LAHF:标志送AHPOPF :标志出栈PUSH F:标志进栈SAHF:AH送标志寄存器STC:进位标志置1CTD:方向标志置1STI :中断标志置17.输入/输出IN:输入字节或字INSN:串输入OUT:输出字节或字OUTSN:穿输出8.逻辑操作AND:逻辑与 NOT:逻辑非 OR:逻辑或 XOR :异或9.循环LOOP:循环直到完成LOOPE :相等时循环LOOPZ :为零是循环 LOOPNE:不相等时循环 LOOPPNZ:不为零是循环 LOOPPNEW:不相等时循环 LOOPNZW:不为零时循环10.处理器控制HLT进入暂停状态LOCK:封锁总线NOP:无操作WAIT:置处理器于等待状态11.堆栈操作ENTER :建立堆栈帧LEAVE:结束堆栈帧POP:字出栈POPF :标志出栈POPA:所有通用寄存器出栈PUSH:字进栈PUSHA:所有通用积存器进栈PUSH F:标志进栈12.串操作CMPS:串比较 LODS:从串取 MOVS:串传送REP:串重复REPE :相等时重复REPZ :为零时重复REPNE:不相等时重复REPNZ:不为零时重复SCAS:串扫描STDS:存入串13.转移(条件)INT 溢出中断JA:高于则转移JAE:高于或等于则转移JB:低于则转移JBE:低于或等于则转移JC:进位为1则转移JCXZ:CX为零则转移JE:相等则转移JG:大于则转移JGE:大于或等于则转移JL:小于则转移JLE:小于或等于JNC:进位为零则转移JNE:不相等则转移JNG:不大于则转移JNGE:不大于或等于则转移JNL:不小于则转移JNLE:不小于或等于则转移JNA:不高于则转移JNB:不低于则转移JNBE:不低于或等于则转移 JNAE:不高于或等于则转移 JN 不溢出则转移JNP:奇偶位为0则转移JNZ:结果不为零则转移JNS:结果为正则转移J 若溢出则转移JP:奇偶位为1则转移JPE:奇偶性为偶则转移JP 奇偶性为奇则转移JS:结果为负则转移JZ:结果为零则转移14.转移(无条件)CALL:调用过程INT:中断IRET:中断返回JMP:无条件转移RET:返回RETN/RETF:近返回/远返回15.类型转换CBW:字节转换为字CDQ :双字转换为四字CWD:字转换为双字CWDE:字转换为扩展的双字大家不要怕辛苦,在你要动摇的时候,你就想想自己做出自己的免杀那种成就是多么开心免杀需要我们的坚持和不断创新,它的乐趣在于挑战„希望大家努力而不放弃„六. 修改文件特征码 终于我们开始修改了,也恭喜你经过了无聊和乏味的时期,现在是我们创造奇迹的时候了。
特征码定位出来之后,就是我们修改的过程只有这样才能达到躲过杀软查杀的目的修改 文件特征码的方法有很多如:替换法,填充法,大小写转换法,通用跳转法等今天就给 大家一一道来„.1. 排序法(就是我们说的上下互换法) 在我做免杀的过程中,上下互换我发现很重要也是很有效的办法,但是没有一个方法是完美 的,上下互换也不能保证 100%的成功率,不过它的通用率在 90%..好了,我们具体说明一 下例如:1 2 3 4 5 都分别代表一汇编指令,而其中 3 就是被杀软定义为病毒特征我们要做 的就是打乱它的顺序,让杀软无法辨别修改后成:1 3 2 4 5 或 1 2 4 3 5 在不影响程序运 行前提下,找到相应的互换法.我们实例说明„如图选定的MOV XXXXXX我们可以和PUSH XXXXX上下互换 或者MOV XXXX和下 面的MOV XXX互换,从而达到免杀 般情况下双MOV都可以互换,如图CALL XXXX 也可以和下面PUSH XXXXX互换…但有时候的CALL是不能乱换的,这里就需要大家给汇 编知识的了解,和自己的经验了„这个方法没什么技术含量,需要的是你下来多多练习,做 多了自然掌握…2. 替换法 替换法就是同等指令或者使用功能相同的代码之间的替换.就像 5-5=0 而1-1 也=0 他们最终 的结果和功能上都是一样的,在程序里这种我们可以相互替换,不会影响程序的运行。
替换 法就是程序灵活性的体现,一种功能,程序可以有N种方法表达出来所以大家必须掌握 我们常用的汇编指令,从而替换法将会简单如一下来我们实例说明我们选定的区域,是这么一个汇编指令:SUB EAX,37 SUB看了上面常用汇编指令的人应 该了解这种算术运算符中的减法运算这句意思是EAX减37 .从而我们就有了思路在有 理数中,有了正负数,它们的加减我想大家都会吧口诀是正正得正,负负得正,正负得负. 由此我们可以把这句指令修改成这样・我们修改成ADD EAX,-37 ADD是汇编中的加法,加负37,结果还是减37•功能上和结果上 到和原来的一致程序也不会影响,杀软也将不会查杀…在我免杀中,还有如AND=TEST Je可以换成JNL或jnz等LEA也可以换成TEST或AND SAR算术右移.(=SHR) SAL算 术左移.(=SHL)有时候CALL也可以换成 MOV或JMP JMP=JB+JNB ADC=ADD+INC等不 过替换法也不是百分百成功的我们要灵活运用,不能死板硬套,这样的想法是不可取的 我们多多尝试,多多创新,免杀技术才会进步上面都是相关指令的替换,还有一种就是 几句代码,我们可以用其他的代码替换掉,功能和结果都是同等,也不会影响程序正常运行。
如:XOR AL ,0 XOR在汇编中是异或运算符而异或运算的二进制方法是这样的:1A1=0 0A0=0 1A0=1 0A1=1看了这个我想大家可能就有所明了我们可以把原来的这句写成MOV BL,0 XOR AL,BL 这两句的结果和原来的还是一样的…修改后杀软也不会查杀…从这里我 们看出了汇编指令的重要性,所以大家开始还是要努力吃掉那些基本的语句,这样以后就会 好多点…3. 填充法 填充法,我想大家是最先学会的。
