一种修改变量内存布局的方法、装置及计算机设备制造方法及图纸

技术编号:24205907 阅读:14 留言:0更新日期:2020-05-20 14:39
本申请涉及一种修改变量内存布局的方法、装置及计算机设备,该方法在将应用的可执行文件及所依赖的动态库加载至系统内存后,进一步基于目标变量在所述可执行文件中对应的第一偏移以及所述可执行文件被加载时对应的随机偏移,确定出了所述目标变量的内存地址,在此基础上,最终基于确定的内存地址,修改目标变量的内存布局。由此可见,应用本申请方案,通过静态分析动态库的变量内存地址,即可达到修改动态库变量的内存布局的目的,不必依赖于越狱或私有接口,相应规避了现有技术所存在各种弊端,如没有私有API访问的风险等,可便捷地修改动态库中变量的内存布局。

A method, device and computer equipment for modifying variable memory layout

【技术实现步骤摘要】
一种修改变量内存布局的方法、装置及计算机设备
本申请属于计算机
,尤其涉及一种修改变量内存布局的方法、装置及计算机设备。
技术介绍
在计算机设备的终端应用中,可能会基于某种特定需求,而需要修改应用引入的动态库的某一个(些)未初始化静态/全局变量的内存布局。目前,在对动态库的静态/全局变量的内存进行数据修改时,一般通过函数调用方式来获取并修改该变量,由于大部分动态库的数据段都是私有的,因此,通常只能通过调用私有接口(API,ApplicationProgrammingInterface)来实现所需变量的内存修改;除此之外,还可以通过越狱方式实现静态/全局变量的内存修改,也即,现有技术需要依赖于私有接口或越狱,才能修改应用引入的动态库的静态/全局变量的内存布局。然而,上述基于私有接口的变量内存修改方式,易存在一些私有接口访问风险,如,私有接口可能会面临因审核、检测、举报或系统升级而导致的废弃问题等,一旦不可用则会导致无法完成所需变量的内存修改,甚至某些变量可能根本没有提供任何私有接口来读写内存;而越狱方式则需依赖于越狱软件的安装、部署,不够方便。
技术实现思路
有鉴于此,本申请的目的在于提供一种修改变量内存布局的方法、装置及计算机设备,用于通过静态分析动态库的目标变量的内存地址,来修改动态库变量的内存布局,以此打破现有技术需要依赖于越狱或私有接口,才能修改动态库变量内存的局限。为实现上述目的,一方面,本申请提供了一种修改变量内存布局的方法,该方法包括:将应用的可执行文件及所依赖的动态库加载至系统内存;确定所述动态库中的目标变量在所述可执行文件中对应的偏移信息,得到第一偏移;确定所述可执行文件被加载时所对应的随机偏移;基于所述第一偏移及所述随机偏移,确定所述目标变量对应的内存地址;基于所述内存地址,修改所述目标变量的内存布局。:另一方面,本申请还提供了一种修改变量内存布局的装置,该装置包括:加载单元,用于将应用的可执行文件及所依赖的动态库加载至系统内存;第一确定单元,用于确定所述动态库中的目标变量在所述可执行文件中对应的偏移信息,得到第一偏移;第二确定单元,用于确定所述可执行文件被加载时所对应的随机偏移;第三确定单元,用于基于所述第一偏移及所述随机偏移,确定所述目标变量对应的内存地址;内存修改单元,用于基于所述内存地址,修改所述目标变量的内存布局。再一方面,本申请还提供了一种计算机设备,该计算机设备包括:存储器,用于存储计算机可执行指令;处理器,用于调用并执行所述计算机可执行指令,所述计算机可执行指令至少用于执行如上所述的修改变量内存布局的方法。由以上方案可知,本申请提供的修改变量内存布局的方法、装置及计算机设备,在将应用的可执行文件及所依赖的动态库加载至系统内存后,进一步静态分析了应用所依赖的动态库中目标变量的内存地址,并具体基于目标变量在所述可执行文件中对应的第一偏移以及所述可执行文件被加载时对应的随机偏移,确定出了所述目标变量的内存地址,在此基础上,最终基于确定的内存地址,修改目标变量的内存布局。由此可见,应用本申请方案,通过静态分析动态库的变量内存地址,即可达到修改动态库变量的内存布局的目的,不必依赖于越狱或私有接口,相应规避了现有技术所存在各种弊端,如没有私有API访问的风险等,可便捷地修改动态库中变量的内存布局。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1是本申请实施例中修改变量内存布局的方法所适用的计算机设备的一种组成结构示意图;图2是本申请实施例中修改变量内存布局的方法的一种流程示意图;图3是iOS的Mach-O文件的文件结构示意图;图4是可执行文件Mach-O在被加载至内存后操作系统进程所对应的内存布局示意图;图5是本申请实施例中确定目标变量的内存地址的一种流程示意图;图6是本申请实施例中确定目标变量的内存地址的另一种流程示意图;图7是本申请实施例中修改变量内存布局的方法的另一种流程示意图;图8是本申请实施例中修改变量内存布局的装置的一种结构示意图;图9是本申请实施例中修改变量内存布局的装置的另一种结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。作为本申请实施例的一个方面,本申请提供了一种修改变量内存布局的方法,该方法可通过静态分析动态库的未初始化变量的内存地址,来修改动态库变量的内存布局,以打破现有技术需要依赖于越狱或私有接口,才能修改动态库变量内存的局限。可选的,上述修改变量内存布局的方法可以应用在计算机设备中,如具体可以应用于但不限于智能手机、平板电脑、个人数据助理、膝上型便携式电脑、笔记本、一体机或台式PC(personalcomputer,个人计算机)等终端设备中。作为一种典型的应用场景,其可以应用于智能手机、平板电脑等移动终端的支持浏览器引擎的应用也即浏览器类应用中,比如,具体应用于支持浏览器引擎WebKit的iOS应用中等,并可在该应用中通过静态分析动态库的未初始化变量的内存地址的方式,来实现对所需变量的内存布局进行修改,而不必依赖于越狱或私有接口。参阅图1,其示出了本申请实施例的修改变量内存布局的方法所适用的计算机设备的一种组成结构示意图,该计算机设备同时也是本申请实施例作为另一个方面所公开的计算机设备。如图1所示,该计算机设备可以包括:处理器101和存储器102。当然,还可以包括通信接口103、输入单元104、显示器105和通信总线106。其中,处理器101、存储器102、通信接口103、输入单元104及显示器105,均通过通信总线106完成相互间的通信。在本申请实施例中,该处理器101,可以为中央处理器(CentralProcessingUnit,CPU),特定应用集成电路(application-specificintegratedcircuit,ASIC),数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件等。该处理器101可以调用存储器102中存储的程序。存储器102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器102中至少存储有用于实现以下功能的程序:将应用的可执行文件及所依赖的动态库加载至系统内本文档来自技高网...

