关键词不能为空

当前您在: 主页 > 英语 >

OCX控件的暴力破解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-27 21:38
tags:

-

2021年2月27日发(作者:climate是什么意思)



一个国内知名


WEB OFFICE OCX


控件的暴力破解,很详细



收藏





:



【原创】一个国内知名


WEB


OFFICE


OCX


控件的暴力破解,很详细






:



gooddudu






:



2005-05-24,10:35





:



/?t=13922



本文特别详细 的描述了一个国内知名控件(


OCX


)的暴力破解方法,只限学 习交流,请不要非法使用,如


果是作者看见了,请不要生气,我可没拿你的控件卖钱,我 只是爱好破解而已,还是请作者自己提高加密


意识,保护知识产权吧。

< br>



[


破解控件


] NTKO OFFICE


控件


V 2.5.0.3



OCX




[


破解方法


]


暴力破解



[


破解工具


] W32Dasm



UtrlEdit



Cabinet Manager 2001b 3.7



C hinaTcp_CodeSign


,后两个是


CAB


包的打包和签名工具。



[


控件用途


]


很强大啦,做办公自动化系统的最佳控件,支持


VB



DEPHI



C++



ASP



JSP


Domino


等,具体参见官方网站:

< br>




[


郑重声明


]


本控件为国内知名的控件之一,非集团单位内部使用版本在


2000

< br>元左右,集团用户使用可能



5


千元左右,产品授权无限分发使用在


2


万左右,


OEM


就更贵了。以下破解只是为了自己私人使用,


发 表出来也是为了学习交流,请大家不要做违法的事情,也不要向我索取详细的破解资料和破解控件,其

< p>
实,破解很简单,我也悲叹为什么优秀的东西反而加密措施这么不严密。我已经通过折中途径告知作 者,


希望他能在


3.0


版本上自己写算 法加密或加壳,


OCX


能否加壳,以我现在的知识水平,还不清 楚。




一、特别说明





本控件除在


VB

< br>、


DEPHI



C++


中可以使用外(


VC


除外),也可在网页上使用 。网页上使用将是一个


.


CAB


包,使 用方法和


3721


上网伴侣、百度上网伴侣、

< br>Flash


插件一样,第一次打开含有此控件的网页时


将 弹出安装对话框。




在网页上嵌套代码的具体格式如下:





codebase=


......



帐号,一般是用户单位名称信息




密码,是


32


位的


16


进制数 字



.....



不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置。



SPAN>




看见输入帐号和密码的地方了吗?就在网页调用的

< p>
param


参数里写。




因为是


CAB


包,还要在浏览器上显示 安装对话框,所以,此


CAB


包必须具有签名信息,

< p>
2.5.0.3


版本还


是作者公司自己的签名,< /p>


IE


浏览器告知没有可信任的证书;


3. 0


版本已经获得了微软的相关认证,


IE


浏览


器告知可信任。



CAB


包中一般包含有


OCX


控件和控件的


INF


(信息)文件,所以,破解过程必须经过以下步骤:



1


、解包出


OCX


文件。用


Winrar


即可解开



2


、破解


OCX


文件



3


、打包破解的


OCX


和修改过的


INF


文件为


CAB


包。使用工具为


Cabinet Manager



Winrar

< p>
不能打包


CAB


文件的。



4



CAB


包 重新签名。使用工具为


ChinaTcp_CodeSign


。 微软也有一个签名工具,就在


VC5.0


版本安


装盘的一个目录下,


具体位置我忘记了;


本来微软网站 也提供下载,


后来好象是因为控件注册的安全问题,


链接去年就 已失效。




有关


Cabinet Manager



ChinaTcp_CodeSign


,网上有下载,但不好 找的。具体使用方法,自己看它


们的帮助文件即可,很简单。这里是讲

< br>OCX


本身的破解。




二、破解思路



本控件有帐号和密码限制,如果不输入正确的帐号和密码,自动转成



试用



版本,试用版本有定期时间限


制,从发行到过期是


1


个月的时间,过期将不能正常使 用;如输入正确的帐号和密码,系统将不检测过期


日期。



