首页 > 其他分享 >使用ilasm 和 ildasm编译和反编译工具对DLL文件修改

使用ilasm 和 ildasm编译和反编译工具对DLL文件修改

时间:2024-03-07 16:00:12浏览次数:18  
标签:反编译 exe 文件 dll ildasm il DLL

目录

  • 前言
  • 一、使用 ildasm 反编译 dll 文件
  • 二、使用 ilasm 将il文件编译成 dll 或 exe 文件

    前言
    文本讲述怎么通过 ildasm 工具将 dll 文件进行反编译为 il 文件,修改 il 文件后再如何通过 ilasm 工具将 il 文件反编译成 dll 或 exe 文件。

    ildasm工具:用于将dll文件反编译成可读的 il 文件(il是.NET框架中中间语言的缩写)

    ilasm工具:用于将il文件编译成可执行的dll或exe文件

    首先你安装了 Visual Studio 开发工具它会自带这两个工具,不安装的话可能会找不到,这两个工具和.NET框架开发语言的编译和反编译有关。

    一、使用 ildasm 反编译 dll 文件

    1.双击ildasm.exe运行ildasm工具。

    ildasm 工具位置:

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe

    2.把要反编译的 dll 文件打开或拖入运行的 ildasm 里

     

    点击节点可以看到所有的类和方法

     3.如果 il 文件拖到 ildasm 里提示 “受保护的模块 - - 无法进行反编译”

    简单来说就是你的 il 文件里有 SuppressIldasmAttribute 相关代码,ildasm 检测到了这个代码就不反编译了。

    解决办法:先把 ildasm.exe 备份一下,然后使用 WinHex 把 ildasm.exe里的 SuppressIldasmAttribute 去除。

    操作步骤:

    (1)下载WinHex WinHex (链接:https://pan.baidu.com/s/17LYCOuPJaxo_70q4fua4eQ 提取码:ej5b)

    (2) 把C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\下的 ildasm.exe 拖进 WinHex 里,搜索SuppressIldasmAttribute 字符串,然后把 SuppressIldasmAttribute 随便改成其他的字符串,比如aaa啥的,下图改成了TianFangIldasmAttribute 。

    (3)保存下,然后再把 il 文件拖到 ildasm 里就不会提示“受保护的模块 - - 无法进行反编译”了。

     4.把要反编译的 dll 文件转储为il文件 点击文件选择转储,点击确定,选择转换后位置和输入转换后的文件名(最好和dll文件名保持一致)。  

     

     保存后就得到了一个反编译后的 il 文件格式的文件,你可以用常见的文本编辑器(记事本)打开并进行编辑和修改。 

    二、使用 ilasm 将il文件编译成 dll 或 exe 文件

     通过上面的步骤得到了反编译的 il 文件,将修改好了 il 文件,可以通过使用 ilasm 工具将 il 文件编译成 dll或 exex 文件。  介绍下 ilasm 工具位置: 
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe

    1.通过cmd 命令行进入il 文件所在目录,然后在cmd中输入类似如下命令转换为dll文件:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe SDKDemo.il /output=SDKDemo.dll /dll

    备注:该命令调用 ilasm.exe 程序把当前目录的 SDKDemo.il 文件编译成SDKDemo.dll并输出到当前目录,也可以改成需要的文件名和输出文件名。最终将得到了编译好后的 dll 文件。

标签:反编译,exe,文件,dll,ildasm,il,DLL
From: https://www.cnblogs.com/kongxiaoshuang/p/18054248

相关文章

  • sqlite.dll介绍,sqlite.dll文件缺失的解决方法,3分钟快速修复sqlite.dll
    第一次见到这个dll,一般是找到这个dll,重新引用下。网上找到了关于这个dll的详细解释,其他dll应该也可以用这些方法修复,在此记录下。原文链接:https://zhuanlan.zhihu.com/p/668219472一.什么是SQLite.dllSQLite.dll是SQLite数据库引擎的一个关键组成部分。(SQLite是一个开源的嵌......
  • C#中屏蔽第三方DLL中的Console输出的方法
     1.引入privateconstInt32STD_OUTPUT_HANDLE=-11;[DllImport("Kernel32.dll")]externstaticBooleanSetStdHandle(Int32nStdHandle,SafeHandleZeroOrMinusOneIsInvalidhandle);[DllImport("Kernel32.dll")]externstaticSafePipeHandleGetSt......
  • C# GlobalUsings.cs using dll
    .NET6新特性试用 .NET6发布后支持C#10,C#10向C#语言添加了很多功能,今天我们分享一下全局和隐式usings的使用:using指令简化了使用命名空间的方式。C#10包括一个新的全局using指令和隐式usings,以减少需要在每个文件顶部指定的usings数量。  ImplicitUsings属......
  • java反编译工具CFR使用
    java-jarcfr-0.151.jar--helpjava-jarcfr-0.151.jarWindupClasspathTypeLoader.class结果输出到out文件夹java-jarcfr-0.151.jarWindupClasspathTypeLoader.class--outputpath./out反编译jar文件,结果输出到output_jar文件夹Desktopjava-jarcfr-0.151.jar......
  • 使用dnSpy反编译DLL修改代码后生成新的DLL
    1.准备完整的DLL文件夹,包含需要引用的DLL2.使用dnSpy打开文件夹内需要修改的DLL,找到要修改的方法,例如: Kingdee.BOS.ServiceHelper.DataCenterService.IsLicControl(Contextctx,StringformId),右键编辑方法. 3.进入修改代码界面,进行代码修改,并添加需要的引用,点击"......
  • vs工具dumpbin查看依赖的lib、dll
    转载:https://blog.csdn.net/weixin_34910922/article/details/109320939?spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-11-109320939-blog-104154281.pc_relevant_aa&depth_1-utm_source=distribute.pc_relev......
  • 关于import cvxopt :ImportError: DLL load failed: 找不到指定的模块。
    前提:前天再写python代码时遇到需要使用到cvxopt包求解QP问题,但是之前却没有安装过这个包,所以对其进行安装。报错:在pipinstallcvxopt后直接使用,出现报错。之后在网上查各种解决办法的方案,但在运行后均出现不同报错情况。我所需要解决的问题主要是numpy、scipy和cvxopt之间不兼容......
  • aardio调用c语言dll动态库传结构体详细教程
    安装mingw32下载安装配置官方地址下载安装:https://sourceforge.net/projects/mingw/安装方法:https://blog.csdn.net/HandsomeHong/article/details/120803368↑记得最后要添加一下环境变量mingw64编译32位失败,待继续研究。https://zhuanlan.zhihu.com/p/413181676#安装完成......
  • 微软 官方 .net 组件 下载 directx组件 下载 viual c++ 组件 下载 官方 修复DLL方
    下载.NETFramework|免费官方下载(microsoft.com).NETFramework是仅适用于Windows版本的.NET,用于生成客户端和服务器应用程序。升级应用在VisualStudio中单击几下即可将应用从.NETFramework升级到最新的.NET。  DownloadDirectXEnd-UserRuntimefromO......
  • C# 简单反射加载 DLL 实例
    //反射判断是否位某个类型publicboolIsSubclassOf(thisTypetype,TypebaseType){//如果type不是null并且baseType是一个类(非接口)if(type!=null&&baseType.IsClass){returntype.IsSubclassOf(baseType);}//或者如果baseType是......