一、声明
本人反编译只用于学习交流,禁止使用本文章用于商业用途。其次,如果本文章侵害了您的权益,请及时联系我删除本文。
二、准备
1. 该文章使用window10系统,使用其他系统可能会与本文章描述有所不同。
2.安装好的 Android Studio 软件一套,并确保软件编译工作正常。
3.java反编译工具 jadx与dex2jar,没有请网上自行下载。
三、待反编译app下载
度娘搜索iReader历史版本,下载 iReader的2.0.0与2.7.2版本的安装包apk。历史版本功能简单,对于初学者更友好一点,同一主版本号结构相似,有参考对比价值。
四、反编译过程
1.使用jadx
打开jadx,选择打开iReader-2.0.0.apk,等待反编译完成。
发现主要有四个程序包:com.a.a.a.a、com.alipay.android.app、com.chaozh、com.zhangyue.iReader。分析:com.alipay.android.app 为支付宝API,不需要关注,直接从网上下载库后导入进工程;com.chaozh与com.zhangyue.iReader为主要程序;com.a.a.a.a 不知道什么作用,不需要关注,重新封装导入工程即可。
菜单->文件->另存为 gradle project,保存反编译结果,留后使用。
2.使用dex2jar
使用WinRAR或者其他解压缩工具打开安装包,可以更改apk扩展名为zip后打开。解压其中的 classes.dex文件与lib/文件夹下全部文件。将 classes.dex 移动到dex2jar目录下,再cmd中运行:
d2j-dex2jar.bat classes.dex
得到 classes-dex2jar.jar 文件,删除classes.dex。
再使用WinRAR打开刚刚得到的 classes-dex2jar.jar 文件,解压 com.a.a.a.a 程序包(先建一个com文件夹,然后解压a.a.a.a到该目录下),再使用:
jar cf a.jar ./com
重新打包为a.jar。
下载支付宝API程序包,注意与上一步反编译得到的支付宝API接口一致,即 alipaySdk-20180601.jar 或之前版本。或者,使用打包 com.a.a.a.a 同样的方法,重新打包一个支付宝API接口程序包。
3.使用Android Studio重新编译
打开 Android Studio,新建工程,配置如图:
其他配置默认即可。 新建好后,打开文件管理器,导入以下源文件:
1.删除iReader/app/src/main下全部文件及文件夹。
2.将用jadx反编译得到的 iReader-2.0.0/src/main 下的全部文件及文件夹移动到工程文件夹iReader/app/src/main下。
3.将用winrar解压得到的 lib/ 文件夹移动到工程文件夹 iReader/app/src/main 下,并重命名lib文件夹为jniLibs。
4.将重新打包的a.jar文件移动到工程文件夹 iReader/app/libs 下。
5.将网上下载的支付宝API程序包 alipaySdk-20180601.jar 移动到工程文件夹 iReader/app/libs 下。
源文件导入好后,回到 Android Studio界面,编辑 /app/build.gradle文件,将 dependencies 模块编辑为:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation files('libs/alipaySdk-20180601.jar')
implementation files('libs/a.jar')
}
五、总结
经过以上步骤,iReader的反编译及重新编译的工程准备工作已经完成。调试编译运行的过程,请期待下一章。