android渗透测试从0开始

android渗透测试从0开始

apktool安装与使用

安装

apktool反编译

反编译出代码到test文件夹

apktool d test.apk -o test

反编译报错:

I: Using Apktool 2.4.1 on xxx.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Administrator\AppData\Local\apktool\framework\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Baksmaling assets/A3AEECD8.dex...
Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 cd
        at org.jf.dexlib2.util.DexUtil.verifyDexHeader(DexUtil.java:93)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.getVersion(DexBackedDexFile.java:111)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:78)
        at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:138)
        at org.jf.dexlib2.dexbacked.ZipDexContainer$1.getDexFile(ZipDexContainer.java:181)
        at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:90)
        at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:39)
        at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:96)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:164)
        at brut.apktool.Main.cmdDecode(Main.java:170)
        at brut.apktool.Main.main(Main.java:76)
Press any key to continue . . .

解决办法:
增加 d --only-main-classe 即可

apktool d --only-main-classe test.apk -o test

修改代码

apktool编译成apk

apktool b test -o test2.apk

apk签名

去除签名

其实很简单,用WinRAR打开apk,找到META-INF文件夹,删除MANIFEST.MF之外的所有其他文件即可。

生成keystore文件

首先,签名需要keystore文件,可以使用keytool工具生成,一般Java环境都带有keytool命令。
要使用管理员权限运行cmd,不然会报错。

cd C:\Program Files\Java\jdk1.8.0_231\bin
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

各个参数解释如下:

-genkey 产生证书文件
-alias 产生别名
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
-validity 为证书有效天数,这里我们写的是40000天

jarsigner签名apk

jarsigner也存在于Java JDK的安装包当中,所以安装好了Java环境的话,可以直接在命令行使用。

jarsigner -verbose -keystore demo.keystore demo.apk demo.keystore
-verbose 指定生成详细输出
-keystore 指定数字证书存储路径

参考

apktool安装
apktool反编译报错
apk去掉签名
一步一步带你反编译apk,并教你修改smali和重新打包
apk签名教程