zoukankan      html  css  js  c++  java
  • 我的逆向之旅

          欧陆战争之前玩的一款游戏。

    一、破解准备、

          jd-gui、apktool、欧陆战争apk、

    二、破解过程、

          首先第一步,自然是解压apk,得到App的dex文件,通过dex2jar将dex文件转成jar文件通过jd-gui程序查看Apk的源代码,我们这里可以看到代码是经过混淆的,但是没有经过加固。

        这里转化使用的命令为 d2j-dex2jar.bat classes.dex

     

          得到源代码后,用于之后的分析。

             第二步,我们需要得到apk的smail文件,用于执行程序打断点调试,这里面我们使用apktool获取工程文件。

         使用该命令apktool.bat d -f xxx.apk  得到该文件夹。

            通过AS导入该工程,运行调试。调式过程如下,我们首先将apk安装在我们的模拟器上,运行,打开monitor,在andorid/sdk/tools下面,打开后,点我们需要调试的app,双击选中。

         在AS中导入我们的工程后,我们首先在editConfiguration中配置我们的remote调试,端口设置为8700,我们的monitor通用端口,接下来就跟我们在平时开发时一样,打断点调试。

     

      一切准备好后我们,开始调试我们的程序。这里需要注意在debug按钮时,首先在monitor中双击选中我们的调试进程,否则会出现connect fail的错误。

        接下来开始破解,首先我们重新将我们反编译出来的程序重新打包成apk。

        通过该指令 apktool.bat b xxxx,重新打包出来的apk文件会出现在dist文件夹中,接下来我们需要重新签名,安装到我们的模拟器中。

        使用Auto-sign工具,使用java -jar signapk.jar testkey.x509.pem testkey.pk8 oulu5.apk oulu5_signed.apk 命令生成签名后的apk。

      通过adb install xx.apk命令安装到我们的模拟器上,安装成功,我们点开后发现闪退,安装正版App无此现象,再通过分析可得,我们没有改变任何东西,只是重新签名,可以知道,该App做了签名自校        验,分析源代码我们可以看到,在这里面他获取了apk的签名,进行比对,比对在java程序中并没有找到,可以猜想是在native层做的比对。这里采用一个办法,hook packageManger,将他之前的签名传         进去。这里用了如下方法。

           https://github.com/xxxyanchenxxx/SigKill 使用这里面的方法,原来代码中没有application,我们重新添加一个Application按照他的方法,可以发现,接下来我们运行到了开场动画结束前,都能正常运行。

        但是之后可以发现,当开场动画放完之后,我们的程序依然崩溃,查找原因。首先排除签名失败的问题,因为可以通过,这时候需要查看异常打印的log。这个需要我们在monitor中查看,可以发现报   错异常。

     

      可以看到是jni调用java方法造成的sharedPreference空指针。接下来我们找到这个java方法。我们可以看到它通过调用了这里。

     

        暂时分析不出这里代码的作用,我们可以看到,他返回的是boolean值,我们则删除调用的方法,直接返回一个true,让程序首先运行起来。

        之后可以发现程序运行成功,在修改一些字符串资源试验成果。

     

        可以发现修改成功,游戏也可以正常玩耍,接下来就到了最关键的时候,找到我们的支付那一块的代码,做关键的处理。

    源Apk:

    https://www.xiaogouh5.com/dgumln/88664b74ef4e8ab1.html 欧陆战争5 

    引用:

    https://blog.csdn.net/sxk874890728/article/details/80486223 一步一步带你反编译apk,并教你修改smali和重新打包

    https://www.jianshu.com/p/b0ef40b5d3ed Android Studio动态调试第三方APK

    https://blog.csdn.net/xxooyc/article/details/78774384 一键绕过App签名验证

  • 相关阅读:
    vim 查找文件指定内容所在位置
    tar 使用小技巧
    dpkg 安装deb包
    Jetbrains 全家桶(IDEA,PyCharm...)
    Python如何生成requirements.txt文件
    MySQL——导入数据报字段编码错误
    视图的概念、作用以及如何创建
    hive与hbase及MySQL的区别
    mysql—排序函数rank() over()、dense_rank() over()、row_num() over()
    mysql —net start mysql 命令发生系统错误5和错误1058的解决方法
  • 原文地址:https://www.cnblogs.com/yrstudy/p/10256605.html
Copyright © 2011-2022 走看看