仨笨贼2——又一个游戏破解思路分析
本帖最后由 fisher 于 2017-5-10 22:01 编辑首先回顾一下常见的破解方法:
1. 按字搜索法。这种方法非常常见,大部分破解都以这个为战略起点。比如有些运营商的有些特别好弄,什么failed、succed之类的。以类名为关键字查找。或者有些游戏有文字提醒,根据“提醒文字”内容,转换编码查找。
2.按图索骥法。这个名字我自己取的,按activity找入口,然后开门进入。
3.其他。
接上一贴的思路。
0x0确定目标
com.caimeng.sbz2
工作环境:某遥安卓
作案工具:ApkIDE
辅助工具:当前activity
0x1敲“门”问路
查看当前activity,确定为sbz2
打开AapkIDE里面打开,找到。中间过程我就不再赘述了
看smali有难度的话,点击上面那个咖啡图标。查看java源码
往下翻看到billingFailed 和 billingSucceed就知道离成功相差不远了
public void billingFailed(int paramInt)
{
Log.d("tag", "------------失败-----------");
nativeBillingSuccess(sbillingIndex, 0);
}
public void billingSucceed(String paramString)
{
Log.d("tag", "------------成功-----------");
if ((sbillingIndex < 0) || (sbillingIndex > this.goodInfos.length - 1)) {
return;
}
if ((paramString != null) && (!paramString.equals(this.goodInfos))) {}
label88:
for (int i = 0;; i++)
{
if (i >= this.goodInfos.length) {}
for (;;)
{
nativeBillingSuccess(sbillingIndex, 1);
break;
if (!paramString.equals(this.goodInfos)) {
break label88;
}
sbillingIndex = i;
}
}
}
0x3破门而入
很容易的,通过这样我们便确定了billingFailed就是我们下手的对象(不要问我为什么没有0x2,我也不知道为什么上一个贴和这个贴都没有)
所以我们返回到ApkIDE中,找到TA,并尝试做出如下改动
#这三个其实没有任何影响,不用修改
.field public static final BILLING_CANCEL:I = 0x0
.field public static final BILLING_FAILD:I = -0x1
.field public static final BILLING_SUCCEED:I = 0x1
#关键点在这个 billingFailed method
.method public billingFailed(I)V
.locals 2
.param p1, "sbillingIndex" # I
.prologue
.line 320
const-string v0, "tag"
const-string v1, "------------\u5931\u8d25-----------"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 322
sget p1, Lcom/caimeng/sbz2/sbz2;->sbillingIndex:I
.line 323
const/4 v0, 0x1
#关键点在这里v0设置为0x1
invoke-static {p1, v0}, Lcom/caimeng/sbz2/sbz2;->nativeBillingSuccess(II)V
.line 324
return-void
.end method
0x4 关门放包
sdz2是已经破解的成品,小的那个是查看activity的辅助工具
链接: http://pan.baidu.com/s/1b60LIm 密码: 52pj
————————————————————————————————————————————————————————
截止至目前,用activity破解的方法和思路分享的差不多了。如果今天不是某淫去我那个帖子挖坟的话我估计这个帖子都不想写了。全靠意念看帖水贴
@冥界3大法王 补充了两个问题。一个是游戏的体力还有支付界面提醒失败的问题。其实这两个问题本不在我的计划范围内。
就这个游戏而言。购买这个玩意就能达到无限次复活的情况了。所以那么体力其实就没有多大的必要了。
至于支付提醒。论坛里面已经有贴子给出了去掉这个提醒,直接返回成功的方法。这里不再赘余.体力那个我会再研究研究,但是好像今天把我这周的娱乐时间都用完了。所以下次更新或者下个月吧{:301_972:}
冥界3大法王 发表于 2017-5-10 20:54
是的,挖坟,我挖的。
只要是论坛的原创贴,哥们有能力试的情况下,一定要下载个原版本的操 ...
回点评的那个。因为我没有亲自玩过,你说的19关闪退那个我要玩一下才能确定是否有问题。当我玩到19关那不知道什么时候了。。。。我玩游戏太菜了!体力无限的话我一般都是用的GG修改器直接修改这些数据。毕竟这样改了就太变态了。不推荐这样破坏游戏平衡。如果要通过内部锁定的话还得研究研究。 冥界3大法王 发表于 2017-12-25 18:56
@夏雨微凉
那是因为使用不同的工具,最终的下场不同!
不信,你使用不同的工具得到的结果是不同的!
谢谢大法王!当时我又弄成功了,好像是直接用成功方法覆盖了失败方法,这么长时间有点记不清了。你用的什么工具啊,我主要用Androidkiller,但是最近反编译TIMQQ最新版可以反编译成功但是回编译就失败了,是不是因为加了混淆什么的,一直没弄明白。 受教了,多谢楼主 挖坟
是的,挖坟,我挖的。{:301_987:}
只要是论坛的原创贴,哥们有能力试的情况下,一定要下载个原版本的操刀试一试了。
朋友,你这个APP太给力啦,我找了好久终于把你等来了,当初安卓2.X版本上,这个类似的功能可以直接用的。
建议版主给他加1WW {:301_993:} 学习一下 ,谢谢分享技术 顶一个,希望能看到楼主有所成绩 感谢分享! 谢谢楼主,下载收藏