mlgmxyysd 发表于 2020-7-15 19:32

【小喵】记一次半成功的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 *****

Ag2S 发表于 2020-7-16 04:25

反编译修改C#使用dnspy不更方便,直接修改C#

mlgmxyysd 发表于 2020-7-16 20:41

涛之雨 发表于 2020-7-16 18:48
说的是原创板块,不是原创教程。
看版主怎么说吧
版规中只写了禁止非原创作品使用,似乎没有限制板块
第18条 禁止非原创作品使用“隐藏回复”功能

夜步城 发表于 2020-7-15 20:23

来学习啦!

红烧大白鲨 发表于 2020-7-15 21:18

看着很牛逼的样子嘛

lgy0413 发表于 2020-7-15 21:31

感谢分享

wqs0987 发表于 2020-7-15 21:36

试试看,研究研究

涛之雨 发表于 2020-7-15 23:46

非原创区不得使用“回复可见”。
版规了解一下

龙倩宝 发表于 2020-7-16 01:03

感谢大佬任性分享

神经兮兮的人 发表于 2020-7-16 07:32

感谢分享

lm877966 发表于 2020-7-16 08:04

这是我学不费的
页: [1] 2 3 4 5
查看完整版本: 【小喵】记一次半成功的Unity3D游戏修改和去广告