欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

从零开始学Android应用安全测试(Part3)

来源:本站整理 作者:佚名 时间:2015-04-04 TAG: 我要投稿

在此之前,你的理解安卓应用程序中的组件是何方神圣。安卓组件是构成安卓应用的基础,这些组件都可以在安卓manifest.xml文件中去配置。这里我们简单的介绍其中四种相对来说较为重要的组件。
组件                        描述
Activities                     控制用户UI,处理用户在智能手机屏幕上的交互
Services                      无须可视化界面,提供后台长时运行的功能
Broadcast Receivers                处理安卓应用程序与安卓系统之间的通信
Content Providers                 处理数据与数据库之间的管理问题
Activities
一个Activity组件代表一个简单的用户界面。举例子说,Email应用可能有一个Activity组件用来显示新邮件列表,一个Activity组件用来写邮件,再有一个Activity组件用来读取邮件。一个Activity是一个界面,多个Activity表示多个界面。
一个Activity作为Activity class的子类执行,如下
public class MainActivity extends Activity {
}
Services
Services是一个提供后台长时间运行的组件。比如当你在听音乐的时候你依旧可以正常使用其他应用,再或者你也能够打开网络连接上网,而不影响用户的交互行为。
一个Services作为Services Class的子类执行,如下
public class MyService extends Service {
}
Broadcast Receivers
广播只是回应来自系统或者其他应用的广播消息。比如,应用程序可以启动广播告知其他应用设备中已经存在的数据,以及可以使用的数据等等。
一个Broadcast Receivers作为Broadcast Receivers Class的子类执行,如下
public class MyReceiver extends BroadcastReceiver {
}
Content Providers
Content Providers组件存储和取得数据,以及让它对所有应用程序可见。Android整理了一大堆content provider给公共数据类型(音频、视频、图像、联系人信息等等)。
一个Content Providers作为Content Providers Class的子类执行。必须使用一个标准的API,这样其他应用程序才能执行协议
public class MyContentProvider extends ContentProvider {
}
附加组件
以下这些组件可能我们也会用到,这里暂且简单的介绍一下。
组件                        介绍
Fragments                     Fragment表现Activity中用户界面的一个行为或者是一部分。
Views                       是最基本的UI类,基本上所有的高级UI组件都是集成子View类的实现。
Layouts                      Layout 是一个可横向和纵向排列布局的一个容器,布局组件。
Intents                      Intent本身为一个数据载体,可以描述想要执行的操作以及用于这个操作的数据和其它属性
Resources                     外部元素,比如字符串,常量,图片等等。
Manifest                      应用配置文件
Android:exported
组件的中最重要的属性就是android:exported,以下文字来自于安卓官方文档
这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。
因此,如果一个Activity属性为exported,那么他就可以调用外部应用程序。为了测试InsecureBank应用中的Activity,我们首先打开Genymotion模拟器中的InsecureBank应用并启动后端服务。

一旦我们启动这个应用,我们就可以看到这个登录界面。如果登录成功过后activity的属性为exported,我们就可以直接调用activity

接着我们来看看manifest文件,或许我们能够找到相关的activity。如下图所示,首先使用apktool解压应用

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载