几种工具反编译被编译好的DLL文件

我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要的结果;本文将通过一个实例来演示如果完成一个简单的修改;我们将会用到以下几种工具;

1:反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了;

2:微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了;可以在C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin找到该软件;

3:微机的工具ilasm.exe:这个是把IL文件重新生成DLL的功能,可以在C:\Windows\Microsoft.NET\Framework\v4.0.30319找到该软件;

我们新建一个WEB项目,模拟它要插入加密狗才能运行,当然这边的加密狗是我们的一个比喻,实例很简单七个步骤就可以完在;

.net程序反编译工具(ILSpy) 2.1.0.1613 正式版评分:

5.3

类别: 安装制作    大小:1.7M    语言: 英文 
查看详细信息 >>

步骤一:使用ILSpy.exe打开Web.dll文件;查看其源代码的情况:

从上面反编译出来的源代码不难发现重点是在GetLicense()方法,这个也是我们要修改的内容,从上面可以看出在没有修改前这个都是会提示要插入加密狗的;

步骤二:接下来就是要使用ildasm.exe把DLL这个文件转化成IL文件;

把dll文件转储为*.il文件存到某个指定文件夹里,得到Web.il和Web.res两个文件,有时也会有*.resource文件

步骤三:我们可以打开Web.il文件,里面有DLL生成的IL内容,我们很容易就可以定位到想要的这个方法,只要让它固定返回true就可以达到修改成功,方法内的IL代码就是我们要修改的内容;

步骤四:修改GetLicense()方法内的IL代码,让它固定返回true;下面这个IL就是让它返回为true;修改完接着保存IL文件;

步骤五:当修改完IL文件后要把它转化成DLL文件,打开DOC命令输入进入到*.il的文件夹,然后输入命令:c:\windows\microsoft.net\framework\v4.0.30319\ilasm.exe /dll/resource=Web.res Web.il

*1:要进入IL文件的文件夹 2:其中"/dll/"这个前面要有一个空格 3:.res文件要在.il文件前面,中间要有个空格

步骤六:运行完上面的命令后会生成一个新DLL文件,然后把它复制到我们的站点下面:

步骤七:运行的结果:

完成上面的七个步骤就可以成功修改DLL文件,当然本实例只是一个简单的修改,若要进行比较复杂修改IL代码则要对IL知识有个相当的了解;下面是一个可能会经常要用到的IL返回true跟false的代码;

    .maxstack 1
    .locals init (
        [0] bool CS$1$0000)
    L_0000: nop
    L_0001: ldc.i4.1
    L_0002: stloc.0
    L_0003: br.s L_0005
    L_0005: ldloc.0
    L_0006: ret

return true;

    // 代码大小       7 (0x7)
    .maxstack  1
    .locals init ([0] bool CS$1$0000)
    IL_0000:  nop
    IL_0001:  ldc.i4.0
    IL_0002:  stloc.0
    IL_0003:  br.s       IL_0005

    IL_0005:  ldloc.0
    IL_0006:  ret

return false;
时间: 2024-07-30 15:20:50

几种工具反编译被编译好的DLL文件的相关文章

反ring3 hook demo ,直接从dll文件修复 dll的code段,实现反hook

// CounterHook.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Windows.h> void showInfo(LPWSTR strInfo) { OutputDebugStringW(strInfo); } typedef HANDLE (WINAPI* pfnCreateEvent)( LPSECURITY_ATTRIB

如何保护.net中的dll文件(防破解、反编译)

.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行.中间语言很容易被反编译,所以研究下如何有效的保护dll文件. 我大致的方法为 :强签名+混淆+加密. 强签名 强命名程序集,可以确保你的程序集唯一,而不被篡改.冒用等:即使相同名字的程序集如果签名也会不同. 强签名很简单,本站另一文章已经详细进行了讲解,请参考:http://www.cn-web.com/shtml/article/net/fxsj/2009/

VS2017生成DLL文件——两种方式

下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件 姿势一: 第一步:新建一个项目 第二步:选择Windows桌面向导(这里先不要去管上面的“动态链接库(DLL)”)  第三步:选择动态链接库,并空项目打勾√  第四步:添加一个.c源文件 第五步:(因为这里以C语言为例子,将后缀改为.c) 第六步:在c文件中输入一个简单的函数这里的_declspec(dllexport)并不是必须的,后面一种方法将不使用_de

使用class-dump工具反编译Objective-C

class-dump是一款非常好用的Objective-C反编译分析工具,它可以从Objective-C编译生成的二进制文件中将类定义以Objective-C头文件的方式提取出来. class-dump是一款开源工具,官网地址是:http://stevenygard.com/projects/class-dump/ 使用参数为: class-dump 3.5 (64 bit) Usage: class-dump [options] <mach-o-file> where options are

使用autotools系列工具自动部署源代码编译安装

在Linux系统下开发一个较大的项目,完全手动建立Makefile是一件费力而又容易出错的工作.autotools系列工具只需用户输入简单的目标文件.依赖文件.文件目录等就可以比较轻松地生成Makefile了. 这极大地简化了Makefile的编写和维护,作者也是刚体验到其威力,所以将其过程记录下来. 本文以一个简单的hello.c文件进行验证. 准备工作 首先需要安装autotools系列工具,包括aclocal.autoscan.automake.autoheader.autoconf等.

Androd插件化开发之Atlas资源打包工具补丁aapt的编译

我们先来看看Android Studio自动生成的R文件里的内容,你会发现,R文件里有很多内部类,而内部类里有很多int类型的值,他们都是以0x7f开头. 我们在编译一个Android应用程序的资源的时候,至少会涉及到两个包,其中一个是被引用的系统资源包,另外一个就是当前正在编译的应用程序资源包.每一个包都可以定义自己的资源,同时它也可以引用其它包的资源.那么,一个包是通过什么方式来引用其它包的资源的呢?这就是我们熟悉的资源ID了.资源ID是一个4字节的无符号整数,其中,最高字节表示Packag

反编译C#的dll文件并修改,再重新生成dll

1.把dll文件导入到ildasm工具中,ildasm是由微软提供的.net程序反编译工具,位于“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin” 2.在ildasm中File->dump,把dll文件转储为*.il文件存到某个指定文件夹里,得到*.il和*.res两个文件,有时也会有*.resource文件 3.打开得到的*.il文件,找到对应的方法,进行修改(如果修改的代码太多,那则需要先学习一下“C#反编译之IL语法”),具体情况具体分析

(Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目,选择类库,取名为JefferyChan,具体步骤如下图: 3.因为要调用Unity中的相关文件,所以这里要引入外部文件.首先在Unity的安装文件夹中找到UnityEngine.dll,我的路径是:D:\Program Files (x86)\Unity\Editor\Data\Managed 如

关于安卓Apk反编译 再编译回来不能正常安装的问题

使用apktool反编译apk之后,再编译回去,发现不能正常安装,而使用ApkToolKitV3.0反编译,再编译回去就可以正常安装. 主要原因是因为使用apktool编译回没有签名. 所以不能安装, 而ApkToolKitV3.0 编译回去是签名了的. 用apktool编译后, 再使用signapk.jar签名就可以了. java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-signed.apk 以下是我打包好的apk