【技术保护点】
1.一种修改变量内存布局的方法,其特征在于,包括:/n将应用的可执行文件及所依赖的动态库加载至系统内存;/n确定所述动态库中的目标变量在所述可执行文件中对应的偏移信息,得到第一偏移;/n确定所述可执行文件被加载时所对应的随机偏移;/n基于所述第一偏移及所述随机偏移,确定所述目标变量对应的内存地址;/n基于所述内存地址,修改所述目标变量的内存布局。/n

【技术特征摘要】
1.一种修改变量内存布局的方法,其特征在于,包括:
将应用的可执行文件及所依赖的动态库加载至系统内存;
确定所述动态库中的目标变量在所述可执行文件中对应的偏移信息,得到第一偏移;
确定所述可执行文件被加载时所对应的随机偏移;
基于所述第一偏移及所述随机偏移,确定所述目标变量对应的内存地址;
基于所述内存地址,修改所述目标变量的内存布局。


2.根据权利要求1所述的方法,其特征在于,所述确定所述动态库中的目标变量在所述可执行文件中对应的偏移信息,得到第一偏移,包括:
确定所述目标变量对应的内存地址相比于该目标变量所属的数据块的起始内存地址的第二偏移;或者,确定所述目标变量相对于所述可执行文件指定的起始虚拟地址的第三偏移;
所述基于所述第一偏移及所述随机偏移,确定所述目标变量对应的内存地址,包括:
基于所述第二偏移、所述随机偏移及所述目标变量所属的数据块的加载基地址,确定所述目标变量对应的内存地址;或者,基于所述第三偏移、所述随机偏移及所述可执行文件的加载基地址,确定所述目标变量对应的内存地址。


3.根据权利要求2所述的方法,其特征在于,所述确定所述目标变量对应的内存地址相比于该目标变量所属的数据块的起始内存地址的第二偏移,包括:
确定所述可执行文件的编译结果中所述目标变量的虚拟地址;
确定所述目标变量所属的数据块相对于所述可执行文件的虚拟地址;
基于所述可执行文件的编译结果中所述目标变量的虚拟地址及所述目标变量所属的数据块相对于所述可执行文件的虚拟地址,确定所述第二偏移。


4.根据权利要求1所述的方法,其特征在于,所述确定所述可执行文件被加载时所对应的随机偏移,包括:
根据所述可执行文件依赖的所述动态库的动态库标识,遍历系统内存加载的各个动态库,得到所述可执行文件依赖的所述动态库被加载时的随机偏移,该随机偏移作为所述可执行文件被加载时对应的随机偏移。


5.根据权利要求1所述的方法,其特征在于,所述基于所述内存地址,修改所述目标变量的内存布局,包括:
在应用的启动初始化阶段,基于所述目标变量的内存布局方式向所述目标变量对应的内存地址写入所需的变量数据。


6.根据权利要求1所述的方法,其特征在...

【专利技术属性】
技术研发人员:张凯
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1