zoukankan      html  css  js  c++  java
  • 大圣降妖录破解

    一.程序介绍
    游戏界面,很脑残的一个游戏,无脑点屏幕砍怪,还不能移动,而且还要很多钱去购买
     
    支付接口:
     
     
    二.定位关键代码思路
    首先明确我们的目标,破解他的收费(内购)
    为了达成这个目标我们得定位到他支付校验的代码,让他支付校验的代码总是返回真即可
     
    那么我们如何定位关键代码呢?
    思路如下:
    1. 查看是否有log输出
    2. 根据支付sdk顺藤摸瓜,向上搜索定位(或者插入打印函数调用栈的代码,向上层调用回溯)
    3. 是否有关键的字符串信息可以被利用
    4. 定位控件可以用dump view,然后查找资源id的方法
    5. 使用adb shell dumpsys activity top得到当前活动Activity
     
    方法一.查看是否有日志输出
    点击支付后,有关键log输出
     
    查看字符串引用的地方正好是内购的地方
     
    同时还有启动支付Activity的信息
     
     
    方法二. 通过支付SDK向上回溯
     
    EgamepayActivity是刚刚的支付页面,但是对其交叉引用发现没有调用者
    在onCreate插入log可以发现onCreate被调用了
     
    JEB中分析发现都调用了EgamePayProtocol这个函数,而且对该类做引用参考并没有发现调用源
    全工程字符串搜索也没有找到相关调用,不犹的怀疑是在so层做了这些调用
     
     loadLibrary看来是在so中完成的相关调用
     
    跟进这个EgamePayListener有点像是支付成功失败取消之后的,对其做引用参考 ,发现没有引用参考
     
    全内存搜索
     
    从EgamePay入手,发现这里里面调用了pay方法,插入log验证也的确是对其做交叉引用,成功定位到关键点
     
    方法三.根据游戏UI的特定字符串信息定位到关键点
     
    方法四.通过dumpsys类可以抓到当前最顶端的Activity,通过分析Activity代码同样可以定位到关键点
     
    方法五.通过dump view定位
    在此app中不适合,因为该UI是canvas上画出来的,抓不到id 所以没法定位相关控件ID
     
     
    三.内购破解
    我们再次看看购买的代码逻辑
     
     不管成功失败 都会调用OnResult(),我们跟进OnResult函数发现:
     
    我们只要让success=0即可
    我发现直接干掉if语句并没有什么用,我选择在外层调用OnResult的时候修改成0,也就是把下面这2个值都修改成0
     
    于是操刀把paycancel干掉,修改为0即可
     
    发现游戏内购被破解掉了
     
    火力全开
     
    通关了
     
     
    由于研究目的,破解版apk就不放出来了
     





  • 相关阅读:
    第四次博客作业-结对项目
    软件工程第三次作业——关于软件质量保障初探
    java 自动生成四则运算式
    《构建之法》第一章学习笔记
    给大家分享一个小程序—2048
    Java异常处理认识
    轻松定位CPU飙高问题
    接手​「烂摊子」,管理者怎么办?
    业务中台建设篇
    互联网巨头“大中台,小前台”战略
  • 原文地址:https://www.cnblogs.com/bingghost/p/5827401.html
Copyright © 2011-2022 走看看