使用.NET JustDecompile来反编译你的程序代码

    • 前言

        在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序,由于因为是别人写的所以我们并没有原始码可以直接阅读,碰到这种情况我们就需要去反编译这些程序及 DLL 档案。

        首先大概介绍一下 DLL 是什么,DLL 全名是 Dynamic Linking Library (动态链接库),当你使用 .NET 开发应用程序时,使用的是网站项目或类别库时,当项目建置完成后即会在项目底下的 Bin 数据夹中产生将你所撰写项目中所有的 Class 档案编译成 DLL 档案,而如果开发的是共享工具类别库,就能够将此 DLL 档案提供给多个应用程序与网站参考使用。

        但 DLL 档案是编译过后的档案,一般情况下是无法得知内部撰写的程序代码,所以在此就必须要使用反编译的工具来协助去窥探 DLL 内的原始码,在此要注意一点,DLL 档案是可以被反编译的,所以不要以为将程序写成 DLL 档案后别人就无法可以得知内容,但如果真的要隐藏 DLL 的内容,可以透过混淆 DLL 的方式来将 DLL 档案内的程序代码搞得乱七八糟,增加被反编译后阅读的困难度。

      建立一个类别库

        在反编译 DLL 之前我们先建立一个类别库来供之后反编译使用,开启 VS 建立一个类别库项目,如下

      接着建立一个 SalaryHelper 的 Class 档案用来计算薪资金额,如下

      而 SalaryHelper Class 的内容就简单的撰写一个方法并回传薪资金额,如下

      view sourceprint?

      01.namespace Tools

      02.{

      03.public class SalaryHelper

      04.{

      05.public decimal GetMySalary()

      06.{

      07.return 22000;

      08.}

      09.}

      10.}

      最后在建立一个 ConsoleApplication 将 Tools 类别库加入参考,并且呼叫 GetMySalary() 方法取得薪资,如下

      view sourceprint?

      01.namespace ConsoleApp

      02.{

      03.class Program

      04.{

      05.static void Main(string[] args)

      06.{

      07.Tools.SalaryHelper helper = new Tools.SalaryHelper();

      08.Console.WriteLine(

      09.string.Format("My Salary is {0}", helper.GetMySalary().ToString()));

      10.Console.Read();

      11.}

      12.}

      13.}

      执行结果如下

      使用 IL 反组译工具

        在安装 Visual Studio 时通常会一并安装 Windows SDK Tools,在 Windows SDK Tools 中有一个 IL 反组译工具可以将 DLL 档案反编译成中间语言,如下

        透过 IL反组译工具 将 DLL 反编译成中间语言后就能够与原始码进行对应,不过此中间语言实在非常不亲切,所以我们将改使用其它的工具来进行反编译动作。

        用来反编译的工具中比较常听到的就是 Redgate .NET Reflector 与 Telerik .NET Decompiler
      此两款工具,.NET Reflector 此工具是需要收费的工具,但是功能还蛮强大的,如果有经常频繁深入的使用时建议可以购买此款工具,而
      .NET Decompiler 则是免费的反编译工具,功能虽没 .NET Reflector
      强大,但是是免费的先够用就好啦,以下就用此工具来进行示范。

      使用 Telerik .NET Decompiler 工具反编译程序代码

        首先进入下载网址点选 Free Download 下载安装档案

      下载完成后就可以进行安装,下一步下一步....的点到完成

      安装完成后到 「开始」→「所有程序」→「Telerik」找到 Telerik JustDecompile 程序执行,如下

      开启 JustDecompile 程序后,点选上方工具列的 「Open...」→「File(s)...」寻找到我们建立的 Tools DLL 档案开启

      开启后展开的树状目录如下,并且在 Tools 命名空间中找到我们撰写的 SalaryHelper Class

      选择到 SalaryHelper 后,右边的分隔窗口就会显示该类别反编译后的程序代码,如下

      反编译的程序代码

      原始的程序代码

      透过 .NET Decompiler 工具将 DLL 档案反编译后,是不是发现两着的相似度很高且非常亲切呢 :P,另外此工具也能够将反编译的程序代码转换为其它语言的代码,在上方的工具列上可以看到一个 C# 的下拉选单,点击后可选择 C#、VB、IL 语言

      若你是撰写 VB 语言的,可以将 C# 改成 Visual Basic ,修改后反编译的代码就会变成 Visual Basic 语言的程序代码,是不是很方便呢。

      使用此工具还有还有还有一个很重要的功用是可以去看 .NET Framework 实作的类别库!如果是在 Open 的时候选择的是 Load  Framework 就可以选择已安装的 .NET Framework 开启来阅读,如下

      如此就能够看到 .NET Framework 类别库中底层去实作功能的做法,以上就是一个简单使用的方法,供各位有需要的人作为参考啦。

