android位置反向解析,逆向解析Apk定位错误

在Android开发中,Apk发布前通常会进行Proguard混淆,当遇到崩溃时需要逆向解析定位错误。通过使用dex2jar和JD-GUI工具,可以将classes.dex转换为jar文件,然后在JD-GUI中查看源码定位错误。具体步骤包括:下载并配置dex2jar和JD-GUI,修改Apk后缀解压,将classes.dex转换为jar,最后用JD-GUI打开jar文件找到错误位置。
摘要由CSDN通过智能技术生成

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

b67ac92943fa814378b125d89ad801b3.png

JD-GUI

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

7a580e9d893142e59efd2bb4d32c6294.png

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是系统命令文件夹.

在根目录建立bin文件夹: $mkdir bin

修改".bash_profile": $vi ~/.bash_profile

在".bash_profile"添加系统路径:

PATH=$PATH:/Users/wangchenlong/bin

export PATH

更新".bash_profile": $source ~/.bash_profile

显示路径, 是否加载成功: $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.sh是d2j-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

e21263c8da2cf4b80950f40f91181752.png

命令

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

b67ac92943fa814378b125d89ad801b3.png

JD-GUI

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值