2015-06-20 14:07:19 cp790621656 阅读数 21013
  • C# For Unity系列之中级篇

    课程总体目标:     本中级篇面向的学员不再是完全的编程“小白”,而是具备一定C#编程经验,需要进一步查漏补缺、或者需要进一步全面完善自己C#编程知识体系的广大Unity学员。相信通过本中级篇的学习,可以使得Unity初中级开发人员对于编程语言的掌握更进一步;对于开发中大型游戏项目,在编程语言这一层级进一步打下坚实的语言基础。 “中级篇”课程讲解特点:       本中级篇面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法难点,使得学员最短时间掌握语法本质。 本课程讲解内容:       "C#(for Unity)中级篇" 在“C#入门”、“基础篇”的基础之上,从以下四个方面着重研究我们游戏开发(包含软件开发)过程中,C#最重要、最实用的技能模块,使得广大游戏研发人员,对于C#这门Unity脚本有进一步更加完善的认识。 一:.Net 框架讲解。     A) .Net 发展历史。     B)  IL  中间语言。 CLR  公共语言运行时。     C) 多维数据(常用二维数组)与交错数组。     D) 可变参数 Params     E) 进一步解释“实参”,“形参”。     F) 类的实例化内存分配机制。 二:深入学习对象类型     A)  里氏替换原则(LSP)     B)  类的属性极其本质特性     C)  IS ,AS 关键字     D)  深入学习字符串理论         1] 字符串的“驻留性” 原理。         2] 字符串==与Equals() 的本质区别         3] 更多字符串常用方法学习。     E)  枚举类型以及适用场合。 三:深入学习集合特性     A)  什么是索引器,以及索引器的适用范围。     B)  学习自定义集合类,以及深入了解Foreach 语句的原理。     C)  深入学习 ArrayList,了解内部存储机制以及原理。     D)  深入学习 HashTable,了解内部存储机制以及原理。     E)  为什么学习泛型集合?     F)  泛型集合与普通集合的性能测试对比实验。     G)  学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件         A)  什么是委托,先从讲故事学习起:“老板来啦”!     B)  反编译掌握委托的本质。     C)  委托的四大开发步骤。     D)  什么是事件,以及委托与事件的区别。     E)  事件的常用使用方式。 温馨提示:       本C# for Unity 使用Virtual Studio2012,进行开发与讲解。(学员使用更高版本,对学习没有任何影响) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    1864 人正在学习 去看看 刘国柱

因为这几天碰到一个Unity的Bug,不得不去反编译DLL看看C#代码的生成中间件代码。这也用到了一些反编译以及重新编译DLL的一些知识,意味到Unity是如此的不安全。


首先我们新建一个工程,创建一个脚本,写一句很简单的代码:

using UnityEngine;
using System.Collections;

public class crack1 : MonoBehaviour {

