标题:【原创】ProFactor IncludeManager
作者: supercolin
时间: 2013.5.24
链接:
http://bbs.pediy.com/showthread.php?p=1180455
软件性质:代码管理
软件名:ProFactor IncludeManager
版本:1.04
官方网址:
http://www.profactor.co.uk/products.php
使用工具:Windbg,IDA Pro, Reflector
破解性质:暴破
潜水多年,从未发过原创帖
还是要多与人交流才会进步。还请各位多多指教。
由于工作关系,重构项目的时候想整理一下头文件依赖关系,现在的太乱了。于是尝试找一个能够图形化显示依赖关系的工具。发现两个比较好的,一个就是这个ProFactor出的Include Manager。还有一个VS2010 feature pack 2提供的功能。相比之下,VS2010 FP2提供的功能更强大些。不过看到前者只能试用,总还是有点不爽的感觉,你懂的。网上没找到现成的破解,只能自己搞。
Include Manager以插件形式运行于VisualStudio,效果如下:
未注册时有28天试用期, 如果保存关系图还会有水印
到期后提示过期
插件主要是3个文件(对VS2010来说):
IMVSACore.dll
IncludeManager.dll
VSPlugin.dll
对不同的VS(7, 8, 9), IMVSACore.dll是相同的,只是和VS的接口不同,即IncludeManager.dll和VSPlugin.dll不同。
还好,没壳:
老规矩,先找字符串。
IDA分析IMVSACore.dll,找关键字符串,没找到。
Reflector分析IncludeManager.dll和VSPlugin.dll,发现字符串都在这里,比如:
大致看了一下以后发现,核心内容都在IMVSACore.dll中,毕竟尺寸也是最大的。而IncludeManager.dll和VSPlugin.dll只是作为VS和IMVSACore.dll的接口,以及要不要显示注册窗口。因此分析还是要从IMVSACore.dll入手。
看一下IMVSACore.dll的导出表:
选中的这个函数很有意思,显然是和License有关的。
再看一下导入表:
先是一堆注册表操作函数:
转到调用处sub_1003D970,前后看看,结果发现了GetSystemTime函数:
用Windbg跟一下,发现是在Query "SavedWindowState3172"这个键值:
看完这个函数sub_1003D970,大致是这样操作的:
- 读取当前系统时间。
- 读取注册表HKCU\Software\ProFactor\IncludeManager下的Binary Value "SavedWindowState3172",解析出安装时间(及其他信息)
- 若以上key不存在,则认为是全新安装,生成并写入该键值,剩余试用时间28天
- 若以上key存在,计算时间差,若超过28天则试用到期。
然后有一堆GDI函数:
从IMVSACore.dll本身看不出什么来。如果来到IncludeManager.dll,就能知道是在做什么了:
看到了吗?mIsTrial的话就会把水印填上去了,保存前先会生成DIB,再把水印信息blt上去。
还有一堆CRT标准函数:
来到调用处sub_1003DC10,因为参数都是从另外两个DLL里传来的,这里看不到文件名是什么。还是用Windbg跟一下,发现是在读license.bin。
把函数分析完,大致是这样的:
- 读取license.bin
- 若不存在,则是试用版,按照上面计算试用时间的方式继续。
- 若存在,按照算法读出其中信息,解析Username,Organization, Comments等其他信息,并更新注册表中的相应内容。
大致前期分析就是如此。另外做了几个实验:
- 改系统时间。往前改,立即过期;往后改,试用时间变长。
- 删除注册表键值"SavedWindowState3172",则试用重新恢复28天。
- 手工建立文件license.bin,会提示证书错误。
因此证实以上分析基本正确。
(图贴不下了,回贴中继续)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课