一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于沙箱捕获Android应用交互行为的方法与流程

2022-05-11 12:57:39 来源:中国专利 TAG:

一种基于沙箱捕获android应用交互行为的方法
技术领域
1.本发明属于通讯的技术领域,特别涉及一种基于基于沙箱捕获android应用交互行为的方法。


背景技术:

2.随着移动网络的快速发展,越来越多的行业将业务系统引入到移动互联网终端,基于移动终端设备的内存、cpu等资源快速的提升,越发庞大的业务量使得应用程序得以在移动终端上运行。
3.如苹果的ios系统、android系统都可以兼容很多应用软件,在这些应用软件的应用中,存在着很多信息交互的行为,这些交互行为是通过网络交换数据包的形式来实现的。
4.如专利申请202011223889.1公开的一种实现智能交互大屏快速开机的方法,所述智能交互大屏具有android操作系统和windows操作系统,方法包括:智能交互大屏上电并按下开机键后,启动引导加载程序;引导加载程序启动完成后,启动实时操作系统,实时操作系启动完成后,同时启动系统框架开机视频和windows操作系统;取消桌面应用的启动,系统框架、开机视频和windows操作系统启动完成后,启动教学播放器,教学播放器启动完成后,智能交互大屏完成开机。本发明缩短了智能交互大屏的开机时间。
5.又如专利申请202110611495.1公开了一种用于android系统的多蓝牙交互方法及系统,通过在android原生的蓝牙bluetooth apk的基础上,增加一个扩展蓝牙服务bluetoothext apk;在android原生fw接口android.bluetooth的基础上,增加一个扩展接口包bluetoothext,进而将蓝牙通信的aidl服务接口扩展为ext类型的接口文件,通过扩展的bluetooth manager serviceext来启动扩展蓝牙进程bluetoothext的服务的方式,在原生拦他模块的基础上新增扩展蓝牙模块,从而满足多蓝牙模块同时交互的需求,由于兼容的设计,也进一步提升了开发效率,节约了开发成本。
6.然而,目前对android app应用分析它在交互行为内容,基本是通过网络抓包的方式捕获交互行为信息。通过抓包也只能看到android app应用交互的表面内容(例如:url请求链接、请求参数、响应参数、以及交互明文数据),并不能更加深层次的发现该次交互的代码层调用与处理逻辑。在解决交互上的问题,不能直观提供问题所在根源,也不能侧面的证明问题。


技术实现要素:

