第一次写博客简书之类的 ,下面使劲踩我。不足之处忘指出。
前言
最近对别人一个项目挺感兴趣,就反编译玩一玩。自己真正意义上反编译并且利用Android studio Debug反编译的项目。自己利用的很多工具,走了很多弯路,折腾了好几天,今天总结出来,给Android的同仁们一个可以的文档,也给自己做一个笔记。
测试环境:
Win10
工具:
jdk.1.8
Android Studio
环境搭建
下载最新apktool.jar 和apktool.bat 并放到同一目录下。在电脑环境变量里面配置apktool的路径。如下图:
安装 Android Studio 工具 (这个就不多说了)。
开始反编译:
Win+R 打开CMD命令窗口,输入:
apktool d C:\Users\xxx\Desktop\test.apk
反编译成功后如下图:
反编译成功后的的apk项目会在你电脑登陆的用户所在目录下如:C:\Users\xxx\test, test就是你apk的名称。如图:
其中smali就是反编译的项目代码。其中文件为.smali 。res 是资源文件。
重新打包
接下来就是准备回编译重新打包的工作了。打开AndroidManifest.xml 在application中加入并保存:
android:debuggable="true"
接下来就是重新打包了。
打开CMD窗口,输入(test为之前反编译后的项目路径):
apktool b C:\Users\xxx\test
此时,我们就已经打包成功了。在test(项目目录)会多出一个dist文件夹,文件夹中会有一个apk文件。就是我们打包好的文件了。
此时这个apk文件是未签名的apk,我们无法安装到手机或者模拟器中。此时就需要给它签名。
在CMD窗口中输入 如下命令并回车:
keytool -genkey -alias test.keystore -keyalg RSA -validity 40000 -keystore test.keystore
/*说明:-genkey 产生密钥
-alias test.keystore 别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 有效期限4000天
-keystore test.keystore */
然后输入密钥库口令:如123456 (自己随意写)
然后再次输入密钥库口令:如123456
然后一路回车,
...
当出现:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]:
然后输入:是 然后输入回车。
再此输入密钥口令。回车
输入 <-test.keystore> 的密钥口令
(如果和密钥库口令相同, 按回车):
到此,签名文件已经生成了,签名文件生成后的路径在:你电脑登陆的用户所在目录下如:C:\Users\xxx\test, test.keystore就是你apk的名称。如图:
好,接下来我们给我们未签名的APK进行签名。
在CMD窗口中输入如下命令并回车:
jarsigner -verbose -keystore C:\Users\xxx\test.keystore -signedjar test_signed.apk C:\Users\xxx\test\dist\test.apk test.keystore
/*注:-verbose 输出签名的详细信息
-keystore demo.keystore 密钥库位置
-signedjar test_signed.apk test.apk test.keystore 正式签名,三个参数中依次为签名后产生的文件test_signed,要签名的文件test.apk和密钥库test.keystore.*/
到此我们的apk已经签名成功了。如图:
到此我们的apk已经签名成功.
接下来我们把apk安装到手机。可以借用第三方工具安装如:应用宝或者豌豆荚
也可以用adb命令进行安装
adb install (apk在PC上的路径/)*.apk
这篇文章就到这里结束了,下一篇开始讲如何利用Android Studio debug反编译的项目