想要开发一款安全的Android应用程序,最佳方法之一是进行渗透测试,其实际状况就是模拟攻击者对你的应用程序进行破解分析!首先、咱们设置测试环境;其次、咱们讨论一些工具和代理技术--Drozer,Apktool和“中间人”代理 - 在安全评估Android应用程序时派上用场;最后、咱们研究了Android的清单文件。html
在Android应用程序的渗透测试期间,一般须要修改应用程序的源代码以绕过SSL pinning SSL绑定,检查篡改保护,绕过应用程序逻辑等步骤。在本文中,咱们将介绍成功修改源代码的过程。安全
所需工具:
一、下载并设置Apktool
二、jarsigner
三、JD-GUI编辑器
步骤1:将代码转换为Smali格式
设置Apktool并使用如下命令拆卸APK。咱们使用了测试应用程序Sieve。
apktool d <你的apk路径这里> -o <输出路径>工具
反汇编的APK文件夹包含Smali文件。可使用任何文本编辑器修改这些文件,如如下屏幕所示:测试
您还可使用JD-GUI(将classes.dex文件转换为.jar格式)来标识要修改的类或方法,而后修补相应的Smali文件。加密
步骤2:从新打包APK
修改Smali代码后,您必须从新打包APK。使用如下命令:
apktool b <deassembled apk path> -o <output apk path>spa
Android要求每一个APK都要签名。任何未经签名的二进制文件都会致使传递错误。所以,下一步是建立一个密钥对,并使用该签名进行签名。代理
步骤3:建立并签署密钥调试
Keytool和Jarsigner包装在Java Development Kit包中,须要完成此步骤。使用此命令生成密钥:
keytool -genkey -v -keystore mykey.keystore -alias <任何别名> -keyalg RSA-keysize 2048 -validity 10000htm
在回答如下一系列问题后,将在C: Users <username>目录中建立一个密钥文件(mykey.keystore)。
建立密钥后,可使用如下命令对APK进行签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykey.keystore <apk path> alias_name
完成全部步骤后,从新包装的APK能够成功安装在设备上。
若是篡改后的APP可以正常运行,那么该APP存在被盗版的风险。安卓应用APK加密工具集成多项加密服务,包括Dex文件加密、SO文件加密、DLL文件加密、内存保护、反调试、防二次打包等功能。避免核心代码被破解,请求协议被伪造,被病毒感染,被植入恶意代码后重打包等诸多安全风险!