7.为解决上述问题,本发明的首要目的在于提供一种基于沙箱捕获android应用交互行为的方法,该方法能够发现该次交互的代码层调用与处理逻辑,在解决交互上的问题,能够直观提供问题所在根源。
8.本发明的另一目的在于提供一种基于沙箱捕获android应用交互行为的方法,该方法利用沙箱技术,通过hook、反射、代理技术将系统服务代理替换为自定义的系统服务代理,:pn进程的目标应用hook所有的系统服务代理,应用进程与:x进程的虚拟服务进行通
信。
9.申请人发现:所有android app应用都是运行在framework层上,它实际是android的一个核心进程system server(system_process),启动system server会启动一系列的核心服务,如ams,wms,pms等。
10.利用沙箱技术,改变android app应用与android os之间的交互方式,将android app应用运行沙箱中,实现的就是虚拟一个system_process进程并实现自定义的虚拟服务,可以通过在沙箱中预置对使用权限和http访问url的hook点,捕获android app应用在行为交互过程中的栈信息。
11.为实现上述目的,本发明的技术方案如下。
12.一种基于沙箱捕获android应用交互行为的方法,该方法通过虚拟一个system_process进程并实现自定义的虚拟服务,然后通过在沙箱中预置对使用权限和http访问url的hook点,捕获android app应用在行为交互过程中的栈信息。
13.所述方法首先设置va main及va:x,其中:
14.va main:即virtual app的主程序;
15.va:x:virutal app体系中虚拟服务对象的提供者;
16.而virtual app在启动plugin时,获得virtual service代理对象;并通过virtaul:x这个进程与android系统service对象发生沟通。
17.进一步,在va:x进程中,在源码中加入两个功能模块用于实现以下功能:
18.i.app应用权限申请操作的日志;
19.ii.app应用http访问url的日志。
20.更进一步,为了保证va:x核心功能和业务功能的松耦合:
21.i.va:x通过hook点收集权限申请和http访问url交互栈信息数据,通过本地格式化文件和外部的app进行数据交互;
22.ii.service priority hooker模块和http hooker模块向关键的virtual service对象中添加hook,在关键函数被调用时,添加的hook函数首先被调用,此时获取调用行为交互栈信息;
23.iii.格式化消息写入消息队列,由msg writer线程将消息输出sqlite。
24.进一步,具体流程为:
25.步骤一,va:main程序启动,启动时会主动调起va:x进程。va:x进程启动,android沙箱环境就就绪了。
26.步骤二,上传android app应用进行行为信息捕获,通过va:main启动android app应用进程,进行app的各种操作,存在于va:x中的权限和url模块就会输出日志;
27.步骤三,启动va:x进程,启动时会读入该进程中的权限和url检测的模块配置文件,以便系统功能可以正常运行;
28.步骤四,创建的vritual service对象,启动plugin,通过va:x创建的vritual service对象和android os进行交互。
29.步骤五、共享文件,在android app应用运行过程中,va:x会产生消息缓存文件,使用sqlite做进程间的数据库共享。
30.本发明的有益效果在于:
31.利用沙箱技术,通过hook、反射、代理技术将系统服务代理替换为自定义的系统服务代理,:pn进程的目标应用hook所有的系统服务代理,应用进程与:x进程的虚拟服务进行通信。
附图说明
32.图1是本发明所实现的总体框图。
33.图2是本发明所实现的总体流程图。
34.图3是本发明所实现的总体线程模型图。
具体实施方式
35.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
36.图1所示,本发明在android app应用与android os间设置了va:x,通过va main实现控制。具体地说:
37.va main:即virtual app的主程序;
38.va:x:virutal app体系中虚拟服务对象的提供者;
39.正常的app是直接跟android提供的系统服务进行交互而获取各种操作系统的支持的。
40.而virtual app在启动plugin(图1中的android app应用)时,并没有直接获得系统的服务,而是获得的virtual app自己实现的virtual service代理对象。
41.和真实的android系统service对象发生沟通的是virtaul:x这个进程。
42.其中:
43.1)在va:x进程中,在源码中加入两个功能模块用于实现以下功能:
44.i.app应用权限申请操作的日志。
45.ii.app应用http访问url的日志。
46.2)为了保证va:x核心功能和业务功能的松耦合:
47.i.va:x通过hook点收集权限申请和http访问url交互栈信息数据,通过本地格式化文件和外部的app进行数据交互。
48.ii.service priority hooker模块和http hooker模块向关键的virtual service对象中添加hook,在关键函数被调用时,添加的hook函数首先被调用,此时获取调用行为交互栈信息。
49.iii.格式化消息写入消息队列,由msg writer线程将消息输出sqlite。
50.结合图2所示,总体数据流为:
51.1)va:main程序启动时会主动调起va:x进程。va:x进程启动,android沙箱环境就就绪了。上传android app应用进行行为信息捕获,则会主动的通过va:main启动android app应用进程,进行app的各种操作,存在于va:x中的权限和url模块就会输出日志;
52.2)va:x进程启动时会读入该进程中的权限和url检测的模块配置文件,以便系统功能可以正常运行;
53.3)vitual app的原理说明中提到plugin启动后会通过va:x创建的vritual service对象和android os进行交互。
54.4)在android app应用运行过程中,va:x会产生消息缓存文件,使用sqlite做进程间的数据库共享。
55.结合图3所示,总体线程模型为:
56.1)在va:x进程中添加了service hooker,相当于是注册了很多的回调函数,当系统关键接口被调用时,回调接口就会被调用。回调接口会将调用的信息整理成消息input到message queue中;
57.2)va:x中存在一个消息输出的线程,不断的轮询message queue,当message queue中有消息时,则会格式化消息,并输出到sqlite数据库。
58.具体地说,app应用权限申请操作的日志如下:
59.1)说明:读取手机状态和身份
60.2)权限申请:read_phone_stat
61.3)hook点:telephonymanager类getdeviceid方法
62.4)行为栈信息:
63.java.lang.throwable
64.at plugin.lab.galaxy.demehookplugin.hook_telephonymanager_getdeviceid.hook(ho ok_telephonymanager_getdeviceid.java:15)
65.at com.tencent.smtt.utils.b.c(unknown source)
66.at com.tencent.smtt.sdk.tbslogreport.a(unknown source)
67.at com.tencent.smtt.sdk.tbslogreport.a(unknown source)
68.at com.tencent.smtt.sdk.aw.handlemessage(unknown source)
69.at android.os.handler.dispatchmessage(handler.java:102)
70.at android.os.looper.loop(looper.java:154)
71.at android.os.handlerthread.run(handlerthread.java:61)
72.5)交互内容(设备id):640310359556315
73.app应用http访问url的日志,如下:
74.1)说明:获取通讯行为
75.2)请求域名和ip地址:alog.umeng.com ip:8.211.35.113
76.3)hook点:urlconnection类getoutstream、getinputstream方法
77.4)行为栈信息:
78.java.lang.throwable
79.at plugin.lab.galaxy.demehookplugin.hook_urlconnection_http_getoutstream.hook(hook_urlconnection_http_getoutstream.java:28)
80.at com.umeng.analytics.pro.av.a(networkhelper.java:210)
81.at com.umeng.analytics.pro.av.a(networkhelper.java:136)
82.at com.umeng.analytics.pro.ba.c(sender.java:190)
83.at com.umeng.analytics.pro.ba.a(sender.java:95)
84.at com.umeng.analytics.pro.ap.d(cacheimpl.java:658)
85.at com.umeng.analytics.pro.ap.a(cacheimpl.java:122)
86.at com.umeng.analytics.pro.aq$1.a(cacheservice.java:44)
87.at com.umeng.analytics.pro.bz.run(saferunnable.java:8)
88.at java.util.concurrent.executors$runnableadapter.call(executors.java:428)
89.at java.util.concurrent.futuretask.run(futuretask.java:237)
90.at java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run(sched uledthreadpoolexecutor.java:272)
91.at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1133)
92.at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:607)
93.at java.lang.thread.run(thread.java:761)
94.5)交互内容:
95.{"header":"{content-type=[envelope/json],msg-type=[envelope/json],x-umeng-sdk=[android/6.1.4%e5%b0%8f%e5%ae%9d%e9%94%80%e5%94%ae%2f2.2.5 pixel%2f7.1.2 c6c404df9ee54775a19b506c25fc6166],x-umeng-utc=[1615874381321]}","body":"0x18 0x03 0x31 0x2e 0x300x18
……
0x38 0x15 0x00 0x00"}
[0096]
总之,本发明利用沙箱技术,通过hook、反射、代理技术将系统服务代理替换为自定义的系统服务代理,:pn进程的目标应用hook所有的系统服务代理,应用进程与:x进程的虚拟服务进行通信。
[0097]
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献