暂时先写这么多,有时间慢慢加一些进去
环境配置:java 8(jdk1.8) 以上
一、反编译查看代码:
1、使用工具:dex2jar
该工具文件夹下执行命令:(当前目录打开命令窗口,按住shift+鼠标右键)
./d2j-dex2jar.bat xx.apk //执行命令后输出一个名为xx-dex2jar.jar的包
2、然后用jd-gui或者luyten工具打开jar包可查看代码
使用时候互为补充。个人喜欢先用jd-gui,先看个大概结构,如果出现jd-gui打开代码文件出现INTERNAL ERROR 的错误提示,说明反编译失败,转用 Luyten就能查看。搜索一些内容时会常用Luyten
二、反编译:
1、使用工具:apktool
https://ibotpeaches.github.io/Apktool/install/ 要使用这个工具需要把工具目录加入系统变量
//该工具目录下执行命令:
apktool.bat d xx.apk //执行命令后输出一个文件夹,与上面反编译查看的代码对应
这时,可对文件夹中代码进行修改或其他操作。
2、APP评估中可在该文件夹中AndroidManifest.xml文件中检查的两项:
(1)allowbackup备份权限,ture则存在备份数据泄露风险(未配置的情况下,默认为TRUE)
(2)Debuggable属性,true则存在应用信息篡改泄露风险(未配置的情况下,默认为FALSE)
3、APP评估中可在该文件夹下检查开发者证书,位于original / META-INF下的RSA文件:
(1)开发者证书不规范,导致开发者身份信息不明(根据单位需求评估)
.\keytool.exe -printcert -file .\CERT.RSA //Java安装目录下自带工具keytool
4、APP评估中可在xx文件夹中修改某些内容以检查代码保护不足项:
(1)可以重新编译打包(可修改其中某些.smali文件后重新编译、签名并安装)
三、APK信息
1、使用工具:GetApkInfo
可查看APK信息,包括app版本、MD5等。
java -jar GetApkInfo.jar XX.apk //查看APK信息及签名版本
2、APP评估中可检查是否存在Janus漏洞
(1)Janus漏洞(基于Janus漏洞,攻击者可以修改APP而不影响其原始签名,篡改后的APP可以成功安装运行。应同时使用V1+V2签名)
四、反汇编:
1、使用工具:apktool
简称打包,对代码进行修改后重新打包。
apktool.bat b xx (xx为反编译后的目录)
//反汇编后xx目录下多出两个文件夹build和dist,其中dist下的apk文件为重新打包后的apk
五、签名:
将重新打包后的apk重新签名:
java安装目录下自带签名工具可签名:
.\keytool.exe -genkey -alias D:\abc.keystore123 -keyalg RSA -validity 20000 -keystore D:\abc.keystore123
//编写签名,密钥库口令可随便设置,应用时也需要输入。完成设置后询问是否正确时输入Y可保存,直接回车可修改。保存时会再次验证密钥库口令,与上一致即可。
.\keytool.exe -importkeystore -srckeystore D:\abc.keystore123 -destkeystore D:\abc.keystore123 -deststoretype pkcs12
//输入上条命令行会提示:JKS 密钥库使用专用格式。建议使用以下命令迁移到行业标准格式 PKCS12。
.\jarsigner.exe -verbose -keystore D:\abc.keystore123 "F:\APP Test\apktool\xx\dist\xx.apk" D:\abc.keystore123
//将这个签名应用到重新打包后的apk
图为设置签名: