1.关于反编译

目的是为了防止恶意人员利用反软件得到源码

一般的解决方式是:

开发人员会对代码进行混淆,混淆之后源代码通过反软件生成的源代码是很难读懂的。

测试人员的工作

1.将target.apk修改后缀名为target.zip进行解压

解压出来会出现各种资源文件和文件夹,以及dex文件(需要注意的是,解压出来的文件,资源文件(比如manifest等文件)都是一些二进制码,无法直接查看,如果想要查看的话可以利用Apktool工具进行操作)

2.利用解压出来的dex文件利用dex2jar逐个进行操作

常用命令: sh d2j-dex2jar.sh classes . dex 生成jar后缀文件

3.利用dex2jar生成的jar文件拖入JD-GUI即可查看源码

2.关于签名

这块IOS不用考虑,因为iOS应用在发布到App Store时会被苹果进行签名验证,因此在开发中可以不太考虑签名问题;而在Android平台上,由于缺乏类似苹果的权威检查,开发者需要在发布应用之前自行验证应用签名的正确性,以防止被恶意第三方应用覆盖安装等问题的发生。

测试人员的工作

利用下列命令
jarsigner -verify -verbose -certs YourApp.apk

若返回结果为jar已验证,那么说明签名校验成功

jarsigner 是用于执行JAR文件签名和验证的Java工具。

-verify 参数表示进行验证操作。

-verbose 参数表示以详细模式显示验证结果。

-certs 参数表示显示每个签名者的证书。

-YourApp.apk 是您的APK文件的路径和名称。

3.完整性校验

确保安装包在测试完成到最终交付过程中不会因为文件损坏而发生问题是非常重要的。对安装包进行完整性校验的一种常见做法是计算文件的MD5值(或其他哈希算法,如SHA-256),并在测试完成和最终交付之间进行比对。

通过计算文件的MD5值,您可以生成一个唯一的标识符,用于验证文件的完整性。在测试完成后,您可以保存安装包的MD5值,然后在最终交付之前重新计算安装包的MD5值,并与之前保存的值进行比对。如果两个值相同,则表示文件未发生变化,可以确保安装包的完整性。

自动化这个过程可以帮助确保校验的及时性和准确性,避免人为错误。您可以编写脚本或使用专门的工具来自动计算和比对MD5值,从而加强安全性和效率。

总之,通过对安装包进行MD5值校验,可以有效地确保安装包在测试完成到最终交付过程中不会因为文件损坏而发生问题,提高了应用发布的可靠性和安全性。

4.权限设置检查

一般用户对自己的隐私问题十 分敏感,因此,我们需要对APP申请某些特定权限的必要性进行检查,如访问通讯录等。对于没有必要的权限,一般都建议开发 直接支除。

Android:直接检查manifest文件来读取应用所需要的全部权限,并结合需求进行校验此权限是否为必须的。manifest文件的修改也需要关注,在增加新权限前需要进行评估。

IOS:没有类似manifest文件来查看,IOS的用户权限只有在用户使用APP到了需要使用的权限时,系统才会弹出提示框,提示用户当前APP需要访问照片、联系人列表等组件。我们可以扫描代码来查看项目工程中有哪些权限设置。通过搜索关键类名,如通讯录一般需要访问ABAddressBookRef,照片是UIImagePickerController等。如果是纯黑盒测试,则必须覆盖到所有代码路径才能保证没有遗漏,也可使用代码覆盖率测试判断是否覆盖。