时间: 2024-12-14 12:54:04

使用.NET JustDecompile来反编译你的程序代码的相关文章

反编译工具 使用.NET JustDecompile来反编译你的程序代码

原文地址:http://www.it165.net/pro/html/201310/7383.html 前言 在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序,由于因为是别人写的所以我们并没有原始码可以直接阅读,碰到这种情况我们就需要去反编译这些程序及 DLL 档案. 首先大概介绍一下 DLL 是什么,DLL 全名是 Dynamic Linking Library (动态链接库),当你使用 .NET 开发应用程序时,使用的是网站项目或类别库时,当项目建置

反编译微信小程序

最近看了个微信小程序古诗词全集,想知道他的前后端是怎么实现的,所以就想到了反编译.小程序安装后会有个wxapkg格式的文件存在/data/data/com.tencent.mm/MicroMsg/*****/appbrand/pkg/目录下,拿到这个文件后在电脑上使用大神写的反编译脚本就可以得到完整的程序目录了,可以直接在微信开发者工具里打开. 获取安装包 1.安装mumu模拟器.微信.小程序.RE文件管理器 测试过夜神.51等模拟器,最后发现网易的mumu模拟器最好用. 找到wxapkg文件后

完美反编译任何小程序完整代码,扒小程序

废话不多说,直接上主题. 1.第一步下载一个模拟器(推荐使用自带root的模拟器),我使用的是夜神模拟器 下载地址:https://www.yeshen.com/ 2.下载好之后,下载一个RE管理器 3.下载一个zip的压缩软件用来压缩文件 4.在模拟器上装上微信,使用微信访问你需要扒下来的小程序 5.然后打开第二步安装的RE管理器,进入    /data/data/com.tencent.mm/MicroMsg/{数字串}/appbrand/pkg/这个目录,可以看见wxapkg为后缀的文件,

反编译获取小程序源码,怎么找回微信小程序源码?

看了很多反编译.找回微信小程序源码很多教程,各种问题导致都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 下面内容(8月6日版本)仅作学习使用. 微信小程序反编译截图1 微信小程序反编译截图2 ------ 常见的微信小程序反编译失败问题 ----- 1 获取不到Wxss     2 遇见分包,无法反编译.   3 apkg反编译报错. ( 目前都已解决) 一 准备工具 1 node.js  运行环

Linux内核分析.:反编译简单c程序

作者:xujianguo 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” c程序部分代码如下: int g(int x) {   return x + 5; } int f(int x) {   return g(x); } int main(void) {   return f(9) + 1; } 实验分析如下: 实验楼没法用,晚点分析,抱歉@! 课程总结: 计算机是由软件和硬件组

java防止反编译之proguard混淆代码

proguard5.3下载地址:http://down.51cto.com/data/2316123 从eclipse中导出工程的jar包(这个就不详细说了) 安装proguard后打开bin目录下的proguardgui.bat启动proguard如下图所示: 点击Input/Output,设置输入输出的jar包,input就是原jar,output就是混淆后的jar. 5.点击Input/Output中的add,添加该工程用到的jar,包括jre,以及web-info下的lib中的所有jar

(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防反编译技术

APK防反编译技术 下载地址:地址 我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就全部在那里了,通过apktool等工具可以轻松地将它们反编译成smali代码.有了这些反编译出来的smali代码之后,我们就可以轻松地了解别人的APK使用的一些技术或者直接修改别人的APK.由于这些APK反编译工具的存在,我们迫切地希望能有方法去防止别人来反编译我们的APK,从而保护自己的商业机密和利益. 下载地址:地址 版权声明:本文为博主原创文章,未经

unity 反编译 step2 dll --&gt;reflector

NET Reflector反编译使用经验 不少人.net开发人员看见别人写的程序很棒都想知道别人是怎么写的,想借鉴,今天手把手教大家如何实现反编译出源码,下面通过Reflector小软件演示. 工具/原料 windows系统 Reflector软件 方法/步骤 1 下载安装Reflector,安装好后,如下图所示.这个也有免安装版的. 2 运行软件,会出现如下界面,如下图: 3 选择file中的open Assembly,这个表示打开选择你需要反编译的程序,如下图红色框标示: 4 选择你需要反编