`

关于控件破解的步骤

阅读更多

2月17日

关于控件破解的步骤

.net下的控件如果不用使用混淆工具混淆,就相当于把自己的源码白送给人家。今天刚破解了SlickUpload,一个大文件上传工具,记录一下一般的破解步骤:

1.先使用reflector反编译工具打开dll文件分析,此工具可以反编译成不同的语言,如c#和il,切换对比一下可以对比c#和il之间的差异,把鼠标移IL指令代码上,还会出现注释说明该IL代码的作用,真是太方便了,找到输出公司标记的部分BrandFilter.GetBrand(),此控件在httpModule处理中直接在response输出流中插入了一个div标签。因此只要将此字符串替换为空就可以了。令人疑惑的是该控件的注册类LicenseValidator并没有在其它部分调用,在reflector中分析代码的依赖关系也很方便,在左侧选中一个方法,点击右键选择analyze就可以分析该方法被哪些代码调用。

2.用ildasm打开dll,转储为文本文件。

3.打开文il文本,首先把校验去掉,否则会出现异常,在文件头部,

.publickey = (。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ) 

把这部分整个删掉。

4.查找GetBrand,会找到两处,第一处为声明,第二处才是要找的部分,修改为就可以了。

.method private hidebysig instance string GetBrand() cil managed
{
      // Code Size: 6 byte(s)
      .maxstack 1
      L_0000: ldstr "<div></div>"
      L_0005: ret 
}
如果有注册机制的话,一般给他返回true就可以了。
public bool IsValid(KeyInfo keyInfo)
{
      return true;
}
转换成IL后变成


.method public hidebysig instance bool IsValid([System.Security]System.Security.Cryptography.Xml.KeyInfo keyInfo) cil managed
{
      // Code Size: 2 byte(s)
      .maxstack 0
      L_0000: ldc.i4.1 
      L_0001: ret 
}
5.保存il文件后还要重新编译回去,在vs命令行输入
ilasm /dll /resource=slick.res slick.il

其中/dll是表明编译为dll,/resouce表明要包含的资源文件。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics