利索能及
我要发布
收藏
专利号: 202410727403X
申请人: 厦门旷世联盟网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2025-07-25
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.安卓手机移动端隐私保护下广告防护方法,其特征在于,结合移动广告生态系统中权限继承访问威胁,建立基于数据扰动的手机匿名广告防护方法,针对如何识别应用程序中的广告库、广告库代码拥有何种特权、如何在应用程序运行过程中识别当前调用来源问题,提出采取静态程序解析处理和动态运行监测相联合的方法,利用广告库特征码标识以识别函数调用栈中的特权调用来源,然后使用基于数据扰动的方法对广告库的特权调用进行模糊计算,并针对不同数据类型采用不同匿名规则对访问结果匿名化处理,解决广告库对于用户隐私的侵犯行为;

手机匿名广告防护由静态解析模块、动态监测模块和匿名保护模块构成,这三部分跨越安卓系统的应用程序层和应用程序框架层,其中静态解析模块又分为逆向计算、权限映射和匹配辨识三个部分,静态解析模块负责APK源文件的解析处理,并构建广告库‑权限表,动态监测模块新增安卓系统服务匿名广告防护Service,该服务在安卓系统启动时也随之启动,该服务中封装用于解析广告库‑权限表、动态捕获函数调用栈以及识别当前调用来源方法,匿名保护模块针对于广告库访问的敏感信息进行数据保护,其利用匿名广告防护Service系统服务中的方法识别调用来源为广告库后,根据不同数据类型采用不同匿名规则对数据进行扰动后返回给广告库,保护用户敏感信息,三大模块协同作用,防范广告SDK继承宿主应用权限访问敏感信息的行为。

2.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,手机匿名广告防护架构:重新架构利用权限访问本地资源,并将广告SDK利用宿主应用权限访问本地敏感资源的情形作为权限继承访问威胁,本申请从动态辨别特权方法调用者来源角度,构建基于数据扰动的手机匿名广告防护方法,采用安卓静态解析处理与动态监测相结合的方式,对于本地应用程序文件,采用静态解析与安卓逆向技术对移动应用广告库进行解析;

对于应用程序动态权限调用,利用新系统服务捕获调用栈并结合静态解析结果对调用结果进行数据扰动的模糊计算,阻止移动广告库滥用宿主应用程序访问细粒度本地资源。

3.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,整体结构:当用户使用应用程序功能时,在安卓架构上层中应用层代码调用框架层提供的API实现,应用程序框架层为应用层提供接口访问实现代码复用,在API调用时获取调用栈识别当前对敏感资源的访问的调用来源,手机匿名广告防护方法在应用层进行静态解析,在框架层进行动态监测,跨越安卓架构中的这两个层次;

静态解析模块、动态监测模块和匿名保护模块协同作用共同对广告库存在的敏感资源访问进行处理,具体包括:首先,应用程序在安装前经静态解析模块处理,解析广告库存在的敏感资源访问情况,并构建广告库‑权限表;其次,在应用运行过程中,对框架层提供的接口进行调用以实现资源访问或者数据处理,在应用程序框架层添加匿名广告防护系统,获得当前API调用栈进行动态监测,依据静态解析模块传递的广告库‑权限表,解析出当前调用是否来源于广告库,并将结果提交给匿名保护模块处理;最后,匿名保护模块接收动态监测模块的识别结果,如果当前调用来源于广告库,则根据匿名规则匹配返回扰动结果给框架层API,框架层API进而将扰动结果反馈给调用该接口的程序。

4.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,静态解析模块对嵌入移动广告库的应用程序apk文件进行静态解析,识别广告库的特征码,并构建广告库‑权限表,静态解析模块由三部分协同作用组成,分别是逆向计算、权限映射和匹配辨识,逆向计算子模块采用安卓静态反编译,将apk文件逆向转化为Java源文,以便后续审查解析;权限映射子模块实现安卓危险权限和关键类之间的映射,构建权限‑类表,提供给匹配辨识子模块进行后续操作;匹配辨识子模块首先识别逆向模块生成的Java源文件中的广告库特征码,然后将广告库特征码标识的包中的Java源文件与权限‑类表相匹配,找出广告库暴露的敏感权限,再根据PSCout提供的权限API映射列表,获知广告库可能存在的所有特权访问,最后生成广告库‑权限表。

