逆向解析Apk定位错误

欢迎Follow我的GitHub, 关注我的.

逆向解析Apk定位错误_第1张图片
JD-GUI

本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html

Android

在Android开发过程中, 每个Apk发布之前, 都会进行Proguard混淆代码. 当遇到崩溃时, 需要逆向解析Apk包, 定位错误. 那么, 如何找到错误的位置呢? 我来分享一个小方法.

错误

Caused by: java.lang.NullPointerException
at me.chunyu.e.f.b.getBssid(Unknown Source)
at me.chunyu.ChunyuDoctor.Activities.DeviceStatistic.getParam(Unknown Source)
at me.chunyu.ChunyuDoctor.Activities.DeviceStatistic.sendDeviceInfo(Unknown Source)
at me.chunyu.ChunyuDoctor.Activities.MainActivity2.onContinueCreate(Unknown Source)
at me.chunyu.ChunyuDoctor.Activities.MainActivity600.onContinueCreate(Unknown Source)
at me.chunyu.base.activity.CYDoctorActivity40.onCreate(Unknown Source)
at me.chunyu.base.activity.CYFragTabActivity.onCreate(Unknown Source)
at me.chunyu.ChunyuDoctor.Activities.MainActivity600.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:5086)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at com.lbe.security.service.core.client.b.x.callActivityOnCreate(Unknown Source)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
... 11 more

1. 逆向工具

(1) 工具dex2jar, 下载地址, Github.
主要使用d2j-dex2jar.sh脚本执行. 例如:

sh d2j-dex2jar.sh classes.dex

(2) JD-GUI是显示Java包内容的工具.

2. 配置命令

bin文件夹下设置, 建立软链接.

ln -s  /Users/wangchenlong/Installations/dex2jar-2.0/d2j-dex2jar.sh d2j-dex2jar.sh

bin是系统命令文件夹.

  1. 在根目录建立bin文件夹: $mkdir bin
  2. 修改".bash_profile": $vi ~/.bash_profile
  3. 在".bash_profile"添加系统路径:
    PATH=$PATH:/Users/wangchenlong/bin
    export PATH
  4. 更新".bash_profile": $source ~/.bash_profile
  5. 显示路径, 是否加载成功: $echo $PATH

目前需要关联d2j_invoke.sh文件, 无法配置命令, 在文件夹内直接使用d2j-dex2jar.sh.

3. 解析Apk

修改Apk包的扩展名, .apk->.zip, 解压.
找到里面的classes.dex文件, 把这个文件转换为jar文件.

进入dex2jar-2.0文件夹下, 修改d2j_invoke.sh权限.

sudo chmod 755 'd2j_invoke.sh'

d2j_invoke.shd2j-dex2jar.sh的关联脚本, 否则Permission Denied.

执行命令d2j-dex2jar.sh, 在当前文件夹生成classes-dex2jar.jar.

sh d2j-dex2jar.sh ~/Desktop/SpringRainDoctor/classes.dex

移动jar到项目文件夹.

mv classes-dex2jar.jar ~/Desktop/SpringRainDoctor/classes-dex2jar.jar
逆向解析Apk定位错误_第2张图片
命令

使用JD-GUI打开jar包, 根据错误找到包内信息.

逆向解析Apk定位错误_第3张图片
JD-GUI

OK, 这样就可以根据错误定位到崩溃(Crash)的位置了.

你可能感兴趣的:(逆向解析Apk定位错误)