OD修改特征码技术详解

需积分: 49 7 下载量 52 浏览量 更新于2024-09-15 收藏 19KB DOCX 举报
"OD修改特征码的经典方法" 在逆向工程领域,修改特征码是一种常见的反病毒技术,用于规避杀毒软件的检测。本资源主要介绍了使用OllyDbg(OD)这一动态调试工具来修改特征码的经典方法。下面将详细阐述这两种主要的修改技巧:ADD改ADC和CMP改SUB。 **A开头部分:** 这部分主要展示了如何通过替换ADD指令来避免特征码被识别。ADD是汇编语言中的加法操作,而ADC则是带进位的加法。在某些情况下,通过将ADD指令替换为ADC,可以改变代码执行逻辑,从而改变特征码。例如: 1. `ADD [EAX],CH` 可以改为 `ADC [EAX],DH` 2. `ADD[EAX],BH0038` 可以改为 `ADD[EAX+40],AL004040` 3. `ADD[EAX+EAX*2+46],AL` 可以改为 `ADD[EAX+EAX*2+46],CL` 4. `ADD[EAX+40],DL005040` 可以改为 `ADD[EAX+40],DL` 5. `ADDAH,CH00EC` 可以改为 `ADDAH,DH` 这些替换旨在保持程序功能的同时,使特征码变得不同,从而逃避杀毒软件的检测。 **C开头部分:** 这部分涉及到的是如何通过替换CMP和CALL指令来实现特征码的修改。 1. `CMP改SUB`:CMP指令用于比较两个操作数,而SUB是减法操作。如果发现CMP指令后面跟着条件跳转(如JNZ),可以尝试将CMP替换为SUB,然后修改条件跳转,使得原本的条件不成立变为成立,以此改变执行路径,避开特征码的检查。 2. `CALL改NOP`:CALL指令用于调用函数,可以通过将其替换为NOP(空操作)指令来消除功能,但这样可能会破坏程序的正常运行。因此,更常见的是寻找附近的NOP指令,将其替换为CALL的地址,以保持功能的同时改变特征码。 3. `JNZ跳转修改`:如果CMP后有JNZ(不等于则跳转)指令,可以尝试修改跳转目标,使其总是跳过比较,从而绕过特征码的检测。 4. `CALLEAX|CALLEBX`:这些是基于寄存器的调用,可以考虑修改调用地址或在调用前后的指令,以混淆特征码。 OD修改特征码的经典方法主要是通过对关键指令的替换和调整,改变代码执行流程,以达到逃避杀毒软件检测的目的。然而,这些方法需要深入理解汇编语言和程序执行逻辑,而且对于现代的高级杀软,这种方法可能并不总是有效,因为它们可能会采用更复杂的检测机制,如行为分析和启发式扫描。因此,在实际应用时,还需要结合其他反逆向工程技术,如虚拟化、混淆等,以提高代码的抗分析能力。