	// Use this for initialization
	void Start () {
		Debug.Log("123");
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

代码逻辑就是输出一个字符串 "123" ,这次的目的就是修改掉 这个字符串,改成其它的。

好了。先运行一下,让Unity把代码编译成DLL。



很好,输出了代码中的字符串 123 。

然后停掉游戏。我们来修改Unity 生成的DLL。


Unity生成的DLL存储在

\Library\ScriptAssemblies\Assembly-CSharp.dll

打包之后存储在Data/Manager 文件夹。


下面开始反编译&&破解&&重新编译


反编译DLL

在开始菜单找到Visual Studio,然后在子目录找到 开发人员命令提示 ,如下图:


然后切换目录到 Unity 生成的 DLL 文件夹

输入命令:

cd C:\Users\Administrator\Documents\Crack\Library\ScriptAssemblies

如下图:



然后输入以下命令来反编译 DLL 为 il 文件:

ildasm Assembly-CSharp.dll /output:Assembly-CSharp.il

如下图:


然后在我们的文件夹中可以看到生成的 il  文件和 res 文件


OK,下面开始我们的破解步骤


破解

用文本编辑器打开生成的 il 文件 Assembly-CSharp.il

内容如下:

//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.33440




// Metadata version: v2.0.50727
.assembly extern UnityEngine
{
  .ver 0:0:0:0
}
.assembly extern mscorlib
{
  .publickeytoken = (7C EC 85 D7 BE A7 79 8E )                         // |.....y.
  .ver 2:0:5:0
}
.assembly 'Assembly-CSharp'
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module 'Assembly-CSharp.dll'
// MVID: {7D0848C2-160C-47E9-84F0-C61E5C59B615}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x00220000


// =============== CLASS MEMBERS DECLARATION ===================

.class public auto ansi beforefieldinit crack1
       extends [UnityEngine]UnityEngine.MonoBehaviour
{
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    // 代码大小       7 (0x7)
    .maxstack  8
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [UnityEngine]UnityEngine.MonoBehaviour::.ctor()
    IL_0006:  ret
  } // end of method crack1::.ctor

  .method private hidebysig instance void 
          Start() cil managed
  {
    // 代码大小       11 (0xb)
    .maxstack  8
    IL_0000:  ldstr      "123"
    IL_0005:  call       void [UnityEngine]UnityEngine.Debug::Log(object)
    IL_000a:  ret
  } // end of method crack1::Start

  .method private hidebysig instance void 
          Update() cil managed
  {
    // 代码大小       1 (0x1)
    .maxstack  8
    IL_0000:  ret
  } // end of method crack1::Update

} // end of class crack1


// =============================================================

// *********** 反汇编完成 ***********************
// 警告: 创建了 Win32 资源文件 Assembly-CSharp.res

如果代码很多而生成的这个 il 文件太大,可以直接搜索 类名 然后再到类里面查找 函数名

我们看到 Start() 函数


il 代码还是具有一定可读性,就算不写上注释大家也能把意思猜的一半,这段代码的 大意就是引用一个字符串,然后调用方法去输出。


那么我们的目的就是修改 代码中指定的字符串 123 ,修改为其它的,这里就修改为 "you have been cracked!"。

直接修改 。如下图


重新编译为DLL

保存下上面的修改,然后继续在 控制台中执行以下命令

ilasm /dll /res:Assembly-CSharp.res Assembly-CSharp.il /out:Assembly-CSharp.dll

编译DLL成功,会覆盖掉原来的 DLL。可以通过DLL的修改时间来判断。


再次运行 游戏,查看输出的Log,发现已经被修改了。


更多关于IL 指令的介绍:

http://blog.csdn.net/huutu/article/details/46573435

http://blog.csdn.net/huutu/article/details/46573417


2019-04-25 18:32:53 qq_44952746 阅读数 126
  • C# For Unity系列之中级篇

