Unity Assembly-CSharp.dll反编译只能看到方法名,不能看到具体实现方法?


我需要替换所有 .Sockets。* 。 我知道这样的事情是可能的,并且可以由其他人完成 (请参阅下面的 EDIT ,在页面底部)。我想知道自己怎么做。

(很抱歉,如果我使用的术语不正确,我一般对IL还是陌生的。)

您可以使用已经编写的工具来完全解决此问题,例如:

尽管您描述的问题只是我上面描述的一个子集,但是如果您要使用GAC安装,而这又需要强大的名称签名,那么它很可能是同样的问题。

编译并部署您自己的自定义版本使用 a>-不需要二进制/ 进入 into .cs 项目添加到解决方案中

  • [查找和删除类似于的所有内容

这篇关于使用Mono.Cecil替换对类型/名称空间的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

怎么判定它是Unity游戏呢
[如果是个Unity游戏却找不到dll文件那么骚年放弃吧。。。]

一般情况下都是修改上图的这个dll文件

[如果想要搜索的东西不在这个dll文件可借用UltraEdit、EditPlus、Notepad++等常用编辑工具辅助搜索来判断对哪个dll文件进行修改

以Jam City这款游戏为例来作以下分析:

内购部分就不讲了,因为下面将要修改的比内购的要来的痛快

在手机上试玩了下这个游戏 篮板和抢断的路线根本就不明确嘛。。。

金币-Coin、等级-Level 那么着重修改这两个值吧

按下F3搜索,切换到方法搜索


搜到的内容这么多 改哪个呢 头疼啊!

等等!unity3d提供的有存档类啊!这是一大重要的切入点O(∩_∩)O~

unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs。其工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
PlayerPrefs类支持3种数据类型的保存和读取,浮点型,整形,和字符串型。


游戏本地存档的主要方式无外乎xml文件和数据库存储两种,我们安装运行该游戏并简单的通过买物品和升级改变金币和等级的数值。

本文主要介绍安卓unity3d游戏的本地数据的修改方法。

点击右边的Releases下面的版本进行下载即可。

为了进行测试,我们创建个Unity Demo工程,创建两个脚本,如下:

七、查看反编译后的文件

这个文件会把C#dll代码的类、方法、字段列出来。比如我们写的Main.csHello.cs


 
 
 
 
 
 
 
 
 
 
 

生成的cpp的头文件,从头文件里我们也可以看到相关的数据结构。

json格式显示类的方法信息:

json的格式显示所有的字符串信息:

可以看到,与刚刚的dump.cs文件内容是一致的。

八、拓展:使用IDA逆向il2cpp.so,得到函数体内部逻辑

从上面IL2CppDumper我们可以发现,逆向得到的函数体都是空的,看不了内部逻辑。有没有办法可以逆向得到函数体内部逻辑呢?
有,需要借助另一个反编译神器:IDA,全称交互式反汇编器(Interactive Disassembler)。
关于IDA的使用,我之前写过一篇文章:,感兴趣的同学可以看看。

IDA32位的和64位两个exe,要根据你反编译的文件运行对应的exe
假设我们要查看Main脚本的Awake方法的函数体,我们从刚刚的dump.cs可以看到对应的函数地址:


可以看到跳过来是这样的,这里对应的是汇编代码,这个sub_39CD08就是我们的Awake函数。
源代码中,Awake函数中调用了Init函数:


我们再回过头看IDA,我们就可以对应起来了。
我们可以直接按F5将汇编转成对应的c代码,这个sub_39CD08就是Awake函数,可以看到,这里代码被优化了,Awake函数内部实际上就是Init中的内容,不过看起来也是挺晦涩难懂的,感兴趣的同学可以深入研究研究。

il2cpp将游戏 C#代码转换为C++代码,然后编译为各平台Native代码。

虽然游戏逻辑是以Native代码运行, 但依然要实现 C#某些语言特性(如GC、反射),il2cpp将所有的 C#中的类名、方法名、属性名、字符串等地址信息记录在 global-metadata.dat文件。il2cpp启动时会从这个文件读取所需要的类名、方法名、属性名、字符串等地址信息。
我们可以在Unity安装目录的Editor目录中找到il2cpp虚拟机的源码:vm目录。

注意,IL2CppDumper是使用C#写的,C#windows平台上是小端字节序,即数据的高字节保存在内存的高地址中,我们上面使用010Editor看二进制文件的时候,从左到右地址是升高的,所以上面的AF 1B B1 FA对应到C#代码中就是0xFAB11BAF,不要搞反了哦。

再往里走,就是Elf格式文件的解析了,这里就不展开了。执行完Dump即可生成逆向文件了。
感兴趣的同学可以继续深入研究下。

喜欢Unity的同学,不要忘记点击关注,如果有什么Unity相关的技术难题,也欢迎留言或私信~

我要回帖

更多关于 使用visual c++ 反编译插件 的文章

 

随机推荐