看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函数
public void RemoveLife() { if (GameModeController.GameMode == GameMode.Campaign) { this.Lives--; } else { this.Lives--; Debug.Log("Not Adjusting Lives text " + GameModeController.GameMode); } }
通过IL可知Lives--对应的IL代码类似
IL_0012: sub 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
大功告成,人数越死越多,再也不用担心玩着不爽了