5.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,动态监测模块结构:该模块在安卓应用程序框架层添加匿名广告防护系统,用于动态捕获函数调用栈,并提取当前函数调用栈的栈顶数据,与广告库‑权限表对比,若栈顶调用方法是来源于广告库的敏感权限访问,则记录在广告库调用结果中,并将结果提交给匿名保护模块处理,如果不存在广告库的敏感权限访问,则将调用结果直接返回给应用层不做其它特殊处理。

6.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,静态解析模块识别嵌入在应用中的广告库所包含的敏感高危权限,进而知晓广告库可能存在的特权方法调用,通过安卓反编译逆向出apk的源码,然后利用广告库特征码识别源码中的广告库代码,再根据广告库代码中的访问敏感权限的关键类匹配出广告库所包含的敏感权限,由三部分协同构成,逆向计算、权限映射以及匹配辨识,逆向子模块应用安卓流行静态反编译的解析技术得到应用程序的源代码,提供给匹配辨识模块进行后续处理,权限映射子模块为安卓高危权限构建权限‑类表,用以识别源码中的敏感权限关键调用,而匹配辨识子模块首先收集流行移动广告库的包名,作为移动广告库特征码;再利用特征码字段识别出应用程序源代码中的广告库代码;最后利用权限‑类表找到广告库代码中存在的敏感权限调用,三个子模块协同作用最后生成广告库‑权限表。

7.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,逆向模块实现:逆向模块获取安卓应用程序源码,以提供给匹配辨识模块进行处理,利用安卓反编译批量处理应用程序文件,将apk文件逆向转化为java源文件;

本申请选用的逆向路线为Java路线,采用dex2jar工具与jadx工具的组合使用方式,dex2jar工具把apk格式文件处理转化为jar格式,jadx工具把class格式文件处理转化为java格式,dex2jar工具和jadx工具均在命令行模式下运行,且dex2jar命令的输出是jar命令的输入条件,jar命令的输出是jadx命令的输入条件,在构建命令时使用“&&”拼接命令,再放入控制台执行以提高逆向模块的自动化性能,而反编译建立线程池使得多个线程同时进行以进一步提高逆向模块的效率。

8.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,匹配辨识模块实现:匹配辨识模块识别广告库特征码,再根据广告库特征码和安卓权限‑类表在应用程序源码中匹配出广告库代码具有的敏感权限,从而获知广告库代码可能存在的特权功能访问;

本申请考虑流行的移动广告库,在除去榜单中的聚合平台和代理平台后,收集剩余所有的移动广告公司提供的广告开发者软件工具包,并进行静态解析手动识别广告库的包名作为广告库特征码,通过广告库特征码,也即广告库包名来唯一识别应用程序中所引入的广告库;

在识别了广告库特征码后,在应用程序源码中找到所引入的广告库代码,进而找到广告库可利用的敏感权限吗,步骤如下:

步骤一:遍历源文件路径找到广告库特征码标识的文件集合;

步骤二:遍历广告库文件集合,匹配权限‑类表

步骤三:输出广告库具有的敏感权限;

手机匿名广告防护对文件夹和文件遍历进行优化,规则如下:

规则一:识别权限清单文档中是否包含INTERNET权限,包括不包括,终止遍历;

规则二:文件和文件夹遍历过程中忽略系统库文件夹;

在完成遍历后,广告库‑权限表以xml配置文件的形式进行存储。

9.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,动态监测模块在应用程序运行过程中动态捕获调用栈以识别当前敏感调用是否来源于广告库,本申请采用系统服务实现,新增Java系统服务来进行动态监测,框架层API调用该服务获得识别结果,并且该服务能够长期运行在安卓系统中;

