看B站直播发现这个有趣的游戏,找了半天修改器无效,Cheat Engine怎么找指针有点忘了,直接找数值每关都要重来,想来想去还是简单粗暴的反编译好了。
顺便做下C#反编译备忘。
首先把DLL反成IL
用
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe
把
Broforce2015.5.9\Broforce_beta_Data\Managed\Assembly-CSharp.dll
dump存为a.il和a.res
然后用
.NET Reflector 8.4
反编出源码
sublime搜索关键字Lives,定位到Player.cs文件中的RemoveLife函数
1 public void RemoveLife() 2 { 3 if (GameModeController.GameMode == GameMode.Campaign) 4 { 5 this.Lives--; 6 } 7 else 8 { 9 this.Lives--; 10 Debug.Log("Not Adjusting Lives text " + GameModeController.GameMode); 11 } 12 }
通过IL可知Lives--对应的IL代码类似
1 IL_0011: ldc.i4.1 2 IL_0012: sub 3 IL_0013: call instance void Player::set_Lives(int32)
简单粗暴的把sub改成add就行,一共两处。
改完后保存
备份游戏原Assembly-CSharp.dll文件
用ilasm把修改后的代码编译回dll
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe /dll/resource=a.res a.il
用生成的a.dll替换Assembly-CSharp.dll
大功告成,人数越死越多,再也不用担心玩着不爽了
时间: 2024-10-13 12:08:15