字节码修改方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:34372753 阅读:10 留言:0更新日期:2022-07-31 11:58
本申请涉及一种字节码修改方法、装置、计算机设备和存储介质,所述方法包括:获取class字节码文件;读取配置文件,配置文件中包含用户隐私信息调用方法的信息以及预设自定义方法的信息;遍历class字节码文件中所有方法的调用信息,将用户隐私信息调用方法的信息与class字节码文件中所有方法的调用信息进行匹配,基于匹配结果获得class字节码文件中目标用户隐私调用方法的字节码;将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码。上述方法能够在编译过程中将class字节码文件中用户隐私信息调用方法进行修改,提高软件项目中获取用户隐私信息的修改效率。效率。效率。

Bytecode modification method, device, computer equipment and storage medium

【技术实现步骤摘要】
字节码修改方法、装置、计算机设备和存储介质


[0001]本申请涉及字节码处理
,特别是涉及一种字节码修改方法、装置、计算机设备和存储介质。

技术介绍

[0002]随着App隐私数据获取管控的日益严峻,网信办等监管部门开展了多次针对App侵害用户隐私权益的专项整治工作,要求App获取个人信息应当具有明确、合理的目的,不得过度收集个人信息。对于软件项目中获取个人信息的源代码,可以按照要求进行修改,但软件项目中往往会集成很多第三方SDK(例如推送、定位、统计、分享等),这些第三方SDK中也会有获取个人信息的行为,这些第三方SDK源代码不能直接修改,从而软件项目中产生的软件无法满足网信办的合规要求。
[0003]解决第三方SDK获取个人信息问题,目前有两种方案:
[0004]其一、推动SDK供应商整改方案。该方案,分别向不合规的SDK供应商提需求,供应商整改后使用升级合规的SDK版本,缺点如下:
[0005]供应商较多,效率低。
[0006]进度不可控,依赖第三方。
[0007]有些信息为SDK必需。
[0008]其二、修改SDK源代码方案。该方案,第三方SDK源代码不能直接修改,需要借助反编译工具,分别对不合规的SDK进行反编译、修改源代码完成合规、再次打包,缺点如下:
[0009]过程繁琐、效率低。
[0010]SDK大多经过混淆,阅读困难。
[0011]以后升级SDK版本,需要再次修改。

技术实现思路

