0%

Android U3D修改

U3D游戏

首先我们判断这个游戏是否是U3D可以根据是否在lib\armxxx目录下存在:libmain.so,libmono.so,libunity.so。如果存在的话呢就八九不离十了,这个时候我们就可以来分析相关的DLL,如果有加密DLL,那么我们就在相关函数位置dump我们的DLL,然后替换成官网的mono,思路很多,网络上也是很多。

Assembly-CSharp.dll

加解密就是对这个DLL进行操作。如果没有加密的话呢,那么我们就可以直接使用Reflector进行反编译修改,下面就尝试修改实现无敌:

  1. 首先我们将我们的dll拖进去,然后点击搜索,搜索可能存在的字符,例如Dead,这个就是死亡,尝试寻找
    搜索
    这里需要注意我们点击的是第二个,因为第一个是搜索类,第二个才是搜索成员,搜索到一个函数之后,我们双机他,如果出现这个样子的一个对话框:
    加载DLL
    就是让你重新加载一下这个DLL,我们重新选择然后加载就好了

  2. 分析发现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void Dead()
    {
    GameMangerInit.freeGifts(GameManager.getInstance().giftUses);
    GameManager.getInstance().giftUses = new Dictionary<string, GiftUse>();
    Object.Destroy(this.skillAnim);
    Object.Instantiate(Resources.Load("Prefabs/Effect/explosion"), base.get_transform().get_position(), Quaternion.get_identity());
    base.get_gameObject().get_transform().set_position(new Vector3(0f, -12f, 0f));
    this.isDead = true;
    this.skillAnim = null;
    this.isSkill = false;
    this.riseTime = 0f;
    showRecharge = false;
    }

    发现this.isDead = true;这个语句就很类似与我们的玩家死亡,而且将其改为了true,那么我们只要将其改为false那么我们应该就会不死。

  3. Relfexil插件
    使用这个插件我们可以我们可以修改,他在下方会显示IL代码
    插件
    然后我们找到相对应的位置:
    关键
    可以看到这个ldc.i4.1是false,那么我们改为ldc.i4.0将会一直是true,我们右键点击Edit…,然后修改数据:
    修改数据
    然后点击Update,之后我们选中我们添加的这个DLL,我们右键Relfexil插件,选项里有个Save-as我们另存为就可以了

  4. 替换DLL
    最后我们替换我们的DLL,记住名称不要搞混忘记修改

然后有的时候需要重新签名也不要忘记,最终运行发现可以不死。