【小喵】记一次半成功的Unity3D游戏修改和去广告
本帖最后由 mlgmxyysd 于 2020-7-15 19:37 编辑几年前Android2.x的时候很喜欢玩像素风格的开罗休闲类游戏,在某游戏修改网上找了一堆,现在又想玩了,但是之前的游戏修改网好像找不到了,那就自己摸索着改吧
在Google Play商店里下了一个,拆包看一下,Unity3D引擎(我记得以前玩的时候不是u3d来着?),那就好办了,直接上Reflector和Reflexil
Unity3D的游戏逻辑都在Assembly-CSharp.dll中,我们把这个文件丢进Reflector里
进去一眼就直接看到了一几关键字“main”和“game”,“game”里没有什么游戏逻辑,跳过
“main”里有“Main”和“AppData”,但是“Main”看了一下似乎都是Android相关的,也没什么游戏逻辑
于是就直接看“AppData”
游戏中有三种货币,金钱(一般关键字为“coin”,“money”,“gold”)等,奖牌(“medal”)和奖券(“ticket”)
使用搜索功能搜索到了AddMoney方法,但是还不确定是不是
看到方法中有SetMoneyHighScore我就确定了,因为游戏中有金钱排行榜相关
再搜一搜,看到了AddTicket,是直接调用AddPlatinumMedal这一方法的
于是我们就找齐了三大货币的相关逻辑
逻辑有了,只需要把加的代码改成锁定值就行了,但是打开Reflexil后我就懵了,不懂汇编和il码
不能直接改,但是我们可以换一个思路,我不会改加的逻辑,还不能把减改成加吗?于是找到了Sub相关方法
虽说不懂il码,但是根据可读代码也能大概看懂一点,找到sub
右键,点Edit
把他改成add
改完之后不会刷新可读代码
SubMedal也是同理,将sub改成add
但是还要再改一下,否则当货币不足的时候就不行了,将retuen false的两句opcode删掉
SubPlatinumMedal也是同理,-1似乎改不改都一样,记录花费货币明细的
return false也干掉
右键dll,另存为
这个Patched的就是修改后的dll,替换掉apk里的
顺便把广告也给干掉
回包一下发现去广告失败
反编译一下dex,搜索关键词“ad”,找到了adMob
修改一下
干掉了谷歌广告,但是还是有广告,鄙人学艺不精,没有找到这个广告的layout
干掉了TapJoy积分墙广告
金钱不减反加,成功
奖牌不减反增,成功
奖券暂时没有解锁抽奖,所以测试不了
比较遗憾的是没能锁定值(把Add和Sub方法直接等于固定数值),广告没有完全去除,没有破解Google Play支付,有兴趣的大佬可以研究一下
修改后的Assembly-CSharp.dll(版本是2.1.2)
**** Hidden Message ***** 反编译修改C#使用dnspy不更方便,直接修改C# 涛之雨 发表于 2020-7-16 18:48
说的是原创板块,不是原创教程。
看版主怎么说吧
版规中只写了禁止非原创作品使用,似乎没有限制板块
第18条 禁止非原创作品使用“隐藏回复”功能
来学习啦! 看着很牛逼的样子嘛 感谢分享 试试看,研究研究 非原创区不得使用“回复可见”。
版规了解一下 感谢大佬任性分享 感谢分享 这是我学不费的