(业) 发表于 2014-12-25 18:35:09

锁定状态码破解具体方法?

鬼哥的以TTX连萌来多层次分析游戏破解中的因为理解能力差,教程所以中说,将其返回值修改为0x3e9,即数字1001,即代表支付成功。想了半天也,没想明白到底怎么修改
那位大神给我说说,具体锁定的是什么位置。


我们在追踪onBillingFinish方法上下文的时候,发现PurchaseCode.smali中的getStatusCode()I方法以及MessageInfo.smali中的getPurchasecode()I方法,应该是用于定义支付码状态,即支付成功,支付失败,取消支付的。在PurchaseCode.smali文件中,我们发现:
.field public static final WEAK_ORDER_OK:I = 0x3e9
这个是定义支付订单成功的状态码。一般在移动MM里面,多数都是这个。所以,我们可以看到上面所说getStatusCode()I方法和getPurchasecode()I方法都是返回值为int类型的,那么我们直接将其返回值修改为0x3e9,即数字1001,即代表支付成功。我们保存修改,回编译,查看到,点击购买按钮,直接提示下图:

http://img.blog.csdn.net/20141029145517828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpZ3V6aTExMTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

myoldid 发表于 2014-12-25 18:35:10

直接找到代码设定的地方:
.method public static setStatusCode(I)V
    .locals 0
    sput p0, Lmm/sms/purchasesdk/PurchaseCode;->statusCode:I
    return-void
.end method
全局变量
.field public static final ORDER_OK:I = 0x3e9
成功的代码为 0x3e9
所以我们直接把p0改成0x3e9
    const/16 p0,0x3e9
    sput p0, Lmm/sms/purchasesdk/PurchaseCode;->statusCode:I
    return-void
页: [1]
查看完整版本: 锁定状态码破解具体方法?