    课程总体目标:     本中级篇面向的学员不再是完全的编程“小白”,而是具备一定C#编程经验,需要进一步查漏补缺、或者需要进一步全面完善自己C#编程知识体系的广大Unity学员。相信通过本中级篇的学习,可以使得Unity初中级开发人员对于编程语言的掌握更进一步;对于开发中大型游戏项目,在编程语言这一层级进一步打下坚实的语言基础。 “中级篇”课程讲解特点:       本中级篇面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法难点,使得学员最短时间掌握语法本质。 本课程讲解内容:       "C#(for Unity)中级篇" 在“C#入门”、“基础篇”的基础之上,从以下四个方面着重研究我们游戏开发(包含软件开发)过程中,C#最重要、最实用的技能模块,使得广大游戏研发人员,对于C#这门Unity脚本有进一步更加完善的认识。 一:.Net 框架讲解。     A) .Net 发展历史。     B)  IL  中间语言。 CLR  公共语言运行时。     C) 多维数据(常用二维数组)与交错数组。     D) 可变参数 Params     E) 进一步解释“实参”,“形参”。     F) 类的实例化内存分配机制。 二:深入学习对象类型     A)  里氏替换原则(LSP)     B)  类的属性极其本质特性     C)  IS ,AS 关键字     D)  深入学习字符串理论         1] 字符串的“驻留性” 原理。         2] 字符串==与Equals() 的本质区别         3] 更多字符串常用方法学习。     E)  枚举类型以及适用场合。 三:深入学习集合特性     A)  什么是索引器,以及索引器的适用范围。     B)  学习自定义集合类,以及深入了解Foreach 语句的原理。     C)  深入学习 ArrayList,了解内部存储机制以及原理。     D)  深入学习 HashTable,了解内部存储机制以及原理。     E)  为什么学习泛型集合?     F)  泛型集合与普通集合的性能测试对比实验。     G)  学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件         A)  什么是委托,先从讲故事学习起:“老板来啦”!     B)  反编译掌握委托的本质。     C)  委托的四大开发步骤。     D)  什么是事件,以及委托与事件的区别。     E)  事件的常用使用方式。 温馨提示:       本C# for Unity 使用Virtual Studio2012,进行开发与讲解。(学员使用更高版本,对学习没有任何影响) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    1864 人正在学习 去看看 刘国柱
               

因为这几天碰到一个Unity的Bug,不得不去反编译DLL看看C#代码的生成中间件代码。这也用到了一些反编译以及重新编译DLL的一些知识,意味到Unity是如此的不安全。


首先我们新建一个工程,创建一个脚本,写一句很简单的代码:

using UnityEngine;using System.Collections;public class crack1 : MonoBehaviour// Use this for initialization void Start () {  Debug.Log("123"); }  // Update is called once per frame void Update () {  }}

代码逻辑就是输出一个字符串 "123" ,这次的目的就是修改掉 这个字符串,改成其它的。

好了。先运行一下,让Unity把代码编译成DLL。



很好,输出了代码中的字符串 123 。

然后停掉游戏。我们来修改Unity 生成的DLL。


Unity生成的DLL存储在

\Library\ScriptAssemblies\Assembly-CSharp.dll

打包之后存储在Data/Manager 文件夹。


下面开始反编译&&破解&&重新编译


反编译DLL

在开始菜单找到Visual Studio,然后在子目录找到 开发人员命令提示 ,如下图:


然后切换目录到 Unity 生成的 DLL 文件夹

输入命令:

cd C:\Users\Administrator\Documents\Crack\Library\ScriptAssemblies

如下图:



然后输入以下命令来反编译 DLL 为 il 文件:

ildasm Assembly-CSharp.dll /output:Assembly-CSharp.il

如下图:


然后在我们的文件夹中可以看到生成的 il  文件和 res 文件


OK,下面开始我们的破解步骤


破解

用文本编辑器打开生成的 il 文件 Assembly-CSharp.il

内容如下:

//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.33440// Metadata version: v2.0.50727.assembly extern UnityEngine{  .ver 0:0:0:0}.assembly extern mscorlib{  .publickeytoken = (7C EC 85 D7 BE A7 79 8E )                         // |.....y.  .ver 2:0:5:0}.assembly 'Assembly-CSharp'{  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.  .hash algorithm 0x00008004  .ver 0:0:0:0}.module 'Assembly-CSharp.dll'// MVID: {7D0848C2-160C-47E9-84F0-C61E5C59B615}.imagebase 0x00400000.file alignment 0x00000200.stackreserve 0x00100000.subsystem 0x0003       // WINDOWS_CUI.corflags 0x00000001    //  ILONLY// Image base: 0x00220000// =============== CLASS MEMBERS DECLARATION ===================.class public auto ansi beforefieldinit crack1       extends [UnityEngine]UnityEngine.MonoBehaviour{  .method public hidebysig specialname rtspecialname           instance void  .ctor() cil managed  {    // 代码大小       7 (0x7)    .maxstack  8    IL_0000:  ldarg.0    IL_0001:  call       instance void [UnityEngine]UnityEngine.MonoBehaviour::.ctor()    IL_0006:  ret  } // end of method crack1::.ctor  .method private hidebysig instance void           Start() cil managed  {    // 代码大小       11 (0xb)    .maxstack  8    IL_0000:  ldstr      "123"    IL_0005:  call       void [UnityEngine]UnityEngine.Debug::Log(object)    IL_000a:  ret  } // end of method crack1::Start  .method private hidebysig instance void           Update() cil managed  {    // 代码大小       1 (0x1)    .maxstack  8    IL_0000:  ret  } // end of method crack1::Update} // end of class crack1// =============================================================// *********** 反汇编完成 ***********************// 警告: 创建了 Win32 资源文件 Assembly-CSharp.res

如果代码很多而生成的这个 il 文件太大,可以直接搜索 类名 然后再到类里面查找 函数名

我们看到 Start() 函数


il 代码还是具有一定可读性,就算不写上注释大家也能把意思猜的一半,这段代码的 大意就是引用一个字符串,然后调用方法去输出。


那么我们的目的就是修改 代码中指定的字符串 123 ,修改为其它的,这里就修改为 "you have been cracked!"。

直接修改 。如下图


重新编译为DLL

保存下上面的修改,然后继续在 控制台中执行以下命令

ilasm /dll /res:Assembly-CSharp.res Assembly-CSharp.il /out:Assembly-CSharp.dll

编译DLL成功,会覆盖掉原来的 DLL。可以通过DLL的修改时间来判断。


再次运行 游戏,查看输出的Log,发现已经被修改了。


更多关于IL 指令的介绍:

http://blog.csdn.net/huutu/article/details/46573435

http://blog.csdn.net/huutu/article/details/46573417


           
2017-09-23 21:10:22 wuyf88 阅读数 336
  • C# For Unity系列之中级篇

