c# dll破解(转)
一、准备
需要的软件:
Ildasm.exe:用来将dll,exe编译为IL文件
ilasm.exe:用来将IL文件编译回来dll或exe
这2个工具装好VS就有了(VS2005的可以处理2003的,反过来不行)
文本处理工具:
UltraEdit :http://www.crsky.com/soft/1469.html
EmEditorPro:http://www.crsky.com/soft/4278.html
根据不同情况需要使用上面不同的工具
其他工具:
Reflector.exe :http://www.pediy.com/tools/dotnet.htm
xenocode FOX: http://www.pediy.com/tools/dotnet.htm
修改过的Ildasm:http://www.pediy.com/tools/dotnet.htm
平时可以使用Reflector,有些特别的使用Fox方便。当处理一些版权保护的或经过特殊混淆的.net1.X时需要使用修改过的Ildasm
上面这些东东在用到的时候再具体说
.net的通常破解流程大致就是:
1,使用ildasm编译目标文件(exe/dll)为IL
2,去掉强名,使用ilasm反编译回来看看是否可正确运行
如果可以运行,那么基本都可以搞定(步骤3);如果不可以(步骤4)
3,查找IL文件中的限制进行修改再次反编译直到破解完成
4,查看IL文件是否还有其他限制找到并剔除
如果还是不能运行可能该死的东东不能使用通常的方法破解,具体问题具体分析了
二、示例
选择一个日程控件(下载:http://www.mediachase.com/ )
安装、运行后看看他的试用限制是怎么体现的
我们随便找一个页面运行看看效果Home/fullsample.aspx
我们看到,当没有注册时会出现警示语
(有些软件的试用提示是随机出现的,但不管怎么说,我们要破解一个软件时第一步就是要了解这个软件的限制是什么)
接下来我们尝试看看是否可以反编译
打开Ildasm.exe编译为IL文件
(Ildasm.exe默认在C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin )
我们用EmEditor打开IL文件并删除强名
删除强名,是使用反编译方法破解的必须步骤,只要使用了Ildasm编译就必须删除强名
灰色部分就是强名,全部删除并保存
接下来将IL编译回DLL
进入VS2005命令行(如果直接用cmd进入DOS因为环境变量的问题可能需要输入全路径)
切换到IL目录执行
ilasm /dll /resource=Mediachase.Web.UI.WebControls.res Mediachase.Web.UI.WebControls.il
执行成功(但不表示该控件可通过此方法破解)
我们还是回到VS刷新刚才打开的页面,发现没有出现错说,这基本上说明该控件是可以用这种方法破解的
接下来我们就要进入爆破点查找阶段
EmEditor打开IL文件
查找关键字,我们输入“This is” 找到了2个结果
接下来定位一下这个是在那里掉用的,我们往下翻页看到
是在Calendar::RenderContents中
打开Reflector.exe,读取DLL并定位 ,一共2处,并且都在同一个过程内
我们发现2个有个共同点,都是根据变量IsDemoVersion来决定是否输出警示语
那么我们现在有2条路
1直接删除警示语,那么自然就OK了
2,修改变量IsDemoVersion
我们选择2
点击Me.IsDemoVersion跳转 ,鼠标右击-Analyze
查看所有调用IsDemoVersion变量的地方
发现只有两处,一个是我们刚才停留的地方,还有一处,我们看看
我们看到,当实例初始化的时候IsDemoVersion被赋值True
并且我们也通过之前的不走步骤得出只有这一个地方是改变IsDemoVersion的
所以,我们只要把IsDemoVersion改为False就大功告成了
最后操刀
打开EmEditor并定位
找到对应位置,我们只要把True改为False(IL中是ldc.i4.1改为ldc.i4.0)
保存IL
重新dos编译
再次刷新页面
警示语不见了
总结:
- 破解前首先要弄清软件的限制
- 使用Ildasm破解时需要先删除IL中的强名
- 在做IL修改时,善于利用的EmEditor的插件查找功能,他可以列出所有目标
- 尽量在限制的根源突破,比如这次,可以直接删除字符串达到破解目的,可通过修改IsDemoVersion则更好一些,因为日后一些复杂的软件都有多个点,那时就必须重根抓起