U3D游戏
首先我们判断这个游戏是否是U3D可以根据是否在lib\armxxx目录下存在:libmain.so
,libmono.so
,libunity.so
。如果存在的话呢就八九不离十了,这个时候我们就可以来分析相关的DLL,如果有加密DLL,那么我们就在相关函数位置dump我们的DLL,然后替换成官网的mono,思路很多,网络上也是很多。
Assembly-CSharp.dll
加解密就是对这个DLL进行操作。如果没有加密的话呢,那么我们就可以直接使用Reflector进行反编译修改,下面就尝试修改实现无敌:
首先我们将我们的dll拖进去,然后点击搜索,搜索可能存在的字符,例如Dead,这个就是死亡,尝试寻找
这里需要注意我们点击的是第二个,因为第一个是搜索类,第二个才是搜索成员,搜索到一个函数之后,我们双机他,如果出现这个样子的一个对话框:
就是让你重新加载一下这个DLL,我们重新选择然后加载就好了分析发现:
1
2
3
4
5
6
7
8
9
10
11
12
13public 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那么我们应该就会不死。Relfexil插件
使用这个插件我们可以我们可以修改,他在下方会显示IL代码
然后我们找到相对应的位置:
可以看到这个ldc.i4.1是false,那么我们改为ldc.i4.0将会一直是true,我们右键点击Edit…,然后修改数据:
然后点击Update,之后我们选中我们添加的这个DLL,我们右键Relfexil插件,选项里有个Save-as我们另存为就可以了替换DLL
最后我们替换我们的DLL,记住名称不要搞混忘记修改
然后有的时候需要重新签名也不要忘记,最终运行发现可以不死。