kingkie 发表于 2012-9-21 15:26

静态分析破解一OCX控件

手上有一个中国地图控件(ChinaMap.ocx),使用了下没有注册的部分省份被锁定,无法使用,于是就用OD加载看了下:
查看代码,找到了如下一段:
11012D85   .8B75 08       MOV ESI,DWORD PTR SS:
11012D88   .8B46 64       MOV EAX,DWORD PTR DS:
11012D8B   .50            PUSH EAX
11012D8C   .68 3C250011   PUSH ChinaMap.1100253C                        ;UNICODE "712CcAiyY99"
11012D91   .FF15 68100011 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>]   ;MSVBVM60.__vbaStrCmp
                         比较字符串
11012D97   .8BC8          MOV ECX,EAX
11012D99   .66:8BC7       MOV AX,DI
11012D9C   .F7D9          NEG ECX
11012D9E   .66:99         CWD
11012DA0   .66:BB 0300    MOV BX,3
11012DA4   .1BC9          SBB ECX,ECX
11012DA6   .66:F7FB       IDIV BX
11012DA9   .41            INC ECX
11012DAA   .66:4A         DEC DX
11012DAC   .66:F7DA       NEG DX
11012DAF   .1BD2          SBB EDX,EDX
11012DB1   .F7DA          NEG EDX
11012DB3   .0BCA          OR ECX,EDX      改为AND ECX,EDX
11012DB5   .75 7B         JNZ SHORT ChinaMap.11012E32改为JZ
11012DB7   .8B16          MOV EDX,DWORD PTR DS:
11012DB9   .56            PUSH ESI
11012DBA   .33FF          XOR EDI,EDI
即上面的地址为11012D91有比较语句,这个是静态分析,所以没有调试,只能看下代码了,发现地址上11012D8C 为静态 的值,比较后,还不是直接跳转,而是在经过运算才判断,一时看不懂,就转到了有JNZ的11012DB5 ,经过分析,这个控件只是部分相同的没有用,这句语句上面就是OR,刚好OR的意思只要有部分正确就正解的意思,我就猜想应该可以在此做文章,于是改为AND,然后跳转指令也修改,这样就避开了部分可用的限制,保存控件测试.
测试可用:如下图所示:,原来甘肃不可用的,点击了下能显示出来了,控件也被破解了,这是本人第一次破解,有点巧合,运气好,哈哈........

Chief 发表于 2012-9-21 15:38

这个属于和谐他的限制,
若有注册的话试下爆他的注册,多种尝试多种经验。

1354669803 发表于 2012-9-21 16:55

and的作用是连接的意思么

zhupengyue212 发表于 2012-9-21 17:21

谢谢分享。慢慢学点东西。

free7712 发表于 2012-9-21 17:29

没怎么看明白,学习中....

kingkie 发表于 2012-9-22 15:30

1354669803 发表于 2012-9-21 16:55 static/image/common/back.gif
and的作用是连接的意思么

这里的AND就是与的意思,作用是原本部分的开放改为全部开放,要联系下一语句解释

kingkie 发表于 2012-9-22 15:34

Chief 发表于 2012-9-21 15:38 static/image/common/back.gif
这个属于和谐他的限制,
若有注册的话试下爆他的注册,多种尝试多种经验。

这个控件没有发现注册入口,原本以为是把控件的某一属性修改为注册值就可以了,结果看到这控件只有几个属性,一一试了都没作用,所以只好和谐他的限制了
页: [1]
查看完整版本: 静态分析破解一OCX控件