    课程总体目标:     本中级篇面向的学员不再是完全的编程“小白”,而是具备一定C#编程经验,需要进一步查漏补缺、或者需要进一步全面完善自己C#编程知识体系的广大Unity学员。相信通过本中级篇的学习,可以使得Unity初中级开发人员对于编程语言的掌握更进一步;对于开发中大型游戏项目,在编程语言这一层级进一步打下坚实的语言基础。 “中级篇”课程讲解特点:       本中级篇面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法难点,使得学员最短时间掌握语法本质。 本课程讲解内容:       "C#(for Unity)中级篇" 在“C#入门”、“基础篇”的基础之上,从以下四个方面着重研究我们游戏开发(包含软件开发)过程中,C#最重要、最实用的技能模块,使得广大游戏研发人员,对于C#这门Unity脚本有进一步更加完善的认识。 一:.Net 框架讲解。     A) .Net 发展历史。     B)  IL  中间语言。 CLR  公共语言运行时。     C) 多维数据(常用二维数组)与交错数组。     D) 可变参数 Params     E) 进一步解释“实参”,“形参”。     F) 类的实例化内存分配机制。 二:深入学习对象类型     A)  里氏替换原则(LSP)     B)  类的属性极其本质特性     C)  IS ,AS 关键字     D)  深入学习字符串理论         1] 字符串的“驻留性” 原理。         2] 字符串==与Equals() 的本质区别         3] 更多字符串常用方法学习。     E)  枚举类型以及适用场合。 三:深入学习集合特性     A)  什么是索引器,以及索引器的适用范围。     B)  学习自定义集合类,以及深入了解Foreach 语句的原理。     C)  深入学习 ArrayList,了解内部存储机制以及原理。     D)  深入学习 HashTable,了解内部存储机制以及原理。     E)  为什么学习泛型集合?     F)  泛型集合与普通集合的性能测试对比实验。     G)  学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件         A)  什么是委托,先从讲故事学习起:“老板来啦”!     B)  反编译掌握委托的本质。     C)  委托的四大开发步骤。     D)  什么是事件,以及委托与事件的区别。     E)  事件的常用使用方式。 温馨提示:       本C# for Unity 使用Virtual Studio2012,进行开发与讲解。(学员使用更高版本,对学习没有任何影响) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    1864 人正在学习 去看看 刘国柱

一、步骤实现
1、下载反编译工具,目前,我使用的是ILSpy,打开工具,得到如下界面

2、点击File后得到如下界面
这里写图片描述
3、单击 “打开” 按钮,选择Unity3d 安装目录下的dll文件,导入ILSpy中,即可查看所有dll文件内容,截图如下
这里写图片描述

二、效果展示
效果一
这里写图片描述
效果二
这里写图片描述
效果三
这里写图片描述

到这,就可以完全实现unity3d中dll文件的反编译。

2018-11-02 14:24:49 mmqqyyqqyyq 阅读数 1175
  • C# For Unity系列之中级篇

