初探谷歌内购之幸存者:生存(特殊无效代码处理)
本帖最后由 痞孑 于 2018-2-11 20:34 编辑1.基础套路解析同样我们把dll解压到桌面之后把dll拖进dnspy
之后我们搜索buyproductid(采购产品ID)(之前教大家都是搜索已知的金币数量,但这次跟以往不同的)(如果我们用已知的金币数量来搜索 却搜不到结果那就用本次教程的方法)搜到一个结果,那么我们果断双击进到这个类里边一探究竟
之后我们在同路径下可以看到一个类ProcessPurchase(采购过程)同样我们把这个类里边的代码复制一下(这里可能有些老铁不知道从哪复制,所以我用GIF图片演示)
复制过后我们再次找到buyproductid类(购买产品ID)找到之后我们右键编辑代码把我们刚复制的代码粘贴(这里我同样是用GIF图片演示)
粘贴之后 可以看到仍然有一大堆无效代码(红色代码)
2.处理无效代码这里我教大家一个暴力删除法(仍然用GIF图片演示)删除的这些代码都是一些判断
(直接删除不要也罢不影响内购)
仍有一些残留的无效代码(无效代码=红色代码)
{
{
int num = ObscuredPrefs.GetInt("Coins");
num += 125;
ObscuredPrefs.SetInt("premium", this.premium);
ObscuredPrefs.SetInt("Coins", num);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
GameObject.Find("Male_Player").GetComponent<PlayerDeathHandler>().RewardPremium();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num2 = ObscuredPrefs.GetInt("Coins");
num2 += 125;
ObscuredPrefs.SetInt("Coins", num2);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num3 = ObscuredPrefs.GetInt("Coins");
num3 += 250;
ObscuredPrefs.SetInt("Coins", num3);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num4 = ObscuredPrefs.GetInt("Coins");
num4 += 500;
ObscuredPrefs.SetInt("Coins", num4);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num5 = ObscuredPrefs.GetInt("Coins");
num5 += 1250;
ObscuredPrefs.SetInt("Coins", num5);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num6 = ObscuredPrefs.GetInt("Coins");
num6 += 2500;
ObscuredPrefs.SetInt("Coins", num6);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
{
int num7 = ObscuredPrefs.GetInt("Coins");
num7 += 5000;
ObscuredPrefs.SetInt("Coins", num7);
ObscuredPrefs.Save();
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("AlphaMap"))
{
GameObject.Find("Canvas").GetComponent<ExtraMenu>().PurchaseAc();
}
else
{
GameObject.Find("Loading").GetComponent<Menu>().PurchaseAc();
}
}
return PurchaseProcessingResult.Complete;
}
}
我们在保存的过程中肯定会报错因为这些残留的无效代码不处理的话是无法保存的
那么,我就教大家一个方法下面是我研究一下午的结果(GIF图片演示)
处理这些特殊无效代码都可以用这个办法解决(特殊无效代码=缺少dll系统文件)
那么...emmm....解决完之后,保存就行了
待续....
总结1.通过获取商品ID-得知采购过程=采购成功2.找到触发购买成功的条件3.把触发购买成功条件替换到采购过程4.从而绕过失败,购买直接成功
附件(练手专用)https://pan.baidu.com/s/1smTODDb密码:dbix 跟着教程做到最后一步编译出错 我删除return那一行才行 你不用删的吗?
有没有快速看懂那些代码是什么意思的方法自己找个游戏改看不懂代码意思 留个爪,这么大段文件,就最后百度链接看懂了。。。{:1_918:}喜欢这种生存类文件,希望楼主再接再厉,多多破解,嘿嘿 谢谢分享。
谢谢分享
看不懂啊 你把所有dll解压出来就基本不会有红字了,如果你只需要复制粘贴可以尝试IL指令 建议使用论坛代码标签… 另外代码居中后非常不方便阅读。
不错不错@@@ 谢谢,看看学习一下
页:
[1]
2