本文章只是技术探讨,学习,技术上的研究而已。请支持正版.

如:KS.Gantt.DLL 为例

  1. 使用ILSpy反编译 工具
  2. 利用ildasm反编译 KS.Gantt.dll  生成IL中间代码 一般会生成 *.il 和*.res 一些其它资源文件 *.resources
  3. 然后用记事本修改IL文件
  4. 然后用ilasm编译中间代码,生成新的KS.Gantt.dll
  5. 在项目中使用 查看效果

破解过程

修改验证的代码

利用ildasm反编译 KS.Gantt.dll

打开IL文件找到对应的代码然后删除掉

哈哈 就这个。。

  .try
{
IL_0260: ldarg.
IL_0261: ldtoken KS.Gantt.Gantt
IL_0266: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_026b: ldarg.
IL_026c: call class [System]System.ComponentModel.License [System]System.ComponentModel.LicenseManager::Validate(class [mscorlib]System.Type,
object)
IL_0271: stfld class [System]System.ComponentModel.License KS.Gantt.Gantt::license
IL_0276: leave.s IL_0297 } // end .try
catch [mscorlib]System.Exception
{
IL_0278: pop
IL_0279: call bool [mscorlib]System.Diagnostics.Debugger::get_IsAttached()
IL_027e: brtrue.s IL_0295 IL_0280: newobj instance void KS.Gantt.frmAbout::.ctor()
IL_0285: stloc.
IL_0286: ldloc.
IL_0287: callvirt instance valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.Form::ShowDialog()
IL_028c: pop
IL_028d: ldloc.
IL_028e: callvirt instance void [System]System.ComponentModel.Component::Dispose()
IL_0293: ldnull
IL_0294: stloc.
IL_0295: leave.s IL_0297 }

然后用ilasm编译中间代码

ilasm /dll /output=D:\MyDll\KS.Gantt.dll /Resource=D:\MyDll\Gantt.res D:\MyDll\Gantt.il

我一看到这几个单词。我就知道成功了。。

然后在去验证

那个授权验证代码不在了哈。。

不过呢。后来我测试 。我发现在这个DLL不能用的。运行会报这个错的

Unhandled Exception: System.IO.FileLoadException: Strong name validation failed 

所以又得删除那个签名,删除以下所有内容

.publickey = (                  // .$..............
// .$..RSA1........
3B B2 D0 F9 DA 7E B2 6B CF EB F6 // ;....~U.P@k.. .g
E7 D6 AF 4F 6D 5D 0B C7 E2 // ...e2Om!].S.....
F0 6A EE F8 DB F9 A1 B5 C1 // .j.8.t."4......f
B7 0B A8 9E 8A E1 D1 AB A2 4E 3A // ...6I..q..&..xN:
8B 8C 7F 4D 5F 1F 8D DE 6C EC // .q..MT"(_...l.."
8A 3F 0A F4 F4 7F B7 8C F5 5D F4 CB // 4.5?........]..T
DD 5E D5 0D 7F B1 9B 7F 0E FB 2A // ...^.. ........*
5F 3D 2C E2 6D FE FE ) // v_E= ,.m.Ur0Iv(.

最后在从新编译DLL。成功了

编辑IL文件 修改DLL文件的更多相关文章

  1. lib文件和dll文件

    一. 简介 1.1 C++两种库文件 lib包含了函数所在的dll文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的dll提供,称为动态链接库dynamic link library. ...

  2. LIB文件和DLL文件的作用

    (1)lib是编译时需要的,dll是运行时需要的.如果要完成源代码的编译,有lib就够了.如果也使动态连接的程序运行起来,有dll就够了.在开发和调试阶段,当然最好都有.(2)一般的动态库程序有lib ...

  3. 关于vs的lib文件和dll文件

    一.LIB文件概念 一个lib文件是obj文件的集合.当然,其中还夹杂着其他一些辅助信息,目的是为了让编译器能够准确找到对应的obj文件 二.与DLL的区别 (1)lib是编译时需要的,dll是运行时 ...

  4. C#中修改Dll文件 (反编译后重新编译)

    Dll文件生成后,如没有源代码,又要修改其中内容 可以用微软自带的ildasm和ilasm程序 先用ildasm将dll文件反编译成il文件 ildasm Test.dll /out=Test.il  ...

  5. Unity-反编译由IL生成的DLL文件

        本文由博主SunboyL原创,转载请注明出处:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html     在Unity实际开发过程中,我们 ...

  6. 如何利用.snk文件生成DLL文件中的Publickeytoken

    1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...

  7. winmd文件和dll文件的区别

    今天在研究一个二维码项目,用到一个第三方组件 ZXing,因为做的是Windows应用商店程序,应用商店程序是可以引用winmd文件也可以引用dll文件,但是这两种文件ZXing都提供了,最后和同事讨 ...

  8. VC2010 利用 def 文件生成 dll 文件的方法

    近期有个需求,要生成一个dll 文件.文件里的函数都是採用 stdcall 函数调用约定,可是不希望函数名被修饰(add 被修饰成 add@8). 这时就要用def 文件了. 比方我有以下两个函数: ...

  9. 使用Def文件导出Dll文件

    模块定义 (.def) 文件是包含一个或多个描述 DLL 各种属性的 Module 语句的文本文件.如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 ...

随机推荐

  1. ABP理论学习之Javascript API(理论完结篇)

    返回总目录 本篇目录 Ajax Notification Message UI block和busy 事件总线 Logging 其他工具功能 说在前面的话 不知不觉,我们送走了2015,同时迎来了20 ...

  2. iOS开发系列—Objective-C之基础概览

    概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...

  3. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  4. SQL Server 2012 Managed Service Account

    原创地址:http://www.cnblogs.com/jfzhu/p/4007472.html 转载请注明出处 (一)Windows服务使用的登陆帐号 Windows服务只有登录到某一帐户的情况下才 ...

  5. Ubuntu上安装Robomongo及添加到启动器

    到目前为止,Robomongo仍是MongoDB最好的客户端管理工具,如需在Ubuntu上安装Robomongo,可直接从官网下载.tar.gz压缩包进行解压,然后直接运行bin目录下的robomon ...

  6. eclipse启动时报告错误:Java was started but returned exit code=-805306369

    这两天也没改过eclipse和java的配置,但eclipse启动时报告错误:Java was started but returned exit code=-805306369 后来在eclipse ...

  7. JavaEE连接数据库练习

    登录端 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncod ...

  8. 谈谈StringBuffer和StringBuilder

    (1) 速度 在执行速度方面的比较:StringBuilder > StringBuffer > String ①String 是不可变的对象(String类源码中存放字符的数组被声明为f ...

  9. 原生JS下拉加载插件分享。

    无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...

  10. SQL Server 通过备份文件初始化复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 疑问(Questions) 参考文 ...