最近在看某外卖平台的代码,发现某外卖平台最新版本版本无法正常的通过dex2jar工具将dex转换出Java源代码,在转换过程中会提示出错,如图:
一、工具介绍
- apktool:google提供Android apk编译与反编译工具,https://ibotpeaches.github.io/Apktool/
- dex2jar:dex文件转jar文件工具,https://github.com/pxb1988/dex2jar
- jd-gui:查看jar文件,http://jd.benow.ca/
- keytool:制作和管理数字证书
- jarsigner:使用数字证书对jar和apk进行签名
- Android killer:Window系统中,上述工具的集成工具
更多反编译工具可查看:Uncle Chen—Android反编译技术总结
二、去除应用开发助手的广告
CodeKK公众号在17年初推出了一个应用开发助手。V1.0版本是有广告版本的,下面以这个版本为例,简单看下去广告过程。它的后续的V1.1.0和V1.2.0已经去除了广告功能。
2.1、反编译
1 | apktool.sh d -f ./dev-tools.apk |
2.2、注释广告代码
这里可以先用dex2jar转jar后查看下源码,会发现使用的是Google AdMob作为广告平台,简单看下代码可以发现在主页面activty_main.xml中包含广告视图的布局文件。所以只需要找到ad_layout.xml
将其 android:visibility="gone"
属性设置成gone
就可以了。
2.3、重打包
这里重打包的过程可能会遇到一些错误,不过认真查看日志并结合Google都是可以找到解决方案的,这里暂且不表。使用apktool b命令,生成的apk默认路径为/dist
路径下
1 | apktool.sh b ./dev-tools |
2.4、制作一个名为hackapk.keystore的证书,并重新签名应用
1 | 制作证书: |
详细的参数可以参考:
APK签名之keytool生成keystore和jarsigner签名apk
2.5、安装
1 | adb install -r dev-tools-no-ads.apk |
2.6、下载去广告版本的应用开发助手
三、反编译脚本
1 | #!/bin/sh |
将上述内容保存到本地hack.sh
文件中,使用下面的命令就会把apktool和dex2jar的结果输出到meipu
这个目录中,这样就不需要每次收到敲命令喽,只要知道需要反编译的apk和输出的文件夹名称就可以~
./hack.sh ./美铺_1487845975713.apk meipu