本次破解我将使用暴力破解,不探讨复杂的帐号到正确密码的算法。



首先是过期检测。因为不输入正确的帐号和密码将检测过期,所以必须破解,思路是不让 其检测日期,或


者将过期日期推到


9999

年。



再次是帐号和密码检测。做到随便输入帐号和密码都 可正常使用。



还要避免一个破解后的代码执行逻辑问题,就是 正确的帐号和密码也可以使用,这将不是只修改一个地方


的跳转指令能解决的问题。思路 是,不论输入什么帐号和密码,系统都认为是错误的,这样就可以只修改


跳转指令解决。



对于一些无关紧要的提示信息,不做完美破解,可直接修改资 源文件(如



关于


< br>对话框),也可直接在源


代码中将信息编码的字符抹成空格(

20


)。



由于是


OCX


控件,


自身不能运行 ,


所以不能动态跟踪,


我一开始想用


V B



C++


做个使用此控件的程序,< /p>


后来发现跟踪麻烦,


很难发现关键代码处。


后来用


W32Dasm


反编译了一下,


觉得汇编代码很亲切,


以我


的汇编语言水平,还不如静态分析 呢。破解工作就这样开始了,耗时近


4


个小时搞定。

< p>



破解着手点:




日期检测一般要读取本地时间,本身要用一个


API


函数:


alTime




帐号密码检测要比较字符串,本身也要调用一个


API


函数:


pA





W32Dasm


反汇编后就提供本控件调用的输入输出


API


函数,

< p>
双击函数行,


就可快速切换到相应的调用汇


编代码 处,利用这个原理,作为破解的着手点。




三、详细破解开始




因为此控件有时间限制,肯定要调用


WINDOWS API< /p>


函数查询当前破解机器的本地时间,这个


API

< br>为


K


alTime


,所以要查找 汇编代码中那些地方调用了此函数。打开


W32Dasm


的菜单






-



输入函数


”< /p>


列表,寻找到


alTime


,双击之,< /p>


W32Dasm


汇编区域代码将切换到


调 用


alTime


处。




如下代码:




* Reference To: alTime, Ord:012Fh


|


:22018AE0 FF15CC000222 Call dword ptr [220200CC]


:22018AE6 6A10 push 00000010


:22018AE8 8D45E0 lea eax, dword ptr [ebp-20]


:22018AEB 6A00 push 00000000


:22018AED 50 push eax


:22018AEE E89D100000 call 22019B90



注意此时不要着急往下浏览代 码,应该往上浏览,为什么呢?因为此处代码可能不是程序的主过程,很可


能是一个进行 过期检测的自编函数,这是因为程序可能在很多地方调用过期检测,所以一般都要编写成一


个公用函数调用。


那么,


往上浏览到什么地方停呢?应该慢慢 翻到具有调用入口的地方停,


记下这些入口,


后面还要继续望上 追溯呢!




以下为上翻找到的调用处 代码,完整的日期检测要从这里开始分析。




* Referenced by a CALL at Addresses:


|:22003CDC , :220044B3 , :22004585 , :220056FC


‘4


个调用入口



|


:22018AD5 55 push ebp


:22018AD6 8BEC mov ebp, esp


:22018AD8 83EC30 sub esp, 00000030


:22018ADB 8D45D0 lea eax, dword ptr [ebp-30]


:22018ADE 56 push esi


:22018ADF 50 push eax



完整的过期检测函数代码如下:




* Referenced by a CALL at Addresses:


|:22003CDC , :220044B3 , :22004585 , :220056FC


‘4


个调用入口





‘W32Dasm

< p>
反汇编器告诉我们,以上地址的代码处都


CALL


了这里的过期检测函数,你可以按以上地


址寻找并修改每个


CA LL


代码后面的判断代码指向来完成暴力不过期。但会存在一个问题,因为判断逻辑


反了,如果现在还没过期,程序会报告过期,过期了反而认为不过期,有意思吧?!所以,我 们应该分析


一下过期检测代码,


看能不能通过修改下面的代码把 过期日期往后推推呢?!


如改个


9999



12



28



总可以吧!