    课程总体目标:     本中级篇面向的学员不再是完全的编程“小白”,而是具备一定C#编程经验,需要进一步查漏补缺、或者需要进一步全面完善自己C#编程知识体系的广大Unity学员。相信通过本中级篇的学习,可以使得Unity初中级开发人员对于编程语言的掌握更进一步;对于开发中大型游戏项目,在编程语言这一层级进一步打下坚实的语言基础。 “中级篇”课程讲解特点:       本中级篇面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法难点,使得学员最短时间掌握语法本质。 本课程讲解内容:       "C#(for Unity)中级篇" 在“C#入门”、“基础篇”的基础之上,从以下四个方面着重研究我们游戏开发(包含软件开发)过程中,C#最重要、最实用的技能模块,使得广大游戏研发人员,对于C#这门Unity脚本有进一步更加完善的认识。 一:.Net 框架讲解。     A) .Net 发展历史。     B)  IL  中间语言。 CLR  公共语言运行时。     C) 多维数据(常用二维数组)与交错数组。     D) 可变参数 Params     E) 进一步解释“实参”,“形参”。     F) 类的实例化内存分配机制。 二:深入学习对象类型     A)  里氏替换原则(LSP)     B)  类的属性极其本质特性     C)  IS ,AS 关键字     D)  深入学习字符串理论         1] 字符串的“驻留性” 原理。         2] 字符串==与Equals() 的本质区别         3] 更多字符串常用方法学习。     E)  枚举类型以及适用场合。 三:深入学习集合特性     A)  什么是索引器,以及索引器的适用范围。     B)  学习自定义集合类,以及深入了解Foreach 语句的原理。     C)  深入学习 ArrayList,了解内部存储机制以及原理。     D)  深入学习 HashTable,了解内部存储机制以及原理。     E)  为什么学习泛型集合?     F)  泛型集合与普通集合的性能测试对比实验。     G)  学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件         A)  什么是委托,先从讲故事学习起:“老板来啦”!     B)  反编译掌握委托的本质。     C)  委托的四大开发步骤。     D)  什么是事件,以及委托与事件的区别。     E)  事件的常用使用方式。 温馨提示:       本C# for Unity 使用Virtual Studio2012,进行开发与讲解。(学员使用更高版本,对学习没有任何影响) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    1864 人正在学习 去看看 刘国柱

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

使用MonoDevelop查看代码

   1.解压缩一个Ipa文件,找到如下目录

2.拖拽一个Assembly-CSharp.dll文件到MonoDevelop工具栏,即可查看C#代码

其他C#反编译工具:

.NET Reflector:http://www.red-gate.com/products/dotnet-development/reflector/

.NET Reflector Visual Studio Extension:https://visualstudiogallery.msdn.microsoft.com/95789cdb-08f9-4dae-9b2f-fc45a452ad77

ILSpy:http://ilspy.net/ 下图是使用ILSpy反编译Assembly-CSharp.dll文件

Unity资源提取工具:https://github.com/ata4/disunity

下载工具后修改disunity.bat中asset包的路径(解压缩一个Ipa包可得),如图红框部分路径

执行bat文件,可提取出一些资源文件,下图使用PVRTexTool查看ktx文件

最后推荐一个App加密服务《爱加密》http://www.ijiami.cn/,有加密需求的可以去尝试下,服务、技术还不错!

其他unity代码加密手段,看知乎讨论:http://www.zhihu.com/question/25414422

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
2016-06-24 09:37:32 qq_15267341 阅读数 16191
  • C# For Unity系列之中级篇