修改安卓应用程序框架层源码,动态监测特权函数调用来源的系统服务类,添加IAnonymize.aidl文件﹐AnonymizeService.java文件实现IAnonymize.aidl中定义的接口以皮AnonymizeManager.java文件以供其它服务或者应用程序调用;

AnonymizeService为将静态解析模块识别的广告库‑权限表解析后存入广告库特征码数组中;利用安卓系统自定义CallStackTrace型异常类来对特权方法归属类进行堆栈追踪,取当前栈顶元素利用广告库特征码标识以识别当前调用是否来源于广告库,如果是则返回布尔值true标记当前权限调用返回结果;

在安卓系统启动时启动自定义系统服务AnonymizeService,将该服务注册到系统服务启动进程中,修改SystemServer.java文件将自定义服务添加到进程中;

接下来新建管理类AnonymizeManager用以调用service中的方法,该类中的成员变量即为自定义系统服务匿名广告防护Service,在管理类的构造函数中获取该服务实例便可在管理类的成员函数中使用服务中的方法,最后,在系统服务中进行注册,将AnonymizeManager和Anonymize_SERVICE通过IBinder机制绑定,实现管理类利用aidl接口调用系统服务中的方法。

10.根据权利要求1所述安卓手机移动端隐私保护下广告防护方法,其特征在于,匿名保护模块实现:针对于静态解析模块中识别的危险权限方法调用,利用动态监测模块中的匿名广告防护Service服务捕获当前函数调用栈,如果栈顶中的调用结果来源于广告库,则应用自定义匿名规则进行结果处理后返回给广告库;

在PBKDF2加密哈希算法基础上加以改进,算法中使用SecureRandom来生成盐附加在原始信息末尾,并对附加后的信息进行哈希后再返回给广告服务器,将SecureRandom高度随机化的值附加在原始信息之后,使得每次发送给广告服务器的值不同,降低广告服务器根据某一特定不变的值追踪用户的可能,经过附加盐值并哈希之后的字串已不再具有明显揭露用户隐私的特征,保护细粒度用户隐私信息不会暴露在广告网络中,针对调用ContentProvider组件中的查询方法获取的数据游标,对游标数据进行清空的匿名保护形式,针对安卓中的复合类型,匿名化处理为NULL,匿名规则的实现利用函数重载实现,当动态监测模块中的AnonymizeService系统服务识别到当前函数调用者为广告库时,则调用重载函数将调用结果匿名化后再返回;

当通过ContentProvider类查询数据时,通过ContentResolver对象与Provider进行通信,请求时间序列过程为:调用getContentResolver().query(Uri,String,String,String,String),该方法是调用ContentResolver中的query方法,当请求方法调用时,ContentResolver解析参数中的URI,并提取出其中的授权authority字段,该字段唯一标识安卓中的ContentProvider对象,ContentResolver将请求引导至利用authority注册的ContentProvider对象,然后再调用其中的查询方法获取数据,在调用ContentProvider中的请求方法后会返回Cursor对象,该对象中封装查询结果集;

匿名保护模块在ContentResolver类中注册匿名广告防护Service系统服务进行处理,首先在ContentResolver类的构造函数中获得AnonymizeService系统服务实例,在query操作中识别为广告库调用时返回扰动后的匿名数据;

MatrixCursor类型继承AbstractCursor类,AbstractCursor类最终实现Cursor接口,利用MatrixCursor类返回结果,MatrixCursor类在匿名保护中返回的Cursor对象即为对空表查询的结果,返回给上层,避免用户的隐私信息泄漏;

在应用程序运行过程中,广告库代码在广告视图初始化时获取了设备ID并发送给广告服务器,系统服务AnonymizeService动态监测到调用栈信息,AnonymizeService系统服务中的isAdsCaller()方法读取栈顶数据,并与广告库特征码匹配,识别出当前调用来源于广告库,即将广告库调用结果交由函数重载匿名化,在原始数据后附加盐值计算哈希值后予以返回。