吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7266|回复: 12
收起左侧

[Android 原创] 初探谷歌内购之幸存者:生存(特殊无效代码处理)

[复制链接]
痞孑 发表于 2018-2-11 20:32
本帖最后由 痞孑 于 2018-2-11 20:34 编辑




1.基础套路解析
同样我们把dll解压到桌面
之后把dll拖进dnspy
1.png

之后我们搜索buyproductid(采购产品ID)
(之前教大家都是搜索已知的金币数量,但这次跟以往不同的)
(如果我们用已知的金币数量来搜索 却搜不到结果那就用本次教程的方法
搜到一个结果,那么我们果断双击进到这个类里边一探究竟
1.png

之后我们在同路径下可以看到一个类ProcessPurchase(采购过程)
同样我们把这个类里边的代码复制一下
(这里可能有些老铁不知道从哪复制,所以我用GIF图片演示)
45.gif

复制过后我们再次找到buyproductid类(购买产品ID)
找到之后我们右键编辑代码
把我们刚复制的代码粘贴
(这里我同样是用GIF图片演示)
55.gif


粘贴之后 可以看到仍然有一大堆无效代码(红色代码)
1.png

2.处理无效代码
这里我教大家一个暴力删除法
(仍然用GIF图片演示)
删除的这些代码都是一些判断
(直接删除不要也罢不影响内购)
66.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图片演示)
77.gif

处理这些特殊无效代码都可以用这个办法解决
(特殊无效代码=缺少dll系统文件)

那么...emmm....解决完之后,保存就行了

待续....

总结
1.通过获取商品ID-得知采购过程=采购成功
2.找到触发购买成功的条件
3.把触发购买成功条件替换到采购过程
4.从而绕过失败,购买直接成功


附件(练手专用)
密码:dbix

免费评分

参与人数 4吾爱币 +12 热心值 +4 收起 理由
to9127 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
東方包子 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tieb2014 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xwzj20170829 发表于 2018-2-12 02:49
跟着教程做到最后一步编译出错 我删除return那一行才行    你不用删的吗?
有没有快速看懂那些代码是什么意思的方法  自己找个游戏改看不懂代码意思
大了了 发表于 2019-8-6 11:33
留个爪,这么大段文件,就最后百度链接看懂了。。。喜欢这种生存类文件,希望楼主再接再厉,多多破解,嘿嘿
绝美之城 发表于 2018-2-11 20:41
梦他梦她 发表于 2018-2-11 20:42

谢谢分享
头像被屏蔽
秀山西街 发表于 2018-2-11 20:46
提示: 作者被禁止或删除 内容自动屏蔽
wzl123456 发表于 2018-2-12 00:24
看不懂啊
云在天 发表于 2018-2-12 01:05
你把所有dll解压出来就基本不会有红字了,如果你只需要复制粘贴可以尝试IL指令
爱飞的猫 发表于 2018-2-12 09:10
建议使用论坛代码标签… 另外代码居中后非常不方便阅读。
as8438190 发表于 2018-2-12 22:15

不错不错@@@
liuqinglong326 发表于 2018-2-12 22:51
谢谢,看看学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-20 02:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表