CrackMe#68 The ed of 2011

今天是2012倒数第二天,当然CM也会别具一格~

今天的难度系数在过去所有中能排前10….

关键点A:

@@:
bt      dword ptr [esi+4], ecx
jb      @F
dec     ecx
jmp     @B
@@:

显然bt伪指令..我们先查查bt伪指令的用法:

BT是位测试指令,源自80×86

格式: BT OPD,OPS
功能: 目的操作数OPD中由源操作数OPS指定的位送CF标志
位检测指令是把第一个操作数中某一位的值传送给标志位CF,具体的哪一位由指令的第二操作数来确定。 
简单的说是CF==1时@F跳转~
BT(Bit Test):
举个例子:
bt eax,ecx  ;eax=0xAB24AD89 ecx=0x1D
我们知道 eax化成二进制:
1010 1011 0010 0100 1010 1101 1000 1001   
0x1D=29.
而第29位是:1

1010 1011 0010 0100 1010 1101 1000 1001
所以这句指令运行后 CF==1符合JB要求的 
学以致用 在本CM中是对0x13F位进行测试的.可谓是对BT指令的更深层应用
所以BT指令的使用在本CM中觉得堪称一绝!
先把整个CM逆出来先!
经过一天的DASM  这一个逆向出来的源码 算法基本一致`MySource
结合源码&原CM一起分析不难发现这个CM的算法还是非常不错的~

发表评论

邮箱地址不会被公开。 必填项已用*标注