我需要替换所有 .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.cs
和Hello.cs
。
生成的cpp
的头文件,从头文件里我们也可以看到相关的数据结构。
以json
格式显示类的方法信息:
以json
的格式显示所有的字符串信息:
可以看到,与刚刚的dump.cs
文件内容是一致的。
从上面IL2CppDumper
我们可以发现,逆向得到的函数体都是空的,看不了内部逻辑。有没有办法可以逆向得到函数体内部逻辑呢?
有,需要借助另一个反编译神器:IDA
,全称交互式反汇编器(Interactive Disassembler
)。
关于IDA
的使用,我之前写过一篇文章:,感兴趣的同学可以看看。
IDA
有32位
的和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
相关的技术难题,也欢迎留言或私信~