土球球
本帖最后由 ustc_zzzz 于 2016-6-4 23:44 编辑

旧帖子可能是因为论坛BUG版主没法审核通过。。。所以发了个新的=_=||

引言:

这篇文章本来应该是本人的一系列教程(http://www.mcbbs.net/thread-517115-1-1.html)中的一部分(https://github.com/ustc-zzzz/fmltutor/wiki/附录C-混淆与反射),不过因为被被放在附录里所以可能不太容易引起重视,此外个人觉得这部分内容可能比较重要,而且个人觉得很多人这方面可能也不太明白,国内现有的教程的一些内容可能也没讲到,所以在此单独列出。

另外,教程有什么问题(包括笔误)或者没讲到的,欢迎指出_(:з」∠)_


概述:

众所周知,作为一个商业软件,Minecraft本身对代码进行了混淆,这本身是一件毫不意外的事。不过不幸的是,当这件事被放在修改游戏这件本来商业软件不允许不过后来Minecraft游戏的开发公司却默许的事上的时候,问题就变得十分复杂了。

在修改游戏的过程中,常常会出现一些非公有的属性或方法不能访问的情况,或者因为扩展需要修改一个被声明为final的值。这时代价最小的方案往往是Java自身提供的反射机制。而当反射机制遇上混淆机制的时候,没有全面顾及到混淆的代码又常常会出现一些问题。

附录的这一部分主要讨论的就是不同的混淆名称之间的关系,以及Forge是怎么处理这些名称的,再就是一些使用反射机制时容易出现的问题,和一些利用Forge自身提供的机制可能带来简化的小技巧。

阅读教程中的反射部分需要一些和Java的反射机制相关的知识,对反射机制的相关知识还没有完全理解的读者可以先行阅读下面链接提供的教程,或者自行寻找相应的教程:

https://docs.oracle.com/javase/tutorial/reflect/


正文内容:

https://github.com/ustc-zzzz/fmltutor/wiki/附录C-混淆与反射

第一页 上一页 下一页 最后一页