汇编检测OD代码

repnz指令说明:重复执行其后面的指令,CX或ECX存放最多比较次数,DI或EDI存放查找表首地址,AL或AX或EAX存放想查找的内容。当(CX或ECX)= 0 或 ZF=1 退出重复,否则,(CX或ECX)自减一,执行其后的串指令。CX或ECX为0结束是因为已经查表完毕,没有匹配到;ZF=1说明 “比较的结果为0”,也就是查找到一样的内容,说明匹配到想要查找的内容。

 

BOOL DetectBreakpoints()

{

       BOOL bFoundOD;

       bFoundOD=FALSE;

       __asm

       {

                jmp     CodeEnd    

   CodeStart:   mov     eax,ecx  ;被保护的程序段

                nop

                push    eax

                push    ecx

                pop     ecx

                pop     eax

   CodeEnd:    

                cld               ;检测代码开始

                mov     edi,offset CodeStart

                mov     edx,offset CodeStart

                mov     ecx,offset CodeEnd

                sub     ecx,edx

                mov     al,0CCH

                repne   scasb

                jnz      ODNotFound

                mov bFoundOD,1

       ODNotFound:                     

       }

       return bFoundOD;

}

转载于:https://www.cnblogs.com/dsli/p/7221513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值