`

通过修改IL来完成dll里面代码的更新

阅读更多

一、最近因为要在一个地方上一个老项目,但是因为需要有差别而且项目代码年代久远,已经无法通过修改代码来完成新版本的部署。后来查阅资料,发现可以通过修改中间语言来完成dll代码的更新。

 

二、相关资源准备:

     1、反编译工具:

      ildasm.exe

      磁盘路径:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\ildasm.exe
      用途:将dll文件反编译为IL文件
 2、IL编译工具:
     ilasm.exe(framework2.0)
     磁盘路径:C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
     用途:将IL文件编译为dll文件
  3、老版本的dll
  4、本地代码

三、开始动手
1)使用ildasm.exe打开老版本的dll,并生成il文件。如下图:

 点击“确定”保存为IL文件,然后使用记事本(notepad,ue等)打开IL文件,找到你想修改代码的那一部分

如下所示为我想要修改的SelectCallIn类中的Page_Load方法中的一部分代码。

 

//类SelectCallIn的IL代码

.class public auto ansi beforefieldinit iFlyTek.FSP10.Flow.SelectCallIn
       extends iFlyTek.FSP10.Flow.FSPBase
{
    .method family hidebysig instance void 
          Page_Load(object sender,
                    class [mscorlib]System.EventArgs e) cil managed
  {

       //这里是Page_Load方法的详细代码,省略

  } // end of method SelectCallIn::Page_Load
}
 

 

使用Reflector.exe打开老版本的dll,将SelectCallIn类中的所有代码复制到本地代码中对应的类文件中,然后你想修改啥就修改啥,这个类中需要依赖的部分都可以虚构出来,只要改完了能够编译通过就行。

 

编译通过后,再次使用ildasm.exe打开新的dll文件,并生成IL文件

 

打开新生成的IL文件,复制SelectCallIn中Page_Load整个方法体的内容,将老版本IL文件中相应的部分替换掉,保存

 

然后使用 ilasm.exe 工具生成dll文件:



 

看到打屏 Successfully后,flow_online.dll就生成成功了。

 

再使用Reflector.exe打开flow_onlie.dll 就看到了我刚修改的那一部分,表明修改成功了!

 

  • 大小: 107.1 KB
  • 大小: 33.1 KB
  • 大小: 16.5 KB
分享到:
评论

相关推荐

    反编译dll源代码,查看dll封装的代码

    本文将详细介绍如何通过ILSpy这一软件/插件来反编译DLL源代码,揭示隐藏在二进制文件背后的代码逻辑。 ILSpy是一款开源的.NET反编译器,它能将已编译的.NET程序集(如DLL或EXE文件)转换回源代码的形式,便于我们...

    编辑IL文件 修改DLL文件的方法

    编辑IL文件和修改DLL文件是一种高级的程序调试和逆向工程技术,通常用于解决授权问题、修复错误或对第三方库进行定制。本文将详细介绍这一过程,以KS.Gantt.DLL为例,讲解如何操作。 首先,我们需要使用反编译工具...

    Managed_炉石传说DLL源代码_

    DNspy是一款强大的.NET反编译器和调试器,它可以让我们无需原始源代码就能查看和修改IL(中间语言)代码。利用DNspy,开发者能够深入理解炉石传说的内部工作流程,包括卡牌行为逻辑、AI决策、网络同步等。以下是如何...

    通过反射来分析dll中的代码Reflector

    标题中的“通过反射来分析dll中的代码Reflector”是指利用.NET框架中的反射机制,通过工具如Reflector来查看和理解.dll文件(动态链接库)中的代码逻辑。Reflector是一款强大的反编译工具,它允许开发者查看.NET程序...

    C# DLL 编辑工具

    3. **源码修改与重新生成**:在完成对源代码的修改后,工具允许用户重新生成DLL文件。这一过程确保了修改后的代码被正确地编译并替换原有的DLL,使得应用能够使用新的功能或改进。 4. **依赖库**:压缩包中的其他...

    net生成的dll文件查看修改

    然而,在某些情况下,你可能需要修改IL来调整程序的行为或进行调试。修改IL的过程大致如下: 1. **转换为IL代码**:使用ildasm.exe将原始的DLL转换为IL代码。 2. **编辑IL代码**:使用文本编辑器或专门的IL编辑器对...

    C# DLL源码查看器

    然后,通过.NET Framework的JIT(Just-In-Time)编译器,IL被转化为机器代码,最终执行在特定的硬件上。DLL文件就是包含这种机器代码的库,通常用于存储可重用的函数和类。 源码查看器,如描述中提到的版本 "ILSpy_...

    reflexil 1.6 C# il 修改工具

    DLL代码注入是一种技术,通过将额外的代码注入到已存在的动态链接库中,以改变程序的行为。这种方法常用于实现自定义功能、调试、性能分析或恶意软件注入。Reflexil 1.6 结合Reflector,使得这种操作变得相对简单,...

    DLL反编译软件,把DLL反编译为.cs类代码

    这有助于开发者理解DLL的功能,甚至可以修改和扩展DLL的功能,而无需原始的源代码。 反编译工具如ILSpy、DotPeek或Reflector等可以完成这一任务。这些工具能够解析DLL中的.NET IL(中间语言)代码,并将其转换为...

    .NET CLR Injection 运行时修改IL .NET HOOK

    这些DLL文件可能包含了用于修改IL代码的代码,并且能够在运行时加载到目标.NET进程中,实现CLR注入。 总的来说,.NET CLR Injection和IL .NET HOOK技术是强大的工具,允许开发者在运行时动态地干预.NET程序的行为。...

    IL,VB.net,C#,Delphi反编译器 dll

    反编译VB.NET代码通常是为了理解或修改已有的VB.NET程序,或者从二进制DLL或EXE文件中恢复源代码。 C#是微软公司推出的一种强类型、面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发和Web服务。C#的反编译...

    C# Dll 反编译软件

    2. **打开DLL文件**:安装完成后,启动IL Spy,然后通过菜单栏选择“文件” > “打开”,找到并加载你需要反编译的C# DLL文件。 3. **浏览元数据**:在左侧的树形视图中,你可以看到DLL文件中的类、接口、枚举等...

    反汇编程序,可以查看dll文件中的源代码

    反汇编程序能够解析IL代码,并尝试将其转换为与原始源代码类似的表示,从而帮助开发者理解和修改.NET程序。 反汇编的过程通常包括以下几个步骤: 1. **读取二进制代码**:程序读取DLL或其他二进制文件的内容。 2. *...

    IL Spy.zip

    IL Spy工具能够解析这些IL代码,并将其转换为更易读的高级语言形式,这样开发者就可以像阅读原始源代码一样来理解DLL的功能。 IL Spy的核心功能包括: 1. **反编译**: 这是IL Spy最基础也最重要的特性,它可以将IL...

    很好用的 C#的DLL反编译C#的DLL反编译C#的DLL反编译

    总结来说,C# DLL的反编译是一个涉及IL代码解析和源代码重构的过程,通过专门的工具如ILSpy和dotPeek可以实现这一目标。了解并掌握这个技术可以帮助开发者在面对未知DLL时更有效地进行学习和调试,但同时也需注意...

    IL 格式不正确Bad IL Format

    然后,将IL代码手动修复或通过重新编写源代码来解决。 5. **使用调试工具**:利用Visual Studio的调试功能,或者独立的.NET分析工具(如dotPeek或WinDbg),进行更深入的错误排查。 6. **检查依赖**:确保所有依赖...

    c# 反编译软件,可以查看dll 源文件

    当你拥有一个DLL(动态链接库)文件,但没有对应的源代码时,可能会遇到无法理解或修改其内部实现的问题。这时,C#反编译软件就派上了用场。本文将详细介绍C#反编译软件的功能、原理以及如何使用它来查看DLL的源文件...

    代码反编译工具,对dll文件反编译

    在IT行业中,代码反编译是一项关键的技术,它允许开发者查看和理解已编译的二进制代码(如DLL文件)内部的原始源代码。标题和描述提到的是使用代码反编译工具对DLL文件进行反编译的过程,这通常是为了学习、调试或...

    解析dll文件

    DLL(Dynamic Link Library)文件是Windows操作系统中一种重要的共享库文件格式,用于封装多个函数、类和资源,...通过熟练掌握IL Spy的使用,我们可以深入理解DLL文件的内部结构,更好地进行程序的维护、优化和扩展。

Global site tag (gtag.js) - Google Analytics