Android测试之基础测试

发布于 11 天前  48 次阅读


Android测试之基础测试

通常在我们在做应用系统测试前期会进行信息收集工作、那么我们在接到APP测试任务时也会进行相关信息收集工作。

基础信息收集

aapt 是Android Asset Packaging Tool的缩写,是编译和打包资源的工具。通常可以使用其来获取一些app的基础信息。

在这里 name为软件包名称 versionName为软件版本号信息

package: name='com.aishangxp.mpecv' versionCode='23' versionName='7.4.0' compileSdkVersion='28' compileSdkVersionCodename='9'

uses-permission 为软件运行所需权限信息

Android-权限列表信息

android.permission.ACCEPT_HANDOVER允许呼叫应用继续在另一个应用中启动的呼叫。
android.permission.ACCESS_CHECKIN_PROPERTIES允许对签入数据库中的“属性”表进行读/写访问,以更改上载的值。
android.permission.ACCESS_COARSE_LOCATION允许应用访问大概的位置。
android.permission.ACCESS_FINE_LOCATION允许应用访问精确的位置。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供程序命令。
android.permission.ACCESS_NETWORK_STATE允许应用程序访问有关网络的信息。
android.permission.ACCESS_NOTIFICATION_POLICY对希望访问通知政策的应用程序的标记许可。
android.permission.ACCESS_WIFI_STATE允许应用访问有关Wi-Fi网络的信息。
android.permission.ACCOUNT_MANAGER允许应用程序调用AccountAuthenticators。
android.permission.ADD_VOICEMAIL允许应用程序将语音邮件添加到系统中。
android.permission.ANSWER_PHONE_CALLS允许该应用接听来电。
android.permission.BATTERY_STATS允许应用收集电池统计信息
android.permission.BIND_ACCESSIBILITY_SERVICE必须由an所要求AccessibilityService,以确保只有系统可以绑定到它。
android.permission.BIND_APPWIDGET允许应用程序告诉AppWidget服务哪个应用程序可以访问AppWidget的数据。
android.permission.BIND_AUTOFILL_SERVICE必须由a所要求AutofillService,以确保只有系统可以绑定到它。
android.permission.BIND_CARRIER_MESSAGING_SERVICE此常数在API级别23中已被弃用。请BIND_CARRIER_SERVICES改为 使用
android.permission.BIND_CARRIER_SERVICES允许绑定到运营商应用程序中的服务的系统进程将拥有此权限。
android.permission.BIND_CHOOSER_TARGET_SERVICE必须由a所要求ChooserTargetService,以确保只有系统可以绑定到它。
android.permission.BIND_CONDITION_PROVIDER_SERVICE必须由a所要求ConditionProviderService,以确保只有系统可以绑定到它。
android.permission.BIND_DEVICE_ADMIN设备管理接收方必须提供此信息,以确保只有系统才能与其交互。
android.permission.BIND_DREAM_SERVICE必须由an所要求DreamService,以确保只有系统可以绑定到它。
android.permission.BIND_INCALL_SERVICE必须由a所要求InCallService,以确保只有系统可以绑定到它。
android.permission.BIND_INPUT_METHOD必须由an所要求InputMethodService,以确保只有系统可以绑定到它。
android.permission.BIND_MIDI_DEVICE_SERVICE必须由an所要求MidiDeviceService,以确保只有系统可以绑定到它。
android.permission.BIND_NFC_SERVICE必须由a HostApduService 或OffHostApduService必须确保只有系统可以绑定到它。
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE必须由an所要求NotificationListenerService,以确保只有系统可以绑定到它。
android.permission.BIND_PRINT_SERVICE必须由a所要求PrintService,以确保只有系统可以绑定到它。
android.permission.BIND_QUICK_SETTINGS_TILE允许应用绑定到第三方快速设置切片。
android.permission.BIND_REMOTEVIEWS必须由a所要求RemoteViewsService,以确保只有系统可以绑定到它。
android.permission.BIND_SCREENING_SERVICE必须由a所要求CallScreeningService,以确保只有系统可以绑定到它。
android.permission.BIND_TELECOM_CONNECTION_SERVICE必须由a所要求ConnectionService,以确保只有系统可以绑定到它。
android.permission.BIND_TEXT_SERVICE必须由TextService(例如
android.permission.BIND_TV_INPUT必须由a TvInputService 确保只有系统可以绑定到它。
android.permission.BIND_VISUAL_VOICEMAIL_SERVICE必须通过链接VisualVoicemailService来确保只有系统可以绑定到它。
android.permission.BIND_VOICE_INTERACTION必须由a所要求VoiceInteractionService,以确保只有系统可以绑定到它。
android.permission.BIND_VPN_SERVICE必须由a所要求VpnService,以确保只有系统可以绑定到它。
android.permission.BIND_VR_LISTENER_SERVICE必须由an所要求VrListenerService,以确保只有系统可以绑定到它。
android.permission.BIND_WALLPAPER必须由a所要求WallpaperService,以确保只有系统可以绑定到它。
android.permission.BLUETOOTH允许应用连接到配对的蓝牙设备。
android.permission.BLUETOOTH_ADMIN允许应用程序发现并配对蓝牙设备。
android.permission.BLUETOOTH_PRIVILEGED允许应用程序在无需用户交互的情况下配对蓝牙设备,并允许或禁止电话簿访问或消息访问。
android.permission.BODY_SENSORS允许应用程序访问用户用来测量他/她身体内发生的事情的传感器的数据,例如心率。
android.permission.BROADCAST_PACKAGE_REMOVED允许应用程序广播应用程序包已被删除的通知。
android.permission.BROADCAST_SMS允许应用程式广播短讯收据通知。
android.permission.BROADCAST_STICKY允许应用程序广播粘性意图。
android.permission.BROADCAST_WAP_PUSH允许应用程式广播WAP PUSH收据通知。
android.permission.CALL_PHONE允许应用程式启动电话通话,无需通过拨号程式使用者介面让使用者确认通话。
android.permission.CALL_PRIVILEGED允许应用程式拨打任何电话号码(包括紧急电话号码),而无需通过拨号程式使用者介面让使用者确认所拨打的电话。
android.permission.CAMERA要求能够访问摄像机设备。
android.permission.CAPTURE_AUDIO_OUTPUT允许应用程序捕获音频输出。
android.permission.CAPTURE_SECURE_VIDEO_OUTPUT允许应用程序捕获安全的视频输出。
android.permission.CAPTURE_VIDEO_OUTPUT允许应用程序捕获视频输出。
android.permission.CHANGE_COMPONENT_ENABLED_STATE允许应用程序更改是否启用应用程序组件(非自己的应用程序组件)。
android.permission.CHANGE_CONFIGURATION允许应用程序修改当前配置,如区域设置。
android.permission.CHANGE_NETWORK_STATE允许应用程序更改网络连接状态。
android.permission.CHANGE_WIFI_MULTICAST_STATE允许应用程序进入Wi-Fi多播模式。
android.permission.CHANGE_WIFI_STATE允许应用更改Wi-Fi连接状态。
android.permission.CLEAR_APP_CACHE允许应用程序清除设备上所有已安装应用程序的缓存。
android.permission.CONTROL_LOCATION_UPDATES允许从收音机启用/禁用位置更新通知。
android.permission.DELETE_CACHE_FILES旧的权限,用于删除应用程序的缓存文件,不再使用,但表示我们悄悄忽略调用而不是抛出异常。
android.permission.DELETE_PACKAGES允许应用程序删除软件包。
android.permission.DIAGNOSTIC允许应用程序读取RW到诊断资源。
android.permission.DISABLE_KEYGUARD允许应用程序在不安全的情况下禁用键盘锁。
android.permission.DUMP允许应用程序从系统服务中检索状态转储信息。
android.permission.EXPAND_STATUS_BAR允许应用程序展开或折叠状态栏。
android.permission.FACTORY_TEST作为制造商测试应用程序运行,以root用户身份运行。
android.permission.FOREGROUND_SERVICE允许使用常规应用程序Service.startForeground。
android.permission.GET_ACCOUNTS允许访问帐户服务中的帐户列表。
android.permission.GET_ACCOUNTS_PRIVILEGED允许访问帐户服务中的帐户列表。
android.permission.GET_PACKAGE_SIZE允许应用程序找出任何包裹使用的空间。
android.permission.GET_TASKS此常数在API级别21中已弃用。不再强制执行。
android.permission.GLOBAL_SEARCH此权限可用于内容提供商以允许全局搜索系统访问其数据。
android.permission.INSTALL_LOCATION_PROVIDER允许应用程序将位置提供程序安装到位置管理器中。
android.permission.INSTALL_PACKAGES允许应用程序安装软件包。
android.permission.INSTALL_SHORTCUT允许应用程序在Launcher中安装快捷方式。
android.permission.INSTANT_APP_FOREGROUND_SERVICE允许即时应用创建前台服务。
android.permission.INTERNET允许应用程序打开网络套接字。
android.permission.KILL_BACKGROUND_PROCESSES允许应用程式致电 ActivityManager.killBackgroundProcesses(String)。
android.permission.LOCATION_HARDWARE允许应用程序在硬件中使用位置功能,例如geofencing api。
android.permission.MANAGE_DOCUMENTS允许应用程序管理对文档的访问,通常作为文档选择器的一部分。
android.permission.MANAGE_OWN_CALLS允许调用应用程序通过自我管理的ConnectionServiceAPI 管理自己的调用 。
android.permission.MASTER_CLEAR不适用于第三方应用程序。
android.permission.MEDIA_CONTENT_CONTROL允许应用程式知道正在播放的内容并控制其播放。
android.permission.MODIFY_AUDIO_SETTINGS允许应用修改全局音频设置。
android.permission.MODIFY_PHONE_STATE允许修改电话状态 - 开机,毫秒等。
android.permission.MOUNT_FORMAT_FILESYSTEMS允许将文件系统格式化为可移动存储。
android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许安装和卸载可移动存储的文件系统。
android.permission.NFC允许应用程序通过NFC执行I / O操作。
android.permission.NFC_TRANSACTION_EVENT允许应用程式接收NFC交易活动。
android.permission.PACKAGE_USAGE_STATS允许应用程序收集组件使用情况统计信息,声明权限意味着使用API的意图,并且设备的用户可以通过设置应用程序授予权限。
android.permission.PERSISTENT_ACTIVITY此常数在API级别9中已弃用。此功能将在未来删除; 请不要使用。允许应用程序使其活动持久化。
android.permission.PROCESS_OUTGOING_CALLS允许应用程序查看在拨出电话期间拨打的号码,并可选择将呼叫重定向到其他号码或完全中止呼叫。
android.permission.READ_CALENDAR允许应用程序读取用户的日历数据。
android.permission.READ_CALL_LOG允许应用程式读取使用者的通话记录。
android.permission.READ_CONTACTS允许应用程序读取用户的联系人数据。
android.permission.READ_EXTERNAL_STORAGE允许应用程序从外部存储读取。
android.permission.READ_FRAME_BUFFER允许应用程序拍摄屏幕截图,更一般地访问帧缓冲区数据。
android.permission.READ_INPUT_STATE此常数在API级别16中已弃用。使用此权限的API已被删除。
android.permission.READ_LOGS允许应用程序读取底层系统日志文件。
android.permission.READ_PHONE_NUMBERS允许读取设备的电话号码。
android.permission.READ_PHONE_STATE允许只读访问电话状态,包括设备的电话号码,当前的蜂窝网络信息,任何正在进行的呼叫的状态以及PhoneAccount在设备上注册的任何列表 。
android.permission.READ_SMS允许应用程式读取短讯。
android.permission.READ_SYNC_SETTINGS允许应用程式读取同步设定。
android.permission.READ_SYNC_STATS允许应用读取同步统计信息。
android.permission.READ_VOICEMAIL允许应用程序读取系统中的语音邮件。
android.permission.REBOOT需要能够重新启动设备。
android.permission.RECEIVE_BOOT_COMPLETED允许应用程序接收 Intent.ACTION_BOOT_COMPLETED系统完成引导后广播的内容。
android.permission.RECEIVE_MMS允许应用程式监控收到的彩信。
android.permission.RECEIVE_SMS允许应用程式接收短讯。
android.permission.RECEIVE_WAP_PUSH允许应用程序接收WAP推送消息。
android.permission.RECORD_AUDIO允许应用程序录制音频。
android.permission.REORDER_TASKS允许应用程序更改任务的Z顺序。
android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND允许伴随应用在后台运行。
android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND允许配套应用在后台使用数据。
android.permission.REQUEST_DELETE_PACKAGES允许应用程序请求删除软件包。
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS为了使用,应用程序必须持有权限 Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。
android.permission.REQUEST_INSTALL_PACKAGES允许应用程序请求安装软件包。
android.permission.RESTART_PACKAGES此常量在API级别8中已被弃用ActivityManager.restartPackage(String) 。不再支持API。
android.permission.SEND_RESPOND_VIA_MESSAGE允许应用程序(电话)向其他应用程序发送请求以处理传入呼叫期间的响应通过消息操作。
android.permission.SEND_SMS允许应用程式发送短讯。
android.permission.SET_ALARM允许应用程序广播一个意图为用户设置警报。
android.permission.SET_ALWAYS_FINISH允许应用程序控制放置在后台时是否立即完成活动。
android.permission.SET_ANIMATION_SCALE修改全局动画缩放因子。
android.permission.SET_DEBUG_APP配置应用程序进行调试。
android.permission.SET_PREFERRED_APPLICATIONS此常数在API级别7中已弃用。不再有用,请参阅 PackageManager.addPackageToPreferred(String) 详细信息。
android.permission.SET_PROCESS_LIMIT允许应用程序设置可运行的最大数量的(不需要的)应用程序进程。
android.permission.SET_TIME允许应用程序设置系统时间。
android.permission.SET_TIME_ZONE允许应用程序设置系统时区。
android.permission.SET_WALLPAPER允许应用程式设定墙纸。
android.permission.SET_WALLPAPER_HINTS允许应用程式设定壁纸提示。
android.permission.SIGNAL_PERSISTENT_PROCESSES允许应用程序请求将信号发送到所有持久性进程。
android.permission.STATUS_BAR允许应用程序打开,关闭或禁用状态栏及其图标。
android.permission.SYSTEM_ALERT_WINDOW允许应用使用该类型创建窗口 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,并显示在所有其他应用的顶部。
android.permission.TRANSMIT_IR允许使用设备的红外发射器(如果可用)。
android.permission.UNINSTALL_SHORTCUT此权限不再受支持。
android.permission.UPDATE_DEVICE_STATS允许应用更新设备统计信息。
android.permission.USE_BIOMETRIC允许应用使用设备支持的生物识别模式。
android.permission.USE_FINGERPRINT此常数在API级别28中已被弃用。应用程序应USE_BIOMETRIC改为 请求
android.permission.USE_SIP允许应用程序使用SIP服务。
android.permission.VIBRATE允许访问振动器。
android.permission.WAKE_LOCK允许使用电源管理器的WakeLocks让处理器免于睡眠或屏幕变暗。
android.permission.WRITE_APN_SETTINGS允许应用程序编写apn设置。
android.permission.WRITE_CALENDAR允许应用程序写入用户的日历数据。
android.permission.WRITE_CALL_LOG允许应用程序写入(但不读取)用户的通话记录数据。
android.permission.WRITE_CONTACTS允许应用程序写入用户的联系人数据。
android.permission.WRITE_EXTERNAL_STORAGE允许应用程序写入外部存储。
android.permission.WRITE_GSERVICES允许应用修改Google服务地图。
android.permission.WRITE_SECURE_SETTINGS允许应用程序读取或写入安全系统设置。
android.permission.WRITE_SETTINGS允许应用程序读取或写入系统设置。
android.permission.WRITE_SYNC_SETTINGS允许应用程序写入同步设置。
android.permission.WRITE_VOICEMAIL允许应用修改和删除系统中现有的语音邮件。

launchable-activity: name='com.uzmap.pkg.LauncherUI'  label='爱上小胖' icon=''

这里获取到的为其APP启动activity组件信息。

APP 解包信息

通常APP文件为apk后缀文件,但我们可直接将其后缀修改为zip格式进行解压。

其目录结构

Assets资源文件目录
libso文件库
META-INF签名文件信息
res资源文件目录
classes.dexjava 代码编译后产生的类似字节码的文件(dalvik 字节码)
AndroidManifest.xmlAndroid 配置文件,编译过程依然被转换为 AXML 格式。

这里我们可以借助jdk中的keytool 工具来打印证书信息

keytool -prntcert -v -file META-INF/CERT.RSA

这里可以看到其签名的所有者发布者等一些信息。

这里也可以通过so文件库即lib目录来判断其是否采用了第三方安全加固APP

libchaosvmp.so娜迦
libddog.so娜迦
libfdog.so娜迦
libedog.so娜迦企业版
libexec.so爱加密
libexecmain.so爱加密
ijiami.dat爱加密
ijiami.ajm爱加密企业版
libsecexe.so梆梆免费版
libsecmain.so梆梆免费版
libSecShell.so梆梆免费版
libDexHelper.so梆梆企业版
libDexHelper-x86.so梆梆企业版
libprotectClass.so360
libjiagu.so360
libjiagu_art.so360
libjiagu_x86.so360
libegis.so通付盾
libNSaferOnly.so通付盾
libnqshield.so网秦
libbaiduprotect.so百度
aliprotect.dat阿里聚安全
libsgmain.so阿里聚安全
libsgsecuritybody.so阿里聚安全
libmobisec.so阿里聚安全
libtup.so腾讯
libexec.so腾讯
libshell.so腾讯
mix.dex腾讯
lib/armeabi/mix.dex腾讯
lib/armeabi/mixz.dex腾讯
libtosprotection.armeabi.so腾讯御安全
libtosprotection.armeabi-v7a.so腾讯御安全
libtosprotection.x86.so腾讯御安全
libnesec.so网易易盾
libAPKProtect.soAPKProtect
libkwscmm.so几维安全
libkwscr.so几维安全
libkwslinker.so几维安全
libx3g.so顶像科技
libapssec.so盛大
librsprotect.so瑞星

也可以通过脚本方式来进行自动检测

AndroidManifest.xml 文件解析

通过修改后缀方式解压得到的AndroidManifest.xml 文件是无法直接打开查看的,我们需要通过AXMLPrinter2文件进行转换。

java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

这里我们可以通过查看allowBackup Debuggable 属性是否为true,若为true则APP存在可被调试以及可备份漏洞。

这里Debuggable属性如未配置则存在另外一种情况即app在编译打包时存在两种方式,一种为debug版本一种Release版本。

总结:通过以上的相关信息收集我们可以得知其APP名称,权限以及部分常见漏洞信息,对我们后续进行工作提供帮助。


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。