    课程总体目标:     本中级篇面向的学员不再是完全的编程“小白”,而是具备一定C#编程经验,需要进一步查漏补缺、或者需要进一步全面完善自己C#编程知识体系的广大Unity学员。相信通过本中级篇的学习,可以使得Unity初中级开发人员对于编程语言的掌握更进一步;对于开发中大型游戏项目,在编程语言这一层级进一步打下坚实的语言基础。 “中级篇”课程讲解特点:       本中级篇面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法难点,使得学员最短时间掌握语法本质。 本课程讲解内容:       "C#(for Unity)中级篇" 在“C#入门”、“基础篇”的基础之上,从以下四个方面着重研究我们游戏开发(包含软件开发)过程中,C#最重要、最实用的技能模块,使得广大游戏研发人员,对于C#这门Unity脚本有进一步更加完善的认识。 一:.Net 框架讲解。     A) .Net 发展历史。     B)  IL  中间语言。 CLR  公共语言运行时。     C) 多维数据(常用二维数组)与交错数组。     D) 可变参数 Params     E) 进一步解释“实参”,“形参”。     F) 类的实例化内存分配机制。 二:深入学习对象类型     A)  里氏替换原则(LSP)     B)  类的属性极其本质特性     C)  IS ,AS 关键字     D)  深入学习字符串理论         1] 字符串的“驻留性” 原理。         2] 字符串==与Equals() 的本质区别         3] 更多字符串常用方法学习。     E)  枚举类型以及适用场合。 三:深入学习集合特性     A)  什么是索引器,以及索引器的适用范围。     B)  学习自定义集合类,以及深入了解Foreach 语句的原理。     C)  深入学习 ArrayList,了解内部存储机制以及原理。     D)  深入学习 HashTable,了解内部存储机制以及原理。     E)  为什么学习泛型集合?     F)  泛型集合与普通集合的性能测试对比实验。     G)  学习“泛型约束”,以及“泛型约束”的适用条件。 四:委托与事件         A)  什么是委托,先从讲故事学习起:“老板来啦”!     B)  反编译掌握委托的本质。     C)  委托的四大开发步骤。     D)  什么是事件,以及委托与事件的区别。     E)  事件的常用使用方式。 温馨提示:       本C# for Unity 使用Virtual Studio2012,进行开发与讲解。(学员使用更高版本,对学习没有任何影响) 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    1864 人正在学习 去看看 刘国柱
  1. 使用Reflector进行反编译
    Reflector下载地址:http://www.liangchan.net/soft/softdown.asp?softid=6319
    按照压缩包中的破解说明,即可破解
    破解完成后,桌面上如果没有快捷图标,在开始菜单中搜索Reflector,然后将图标拖动到桌面上
    这里写图片描述
    Reflector.FileDisassembler.dll下载地址:http://www.xdowns.com/soft/184/dll/2014/Soft_130597.html

下载完成后,打开Reflector安装软件,Tools-Add-ins…
这里写图片描述
将Reflector.FileDisassembler.dll添加进来
这里写图片描述

此时,你会发现工具菜单最底部出现
这里写图片描述

做完上面的工作,就可以进行反编译工作
这里写图片描述


这里写图片描述


这里写图片描述

这里写图片描述


这里写图片描述


这里写图片描述

接着可以继续反编译!先刷新一下!否则 file disassembler不可用
这里写图片描述

可以选择dll文件,然后整个导出,具体见下图
这里写图片描述


下面讲解另一个反编译工具 ILSpy
软件下载地址:http://www.orsoon.com/Soft/14703.html
下载解压后
这里写图片描述
这里写图片描述

软件左边选择 反编译
这里写图片描述
左边选择反编译的具体目标,软件右窗口就会显示反编译结果,并且可以通过选择 文件-保存代码 可以对整个dll文件进行反编译,还可以对某一部分做代码保存 很是方便
这里写图片描述


两种反编译工具的比较
这里写图片描述

FR:徐海涛(hunk Xu) QQ群:386476712

没有更多推荐了,返回首页