[0012]基于此,有必要针对上述技术问题,提供一种字节码修改方法、装置、计算机设备和存储介质,能够在编译过程中将class字节码文件中用户隐私信息调用方法进行修改,不影响原来软件项目中获取用户隐私信息的设置逻辑,提高软件项目中获取用户隐私信息的修改效率。
[0013]一种字节码修改方法,包括:获取class字节码文件;读取配置文件,配置文件中包含用户隐私信息调用方法的信息以及预设自定义方法的信息;遍历class字节码文件中所有方法的调用信息,将用户隐私信息调用方法的信息与class字节码文件中所有方法的调用信息进行匹配,基于匹配结果获得class字节码文件中目标用户隐私调用方法的字节码;将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码。
[0014]在其中一个实施例中,class字节码文件通过对项目源代码、依赖的资源文件以及第三方SDK源代码中的一项或多项进行编译得到。
[0015]在其中一个实施例中,class字节码文件通过对包含第三方SDK源代码的代码文件
进行编译得到,用户隐私信息调用方法包括第三方SDK源代码中设置的用户隐私调用方法,预设自定义方法包括钩子函数的调用方法;或,class字节码文件通过对包含项目源代码的代码文件进行编译得到,用户隐私信息调用方法包括项目源代码中设置的用户隐私调用方法,预设自定义方法包括钩子函数的调用方法。
[0016]在其中一个实施例中,预设自定义方法的信息包括同意或不同意隐私协议、缓存或不缓存信息、返回虚拟信息、拦截所述用户隐私信息调用方法的调用中的一项或多项信息。
[0017]在其中一个实施例中,将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码的步骤之后,还包括:将修改操作后得到的class字节码文件转换成dex文件;将dex文件存入apk包中。
[0018]在其中一个实施例中,获取class字节码文件,包括:在Gradle插件注册自定义Transform对象;使用Transform对象获取class字节码文件。
[0019]在其中一个实施例中,遍历class字节码文件中所有方法的调用信息,包括:采用字节码操控框架ASM框架遍历class字节码文件中所有方法的调用信息;将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码,包括:采用字节码操控框架ASM框架将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码。
[0020]一种字节码修改装置,包括:获取模块,用于获取class字节码文件;读取模块,用于读取配置文件,配置文件中包含用户隐私信息调用方法的信息以及预设自定义方法的信息;匹配模块,用于遍历class字节码文件中所有方法的调用信息,将用户隐私信息调用方法的信息与class字节码文件中所有方法的调用信息进行匹配,基于匹配结果获得class字节码文件中目标用户隐私调用方法的字节码;修改模块,用于将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码。
[0021]一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
[0022]一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
[0023]上述字节码修改方法、装置、计算机设备和存储介质,获取class字节码文件,读取配置文件,配置文件中包含用户隐私信息调用方法的信息以及预设自定义方法的信息,遍历class字节码文件中所有方法的调用信息,将配置文件中用户隐私信息调用方法的信息与class字节码文件中所有方法的调用信息进行匹配,基于匹配结果获得class字节码文件中目标用户隐私调用方法的字节码,将目标用户隐私调用方法的字节码修改为预设自定义方法的信息对应的字节码。因此,能够在编译过程中将class字节码文件中用户隐私信息调用方法进行修改,不影响原来软件项目中获取用户隐私信息的设置逻辑,提高软件项目中获取用户隐私信息的修改效率。
附图说明
[0024]图1为一个实施例中一种字节码修改方法的应用环境图;
[0025]图2为一个实施例中一种字节码修改方法的流程示意图;
[0026]图3为一个具体实施场景中一种字节码修改方法的流程示意图;
[0027]图4为一个实施例中配置文件格式的界面示意图;
[0028]图5为一个实施例中一种字节码修改装置的结构框图;
[0029]图6为一个实施例中计算机设备的内部结构图。
具体实施方式
[0030]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0031]术语解释:
[0032]Android:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
[0033]SDK:指软件开发工具包,是辅助开发某一类软件的相关文档、范例和工具的集合,第三方SDK指有第三方公司提供的软件开发工具包。
[0034]class字节码文件:由java、kotlin源码编译生成,可供虚拟机解释执行的二进制字节码文件。
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种字节码修改方法,所述方法包括:获取class字节码文件;读取配置文件,所述配置文件中包含用户隐私信息调用方法的信息以及预设自定义方法的信息;遍历所述class字节码文件中所有方法的调用信息,将所述用户隐私信息调用方法的信息与所述class字节码文件中所有方法的调用信息进行匹配,基于匹配结果获得所述class字节码文件中目标用户隐私调用方法的字节码;将所述目标用户隐私调用方法的字节码修改为所述预设自定义方法的信息对应的字节码。2.根据权利要求1所述的方法,其特征在于,所述class字节码文件通过对项目源代码、依赖的资源文件以及第三方SDK源代码中的一项或多项进行编译得到。3.根据权利要求2所述的方法,其特征在于,所述class字节码文件通过对包含所述第三方SDK源代码的代码文件进行编译得到,所述用户隐私信息调用方法包括所述第三方SDK源代码中设置的用户隐私调用方法,所述预设自定义方法包括钩子函数的调用方法;或,所述class字节码文件通过对包含所述项目源代码的代码文件进行编译得到,所述用户隐私信息调用方法包括所述项目源代码中设置的用户隐私调用方法,所述预设自定义方法包括钩子函数的调用方法。4.根据权利要求1所述的方法,其特征在于,所述预设自定义方法的信息包括同意或不同意隐私协议、缓存或不缓存信息、返回虚拟信息、拦截所述用户隐私信息调用方法的调用中的一项或多项信息。5.根据权利要求1所述的方法,其特征在于,所述将所述目标用户隐私调用方法的字节码修改为所述预设自定义方法的信息对应的字节码的步骤之后,还包括:将修改操作后得到的class字节码文件转换成dex文件;将所述dex文件存入ap...

【专利技术属性】
技术研发人员:王豪
申请(专利权)人:上海数禾信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1