admin 管理员组

文章数量: 887021

如何深扒一个Android应用

    • 1.手机上安装了一个app,如何得到它的包名?
    • 2.如何得到app安装路径?
    • 3. 如何得到安装包?
    • 4.如何反编译一个安装包?
      • 1)apktool的使用
      • 2)dex2jar的使用
      • 3)jd-gui的使用
    • 5.如何抓包分析其网络请求?

1.手机上安装了一个app,如何得到它的包名?

手机连接USB调试,打开该app,windows命令行下敲 adb 命令:

adb shell dumpsys activity | findstr ResumedActivity

linux下,把findstr换成grep即可。
如下图效果,不但可以看到包名,还可以看到当前Activity名。

2.如何得到app安装路径?

如果还不知道包名,那先通过第一步获取包名。
然后通过包名得到安装目录也是两行命令的事:

  1. 进入shell:

adb shell

  1. pm命令得到安装路径

pm list packages -f | grep 包名

如下图效果:

3. 如何得到安装包?

如果不知道安装路径,先按上面的两步骤得到安装路径。
然后按如下用命令把文件复制出来即可。
如果当前还是在shell环境下,则先退出shell环境:

exit

然后adb pull 安装包路径 保存路径,比如

adb pull /data/app/com.test.demo/base.apk .
注意最后有个点号,表示保存到当前目录。

如下图:

4.如何反编译一个安装包?

老牌反编译工具:apktool、dex2jar、jd-gui。
apktool:得到资源文件等。
下载地址:https://ibotpeaches.github.io/Apktool/

dex2jar:把dex文件转换成jar包。
下载地址:https://sourceforge/projects/dex2jar/

jd-gui:查看Jar包代码。
下载地址:http://java-decompiler.github.io/

官网下载太慢。如果不想一个个下载,可以点这里,一次下载这三个工具包。

下面是反编译实践:

1)apktool的使用

把想要反编译的apk放到apktool同级目录,然后文件管理器地址栏输入cmd回车打开命令行,输入以下命令:

apktool d apk名字

这样稍等片刻,此目录下就会生成一个apk同名目录。里面的文件就是反编译出来的资源文件等了。

2)dex2jar的使用

先把apk文件后缀改为.rar或者.zip,然后解压,得到dex文件。(当然不改后缀也可以解压。改后缀只是为了让系统识别出它是个压缩包。)

这样得到的这几个文件,跟上面通过apktool反编译得到的文件目录还是很类似的。
接下来,我们将通过dex2jar工具,把dex文件转换成jar包。首先将dex文件放到dex2jar目录下,如下:

然后地址栏输入cmd打开命令行,输入以下命令;

d2j-dex2jar.bat classes.dex

然后就会看到目录下多了个文件:

这就是已经转换好的jar包了。

3)jd-gui的使用

这个工具使用很简单,直接双击打开exe文件,然后用它打开刚才得到的jar包即可。

效果如下:

当然这个apk没有做好混淆,所以代码看的比较清楚。如果混淆过的话,看到的代码都是abc之类不知所云的。所以我们开发Android做好混淆很重要。

5.如何抓包分析其网络请求?

抓包工具有很多,在这里我们使用Charles。下载地址:https://www.charlesproxy/download/

如果打开后提示激活,可以填如下激活信息,我试了是可以用的:

Registered Name:https://zhile.io
License Key: 48891cf209c6d32bf4

Charles的使用:
首先确保手机和电脑处于同一局域网内。如果不确定的话,手机和电脑连接到同一个WiFi即可。
1.查看电脑的ip地址
命令行输入命令 ipconfig,回车:

如图红框里的就是我们想要的电脑IP地址。

2.修改手机网络,使用代理。

手机的WiFi列表里,长按正在连接的WiFi,修改网络 -> 代理改为手动,然后服务器主机名填入电脑IP地址,服务器端口填8888(Charles默认),然后连接。

这样就成功设置了代理,可以用charles抓包了。

3.操作手机APP,发起网络请求,然后在Charles上查看数据:

注意这种基本抓包操作只能看到Http请求的数据,如果是HTTPS的请求,抓到的数据看起来是乱码。

本文标签: 机上 Android App