【Unity3D】游戏【滚动的天空】谷歌Google原版1.9.4【dnSpy】全∞资源破解【教程】
本帖最后由 Hayden. 于 2018-10-23 09:35 编辑这是一个非传统内购的破解教程,使用的是Google Play下载的原版,因为不是支付宝之类的购买方式,
所以不能像搜索内购代码破解。
本文走的是Unity3D类游戏的破解道路,主要是修改Assembly-CSharp.dll文件,达到游戏破解与内购!
使用工具:
Apk反编译---Android Killer1.3.1
dll动态链接库C#反编译工具---dnSpy v5.0.7
老方法使用AK反编译滚动的天空1.9.4,如下打开工程目录。把Assembly-CSharp.dll拖入dnSpy,它
会同时导入其他动态链接库,不要关掉,否则后果自负。
因为我们要改无限球,而根据程序员的写作思路,一般都是要有setBallNum和getBallNum者类
似的两个方法的,然后以此搜索关键词,我找到了Set_Ball这个方法名,点击进入。
我仿佛发现了新大陆,这个类里都是关于游戏商品的set和get方法。
Get_Ball,Set_Ball,Unlimited_Revive(无限复活),Unlimited_Revive_24h,
Unlimited_Ball_24h,Get_Shield(获取护盾),Set_Shield,Get_YaoShi(获取钥匙)。。。。。。。。。。。。。。。
接下来就是想怎么改就怎么改了。
看我的修改方法:
首先我们来看看基础的关于球的方法吧!
// Token: 0x1700097B RID: 2427
// (get) Token: 0x0600380B RID: 14347
public static int Get_Ball
{
get
{
PropUtil.TryInitialize();
string @String = PlayerPrefs.GetString(PropUtil.getItem(1).key);
int result = 0;
try
{
result = int.Parse(SystemSafety.StringDecryptByDES(@string, "20150528", "12345678"));
}
catch (Exception)
{
result = 10;
}
return result;
}
}
// Token: 0x0600380C RID: 14348
public static void Set_Ball(int ballNum)
{
if (!PlayerProfiler.HavePurchasedPremium)
{
PlayerPrefs.SetString(PropUtil.getItem(1).key, SystemSafety.StringEncryptByDES(ballNum + string.Empty, "20150528", "12345678"));
Singleton<EventSystem>.GetSingleton().DispatchEvent(new EventObject(19, 1));
}
}
在Set_Ball方法中,首先做了一个IF判断,为假才开始设置球的数量。
PlayerProfiler.HavePurchasedPremium直译Premium意思是,优质的,高昂的,
而最合适的翻译意思是:顶级的,豪华的,如索尼手机Premium版,还有很多车也是有Premium版的。
HavePurchasedPremium也就是是否已经购买顶级套餐!
点击方法名定位到:
// Token: 0x1700088C RID: 2188 // (get) Token: 0x06003345 RID: 13125 RVA: 0x00144B0C File Offset: 0x00142D0C
public static bool HavePurchasedPremium
{
get
{
bool result;
if (PlayerProfiler.premium.Get() == 42)
{
result = true;
}
else
{
PlayPackageDataModule dataModule = Singleton<DataModuleManager>.GetSingleton().GetDataModule<PlayPackageDataModule>(DataNames.PlayPackageDataModule);
result = dataModule.IsInExperience();
}
return result;
}
}
搜索Premium关键词找到OnPremiumModePurchase方法:
// Token: 0x06003335 RID: 13109 RVA: 0x00030F61 File Offset: 0x0002F161
public static void OnPremiumModePurchase()
{
PlayerProfiler.premium.Set(42);
PlayerPrefences.Save();
}
对比不难发现OnPremiumModePurchase()就是购买顶级配置的方法,不用脑袋想,也能肯
定这就是无限球和无广告套餐了。我把这个方法在Get_Ball方法中调用,测试
了一下,果然打开游戏就是无限球了,不用搞什么点击购买或其他操作了。
// Token: 0x1700097B RID: 2427
// (get) Token: 0x0600380B RID: 14347
public static int Get_Ball
{
get
{
PropUtil.TryInitialize();
string @string = PlayerPrefs.GetString(PropUtil.getItem(1).key);
int result = 0;
try
{
result = int.Parse(SystemSafety.StringDecryptByDES(@string, "20150528", "12345678"));
PlayerProfiler.OnPremiumModePurchase();//购买豪华套餐
}
catch (Exception)
{
result = 10;
}
return result;
}
}
下面改其他Get方法得到护盾,钥匙,复活心,碎片等
举例,更改返回值return;
// Token: 0x1700097F RID: 2431
// (get) Token: 0x06003813 RID: 14355
public static int Get_Shield
{
get
{
PropUtil.TryInitialize();
string @string = PlayerPrefs.GetString(PropUtil.getItem(3).key);
int num = 0;
try
{
num = int.Parse(SystemSafety.StringDecryptByDES(@string, "20150528", "12345678"));
}
catch (Exception)
{
num = 3;
}
return num + 65536;
}
}
我增加了65536个,其实只要是大点的数据,多少都无所谓,玩游戏后数值还会增加!
更改AndroidManifest.xml,去除facebook和google的广告activity。
修改后编译签名安装,看一下效果:
一个无限资源,无广告的滚动的天空1.9.4就出炉了!
原版链接:https://pan.baidu.com/s/1J9lMHVUuYM4DC4rMddO7Lw 密码:30kk
修改版链接如下,七天有效期**** Hidden Message *****
本文仅以学习为目的,请下载后24H之内删除,否则后果自负!
友情提示:请支持正版!!!请支持正版!!!请支持正版!!!重要事情说三遍!!!
请大家多多指教,多多评分点赞!
谢谢 顶一个 感谢分享破解
这款游戏我有玩过,个人到了第三关就反应不及了…:'(weeqw 感谢分享 我的天,大佬大佬,6666 666666666666666666666666666 学习一下下 大佬操作666,不过这游戏我没玩过{:1_1:} 看着很简单。做起来有点麻烦。特别是我这种没基础的人 不玩游戏 不过方法值得学习 谢谢 看看怎么样啊