本帖最后由 痞孑 于 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.从而绕过失败,购买直接成功
附件(练手专用)
密码:dbix |