手机连接USB调试,打开该app,windows命令行下敲 adb 命令:
adb shell dumpsys activity | findstr ResumedActivity
linux下,把findstr换成grep即可。
如下图效果,不但可以看到包名,还可以看到当前Activity名。
如果还不知道包名,那先通过第一步获取包名。
然后通过包名得到安装目录也是两行命令的事:
adb shell
pm list packages -f | grep 包名
如果不知道安装路径,先按上面的两步骤得到安装路径。
然后按如下用命令把文件复制出来即可。
如果当前还是在shell环境下,则先退出shell环境:
exit
然后adb pull 安装包路径 保存路径,比如
adb pull /data/app/com.test.demo/base.apk .
注意最后有个点号,表示保存到当前目录。
老牌反编译工具:apktool、dex2jar、jd-gui。
apktool:得到资源文件等。
下载地址:https://ibotpeaches.github.io/Apktool/
dex2jar:把dex文件转换成jar包。
下载地址:https://sourceforge.net/projects/dex2jar/
jd-gui:查看Jar包代码。
下载地址:http://java-decompiler.github.io/
官网下载太慢。如果不想一个个下载,可以点这里,一次下载这三个工具包。
下面是反编译实践:
把想要反编译的apk放到apktool同级目录,然后文件管理器地址栏输入cmd回车打开命令行,输入以下命令:
apktool d apk名字
这样稍等片刻,此目录下就会生成一个apk同名目录。里面的文件就是反编译出来的资源文件等了。
先把apk文件后缀改为.rar或者.zip,然后解压,得到dex文件。(当然不改后缀也可以解压。改后缀只是为了让系统识别出它是个压缩包。)
这样得到的这几个文件,跟上面通过apktool反编译得到的文件目录还是很类似的。
接下来,我们将通过dex2jar工具,把dex文件转换成jar包。首先将dex文件放到dex2jar目录下,如下:
然后地址栏输入cmd打开命令行,输入以下命令;
d2j-dex2jar.bat classes.dex
然后就会看到目录下多了个文件:
这就是已经转换好的jar包了。
这个工具使用很简单,直接双击打开exe文件,然后用它打开刚才得到的jar包即可。
效果如下:
当然这个apk没有做好混淆,所以代码看的比较清楚。如果混淆过的话,看到的代码都是abc之类不知所云的。所以我们开发Android做好混淆很重要。
抓包工具有很多,在这里我们使用Charles。下载地址:https://www.charlesproxy.com/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的请求,抓到的数据看起来是乱码。