好,咱们继续往下看吧!



|


:22018AD5 55 push ebp


:22018AD6 8BEC mov ebp, esp


:22018AD8 83EC30 sub esp, 00000030


:22018ADB 8D45D0 lea eax, dword ptr [ebp-30]


:22018ADE 56 push esi


:22018ADF 50 push eax



* Reference To: alTime, Ord:012Fh


|


:22018AE0 FF15CC000222 Call dword ptr [220200CC]


:22018AE6 6A10 push 00000010


:22018AE8 8D45E0 lea eax, dword ptr [ebp-20]


:22018AEB 6A00 push 00000000


:22018AED 50 push eax


:22018AEE E89D100000 call 22019B90



* Reference To: TimeToFileTime, Ord:02C8h


|


:22018AF3 8B35EC000222 mov esi, dword ptr [220200EC]


:22018AF9 83C40C add esp, 0000000C


:22018AFC 8D45F0 lea eax, dword ptr [ebp-10]


:22018AFF 66C745E0D507 mov [ebp-20], 07D5



'


↑关键部分


1


找到了,就是上面那行代码,


“07D5”


是什么,就是


10


进制的


“2 005”


,作者直接把日期写


进程序了!看来,控件在


2005


年过期。改成:


270F


,即


“9999”


年。哈,感觉真爽。下面还有月和 日的


赋值代码。




:22018B05 50 push eax


:22018B06 8D45D0 lea eax, dword ptr [ebp-30]


:22018B09 50 push eax


:22018B0A 66C745E20300 mov [ebp-1E], 0003



'


↑关键部分


2


找到了,就是上面那行代码,

< br>“0003”


是什么,就是


10


进制的


3


月,看来,控件在


2005< /p>



3


月过期。改成:

000C


,即


“12”


月。哈,其 实这是多余的,因为年改了就行了。




:22018B10 66C745E61700 mov [ebp-1A], 0017



'


↑关键部分


3


找到了,就是上面那行代码,

“0017”


是什么,就是


10


进 制的


23


日,看来,控件在


2005< /p>



3



23


日过期。改成:


001C


,即


“28”


日。哈,其实这也是多余的。




:22018B16 FFD6 call esi


:22018B18 8D45F8 lea eax, dword ptr [ebp-08]


:22018B1B 50 push eax


:22018B1C 8D45E0 lea eax, dword ptr [ebp-20]


:22018B1F 50 push eax


:22018B20 FFD6 call esi


:22018B22 8D45F8 lea eax, dword ptr [ebp-08]


:22018B25 50 push eax


:22018B26 8D45F0 lea eax, dword ptr [ebp-10]


:22018B29 50 push eax



* Reference To: eFileTime, Ord:0023h


|


:22018B2A FF15E8000222 Call dword ptr [220200E8]


:22018B30 33C9 xor ecx, ecx


:22018B32 5E pop esi


:22018B33 85C0 test eax, eax


:22018B35 0F9FC1 setg cl


:22018B38 8BC1 mov eax, ecx


:22018B3A C9 leave


:22018B3B C3 ret



这不,


我们把过期日期推到 了


9999



12


28


日,


那所有调用过期检测函 数的


CALL


后面的判断跳转代


码就不 需要修改了,也不会再出逻辑问题。





***************




因为此控件有帐号和密码检测,


很可 能要调用


WINDOWS API


函数的字符串比较函数,


这个


API



KE R


pA



所以要查找汇编代码中那些地 方调用了此函数。


打开


W32Dasm


的菜单



函数



-



输入


函数



列表,寻找到


KERNEL32. lstrcmpA


,双击之,


W32Dasm


汇编区域代码将 切换到调用


KERNEL3


2. lstrcmpA

< p>
处,


这一般会有多个,


因为控件中的字符串比较一 般有多个,


不一定都是帐号和密码检测的,


这需要自己花点时间 判断分析。





以下为帐号和密码检测的


pA


调用处。




* Reference To: pA, Ord:0329h


|

-


-


-


-


-


-


-


-



本文更新与2021-02-27 21:38,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/676216.html

OCX控件的暴力破解的相关文章