CN113721928B - 一种基于二进制分析的动态库裁剪方法 - Google Patents

一种基于二进制分析的动态库裁剪方法 Download PDF

Info

Publication number
CN113721928B
CN113721928B CN202111285971.1A CN202111285971A CN113721928B CN 113721928 B CN113721928 B CN 113721928B CN 202111285971 A CN202111285971 A CN 202111285971A CN 113721928 B CN113721928 B CN 113721928B
Authority
CN
China
Prior art keywords
dynamic library
analysis
state
code
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111285971.1A
Other languages
English (en)
Other versions
CN113721928A (zh
Inventor
甘志峰
张瑞冬
童永鳌
朱鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu No Sugar Information Tech Co ltd
Original Assignee
Chengdu No Sugar Information Tech Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu No Sugar Information Tech Co ltd filed Critical Chengdu No Sugar Information Tech Co ltd
Priority to CN202111285971.1A priority Critical patent/CN113721928B/zh
Publication of CN113721928A publication Critical patent/CN113721928A/zh
Application granted granted Critical
Publication of CN113721928B publication Critical patent/CN113721928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于二进制分析的动态库裁剪方法,针对现有技术中存在的压缩率低效,程序在运行时会额外消耗CPU资源用于解压缩,甚至在某些情况下会变得无法使用,以及大量的无用代码增大了软件的攻击面与安全隐患的问题,本发明的技术方案为通过数据流和控制流分析还原函数调用图,并根据所使用的库函数将其余未使用的函数代码转换为空白指令,然后通过二进制重写技术在文件层面上消除这些空白指令达到缩小体积的效果。本发明用于动态库的裁剪。

Description

一种基于二进制分析的动态库裁剪方法
技术领域
本发明属于计算机技术领域,具体涉及一种基于二进制分析的动态库裁剪方法。
背景技术
动态库技术广泛运用于各种软件中,它解决了静态编译带来的冗余问题,使得多个程序可以共享一个库模块。主流的系统平台都有对动态库技术的支持,在Unix系列系统上,动态库是以.so为后缀的ELF文件,而在Windows上,动态库则是以.dll为后缀的PE文件。
随着软件日益复杂,动态库的体积也变得越来越庞大,即便仅使用它提供的一个函数,也需要将动态库完全加载到内存空间。并且,在使用闭源的第三方动态库时,如果只使用了其中很少部分的功能,则会为软件的安装带来不必要的硬盘开销。此外,从安全的角度来讲,不必要存在的代码增大了软件的攻击面,并可能为攻击者开发漏洞利用工具带来便利,例如ROP技术中gadget的选取。因此,减少动态库的体积显得尤为重要,现有的减小二进制文件体积的方法都是通过压缩或变形,使其体积进行减小。
现有技术存在的问题:
由于压缩率具有瓶颈,在某些情况下压缩率会非常低。此外,经过变形后的程序在运行时会额外消耗CPU资源用于解压缩,甚至在某些情况下会变得无法使用。除了上述问题外,对于第三方库,由于无法修改源代码,一旦出现安全漏洞,则使用该库的程序都会受到影响,因此大量的无用代码增大了软件的攻击面与安全隐患。
发明内容
针对现有技术中存在的压缩率低效,程序在运行时会额外消耗CPU资源用于解压缩,甚至在某些情况下会变得无法使用,以及大量的无用代码增大了软件的攻击面与安全隐患的问题,本发明提出了一种基于二进制分析的动态库裁剪方法,其目的为:通过数据流和控制流分析还原函数调用图,并根据所使用的库函数将其余未使用的函数代码转换为空白指令,然后通过二进制重写技术在文件层面上消除这些空白指令达到缩小体积的效果。
为实现上述目的本发明所采用的技术方案是:提供一种基于二进制分析的动态库裁剪方法,包括:
步骤1:进行目标动态库模块解析,分析目标动态库模块的文件格式,然后进行分离数据段和代码段操作,获取符号信息和重定位信息;
步骤2:通过数据流分析对所述数据段和所述代码段进行分析,还原控制流图,用于恢复控制流信息;
步骤3:恢复函数调用图,并根据用户需求函数集与步骤1中的重定位信息和符号信息,过滤出无用函数信息,并用空白指令填充无用函数信息,形成修改的动态库;
步骤4:使用二进制重写技术将步骤3中修改的动态库进行反汇编成为可汇编的代码,并恢复链接信息,然后在文本层面消除空白指令,并使用汇编器和链接器对消除空白指令后的代码进行重构,生成重构动态库。
较优的,本发明所述步骤1具体为:
步骤1.1:对目标动态库模块进行文件格式识别,判断目标动态库模块的目标系统架构;
步骤1.2:根据目标动态库模块对应的文件格式对其进行标准解析,保存数据段、符号信息和重定位信息,所述数据段包括程序加载基质、入口点和依赖库;
步骤1.3:截取代码段,所述代码段用于后续静态分析。
较优的,本发明所述步骤2具体为:
步骤2.1:初始化分析环境;
步骤2.2:反汇编所述代码段并将其提升为中间表示;
步骤2.3:分析所述中间表示,对跳转类语句和非跳转类语句进行处理,以位置与边的形式构成抽象状态的约束系统;
步骤2.4:基于约束系统,使用数据流分析计算每个位置的状态以实例化间接调用具体地址,形成可达状态集;
步骤2.5:根据可达状态集还原控制流图。
较优的,本发明所述步骤2.1具体为:初始化分析环境使用抽象内存模型来描述内存,以不同区域划分不同的内存位置类型。
较优的,本发明所述步骤2.2具体为:
步骤2.2.1:根据代码段各部分的当前状态反汇编对应位置的机器码;
步骤2.2.2:加载中间表示的描述文件,用于描述汇编指令与中间表示的映射关系;
步骤2.2.3:根据对应的规则将当前汇编指令提升为中间表示的语句序列。
较优的,本发明所述步骤2.3中对于跳转类语句和非跳转类语句的处理方式具体为:
对于跳转语句,生成具有假设语义的边,其后继控制流则根据前一结点的抽象状态来决定;
对于非跳转类语句,直接以当前语句位置与下一条邻接语句的状态为节点,以语句语义构成边。
较优的,本发明所述步骤2.4具体为:通过worklist算法来进行数据流分析,将每条边接收一个状态输入,并以一个后继状态作为输出,所有边的输出状态的集合就是可达状态集;当一个状态输入遇到具有假设语义的边时,会根据自身具体数值是否符合语义来判断能否经过这条边,若一条边没有状态输出,则说明这部分代码不可达。
较优的,本发明所述步骤2.5具体为:
步骤2.5.1:分析所述可达状态集,获取所有具有假定语义的边;
步骤2.5.2:将具有假定语义的边的一个端点作为基本块开头,另一个端点作为基本块结尾,并将两个相邻的基础块进行连接;
步骤2.5.3:对所有基本块划分函数边界,断开跨函数基本块之间的边。
较优的,本发明所述步骤3具体为:
首先恢复函数调用图,然后将初始化函数加入有用函数列表中,最后使用空白指令填充无用函数信息,即无用函数的代码部分,生成修改的动态库。
较优的,本发明述步骤4具体为:
使用二进制重写技术将所述修改的动态库进行反汇编成为可重定向汇编文件,然后恢复链接信息,去除可重定向汇编文件中的空白指令,使用汇编器和链接器对去除空白指令的可重定向汇编文件进行重构,生成重构动态库。
相比现有技术,本发明的技术方案具有如下优点/有益效果:
1.本发明通过控制流还原以完成函数调用分析,能够更好地解决间接调用问题,避免出现一个函数会经过间接调用但被归为无用代码的情况。
2.本发明将未使用的功能进行安全的移除,不会在运行时额外消耗CPU资源用于解压缩。
3. 本发明消除了不会被使用的代码部分,能减轻动态库所占的内存资源。
4. 本发明缓解了软件的潜在攻击面,使攻击者无法将这些代码片段用于漏洞利用开发。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明一种基于二进制分析的动态库裁剪方法的示意图。
具体实施方式
为使本发明目的、技术方案和优点更加清楚,下面对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明的一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。
步骤1:进行目标动态库模块解析,分析目标动态库模块的文件格式,然后进行分离数据段和代码段操作,获取符号信息和重定位信息;
步骤1.1:对目标动态库模块进行文件格式识别,判断目标动态库模块的目标系统架构;
步骤1.2:根据目标动态库模块对应的文件格式对其进行标准解析,保存数据段、符号信息和重定位信息,所述数据段包括程序加载基质、入口点和依赖库;
步骤1.3:截取代码段,所述代码段用于后续静态分析。
步骤2:通过数据流分析对所述数据段和所述代码段进行分析,还原控制流图,用于恢复控制流信息;
步骤2.1:初始化分析环境,使用抽象内存模型来描述内存,以不同区域划分不同的内存位置类型。
步骤2.2:反汇编所述代码段并将其提升为中间表示;
步骤2.2.1:根据代码段各部分的当前状态反汇编对应位置的机器码;
步骤2.2.2:加载中间表示的描述文件,用于描述汇编指令与中间表示的映射关系;
步骤2.2.3:根据对应的规则将当前汇编指令提升为中间表示的语句序列。
步骤2.3:分析所述中间表示,以位置与边的形式构成抽象状态的约束系统;对于跳转类语句和非跳转类语句的处理方式具体为:
对于跳转语句,生成具有假设语义的边,其后继控制流则根据前一结点的抽象状态来决定;
对于非跳转类语句,直接以当前语句位置与下一条邻接语句的状态为节点,以语句语义构成边。
步骤2.4:基于约束系统,使用数据流分析计算每个位置的状态以实例化间接调用具体地址,形成可达状态集;具体为:通过worklist算法来进行数据流分析,将每条边接收一个状态输入,并以一个后继状态作为输出,所有边的输出状态的集合就是可达状态集;当一个状态输入遇到具有假设语义的边时,会根据自身具体数值是否符合语义来判断能否经过这条边,若一条边没有状态输出,则说明这部分代码不可达。
步骤2.5:根据可达状态集还原控制流图。
步骤2.5.1:分析所述可达状态集,获取所有具有假定语义的边;
步骤2.5.2:将具有假定语义的边的一个端点作为基本块开头,另一个端点作为基本块结尾,并将两个相邻的基础块进行连接;
步骤2.5.3:对所有基本块划分函数边界,断开跨函数基本块之间的边。
步骤3:恢复函数调用图,并根据用户需求函数集与步骤1中的重定位信息和符号信息,过滤出无用函数信息,并用空白指令填充无用函数信息,形成修改的动态库;具体为:首先恢复函数调用图,然后将初始化函数加入有用函数列表中,最后使用空白指令填充无用函数信息,即无用函数的代码部分,生成修改的动态库。
步骤4:使用二进制重写技术将步骤3中修改的动态库进行反汇编成为可汇编的代码,并恢复链接信息,然后在文本层面消除空白指令,并使用汇编器和链接器对消除空白指令后的代码进行重构,生成重构动态库。具体为:使用二进制重写技术将所述修改的动态库进行反汇编成为可重定向汇编文件,然后恢复链接信息,去除可重定向汇编文件中的空白指令,使用汇编器和链接器对去除空白指令的可重定向汇编文件进行重构,生成重构动态库。
实施例1:
如图1所示。本发明提出一种基于二进制分析的动态库裁剪方法,其包括以下步骤:
步骤1:目标动态库模块解析,对目标动态库模块的文件格式进行识别,获取符号信息和重定位信息等。
所述模块解析具体步骤为:1)对目标动态库模块的文件格式进行识别,并判断目标动态库模块的目标系统架构,文件格式通常是ELF文件或PE文件,根据文件格式可以判断其所在的系统平台与指令架构等信息,如x86的ELF文件是属于Unix系列平台,而x86的PE文件则是属于Windows平台;2)根据对应的文件格式标准解析,保存程序加载基址,入口点,依赖库,重定位信息和符号信息等;3)截取目标动态库的代码段部分用于后续的静态分析。
步骤2:通过数据流分析对所述数据段和所述代码段进行分析,还原控制流图,用于恢复控制流信息;
恢复控制流信息的具体步骤为,1):初始化分析环境,如初始化堆栈指针,入口点状态,清空状态码等;2)解析所述截取的代码段,将其提升为中间表示,3)对中间表示进行分析,以位置与边的形式构成抽象状态的约束系统;4)使用数据流分析计算使用数据流分析计算每个位置的状态以实例化间接调用具体地址,形成可达状态集;5)根据可达状态集还原控制流图。具体操作为:
初始化分析环境,使用抽象内存模型来描述内存,并以不同区域划分不同的抽象内存地址类型,如全局区域的抽象地址使用<global,offset>表示,<global,offset>除了表示抽象地址外,还可以表示立即数,如<global,0x400000>同时表示数值0x400000与地址0x400000;栈区域的抽象地址使用<func_record,offset>表示,其中func_record表示该局部数据所属的过程;而堆区域的抽象地址则使用<heap_number,offset>来表示,其中heap_number是由malloc等函数的分配次数决定的。其次,需要有一个初始状态作为开始,该初始状态是一个maplattice,将寄存器变量映射到抽象地址,例如,可以将main函数的初始状态设置为init_state={esp→{<func_main,0>},eax→{<global,1>},它表示eax的仅有一个状态为1,esp的值表示位于main函数的栈顶处,而未涉及到的寄存器一律初始化为空。
提升代码为中间表示的具体步骤为,1):根据代码段当前状态反汇编对应位置的机器码;2):加载中间表示的描述文件,它描述了汇编指令与中间表示的映射关系;3):根据规则将当前汇编指令提升为中间表示的语句序列。
从汇编转换为中间表示实际上是将复杂指令分解为行为模式更加单一的指令,如push imm指令会先被分解为mov [esp],imm; sub esp, 4,然后转换为赋值语句*esp =imm; esp = esp - 4。
在分析中间表示时,在分析中间表示时,需要以不同的处理方式对待不同类的语句,对于跳转类语句,需要判断其具体条件,可以分为三种情况:第一种情况是无条件的跳转,以当前位置和表达式求解的目标位置为端点,生成具有假设语义永真的边;第二种情况是函数调用的跳转,它会被分解为返回地址入栈与无条件跳转两条语句,再解释语义;第三种情况是有条件的跳转,此时会生成两条具有假设语义的边,分别对于真和假两种情况,有条件跳转的判断依据是状态寄存器中的相关标志位,因此生成的假设语义也是对状态寄存器变量的判定,如指令的操作码为jz时,一条边的语义为(assume ZF == 1),另一条边的语义为(assume ZF == 1),其中ZF表示状态寄存器的ZF标志。对于非跳转类语句,则直接以当前语句位置与下一条邻接语句的状态为节点,以语句语义构成边。
数据流分析使用worklist算法,用于获取每个程序点的可达状态集。每条边接收一个状态输入,并以一个后继状态作为输出,边上附带的语义可以视作状态的transformfunction,它将一个状态转换为另一个状态,每产生一个不同状态,就将该状态添加到对应程序点的状态集中。
一个状态遇到具有假设语义的边时,会根据自身具体数值是否符合语义来判断能否经过这条边,若一条边没有输出,则说明这条边所指位置不可达。
为了提高性能,可以为程序点的状态数量设定一个边界,一旦可达状态数量超过边界,则将该点状态标注为top符号,表示任意状态。例如,若边界值为3,而在worklist算法中某个程序点的状态为state = {eax → {<global, 2>, <global, 4>, <global, 6>, <global, 8>}, ebx → {<global, 3>}},此时eax具有的状态为4超过了边界值,因此该状态会被转换为state = {eax → top, ebx → {<global, 3>}。
在worklist算法停止时,整个数据流分析到达不动点,每个程序点具有一个可达状态集,所有边输出状态的集合就是数据流分析的结果。
在得到可达状态集后,分析可达状态集,获取所有具有假设语义的边;将具有假设语义的边的左端点作为基本块结尾,右端点作为基本块开头,并连接这两个基本块,以此得到类似IDA Pro的汇编级别控制流图,唯一区别是此时已解决间接分支,即类似jmp eax的指令也会有一个有向边连接到eax所指位置作为下一基本块,使得控制流信息更加完整。在这之后划分函数边界,记录跨函数基本块之间的边,用于恢复函数调用图。
步骤3,填充无用函数。其具体步骤为:1) 恢复函数调用图;2) 将初始化函数加入有用函数列表中;3) 使用空白指令填充未无用函数的代码部分。
根据相对完整的控制流信息,就能恢复出函数调用图:从一个起始函数开始递归分析所有call指令来构建出一颗有用函数的树状结构,该起始函数是用户的输入指定的。排除掉该树状结构内的元素,就能得到动态库中所有的无用函数。进一步的,可以使用符号信息与重定位信息提高函数调用图的精确性。
步骤4,重构动态库的具体步骤为:1) 使用reassembly技术将动态库反汇编为可重定向汇编文件;2) 根据输入模块恢复依赖库等元数据信息;3) 去除反汇编代码中的空白指令;4) 使用汇编器和链接器重构动态库
上述reassembly技术属于二进制重写(binary rewrite)技术,使用该技术可以反汇编动态库并得到可重汇编的汇编代码,即汇编代码中的偏移由于标签化而具有可重定位性,而非简单的立即数。在上一步骤填充无用函数中使用空白指令填充了大量代码,这使得本步骤中获得的可重定向汇编代码具有大量空白指令序列,删去汇编文件中的空白指令文本,使用汇编器与链接器生成新的动态库文件,这就达到了裁剪动态库的目的。
以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种基于二进制分析的动态库裁剪方法,其特征在于,包括:
步骤1:进行目标动态库模块解析,分析目标动态库模块的文件格式,然后进行分离数据段和代码段操作,获取符号信息和重定位信息;
步骤2:通过数据流分析对所述数据段和所述代码段进行分析,还原控制流图,用于恢复控制流信息;所述步骤2具体为:
步骤2.1:初始化分析环境;
步骤2.2:反汇编所述代码段并将其提升为中间表示;
步骤2.3:分析所述中间表示,对跳转类语句和非跳转类语句进行处理,以位置与边的形式构成抽象状态的约束系统;
步骤2.4:基于约束系统,使用数据流分析计算每个位置的状态以实例化间接调用具体地址,形成可达状态集;
步骤2.5:根据可达状态集还原控制流图;
步骤3:恢复函数调用图,并根据用户需求函数集与步骤1中的重定位信息和符号信息,过滤出无用函数信息,并用空白指令填充无用函数信息,形成修改的动态库;
步骤4:使用二进制重写技术将步骤3中修改的动态库进行反汇编成为可汇编的代码,并恢复链接信息,然后在文本层面消除空白指令,并使用汇编器和链接器对消除空白指令后的代码进行重构,生成重构动态库。
2.根据权利要求1所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤1具体为:
步骤1.1:对目标动态库模块进行文件格式识别,判断目标动态库模块的目标系统架构;
步骤1.2:根据目标动态库模块对应的文件格式对其进行标准解析,保存数据段、符号信息和重定位信息,所述数据段包括程序加载基质、入口点和依赖库;
步骤1.3:截取代码段,所述代码段用于后续静态分析。
3.根据权利要求1所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤2.1具体为:初始化分析环境时使用抽象内存模型来描述内存,以不同区域划分不同的内存位置类型。
4.根据权利要求1所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤2.2具体为:
步骤2.2.1:根据代码段各部分的当前状态反汇编对应位置的机器码;
步骤2.2.2:加载中间表示的描述文件,用于描述汇编指令与中间表示的映射关系;
步骤2.2.3:根据对应的规则将当前汇编指令提升为中间表示的语句序列。
5.根据权利要求1所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤2.3中对于跳转类语句和非跳转类语句的处理方式具体为:
对于跳转语句,生成具有假设语义的边,其后继控制流则根据前一结点的抽象状态来决定;
对于非跳转类语句,直接以当前语句位置与下一条邻接语句的状态为节点,以语句语义构成边。
6.根据权利要求1所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤2.4具体为:通过worklist算法来进行数据流分析,将每条边接收一个状态输入,并以一个后继状态作为输出,所有边的输出状态的集合就是可达状态集;当一个状态输入遇到具有假设语义的边时,会根据自身具体数值是否符合语义来判断能否经过这条边,若一条边没有状态输出,则说明这部分代码不可达。
7.根据权利要求6所述的一种基于二进制分析的动态库裁剪方法,其特征在于,所述步骤2.5具体为:
步骤2.5.1:分析所述可达状态集,获取所有具有假定语义的边;
步骤2.5.2:将具有假定语义的边的一个端点作为基本块开头,另一个端点作为基本块结尾,并将两个相邻的基础块进行连接;
步骤2.5.3:对所有基本块划分函数边界,断开跨函数基本块之间的边。
CN202111285971.1A 2021-11-02 2021-11-02 一种基于二进制分析的动态库裁剪方法 Active CN113721928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111285971.1A CN113721928B (zh) 2021-11-02 2021-11-02 一种基于二进制分析的动态库裁剪方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111285971.1A CN113721928B (zh) 2021-11-02 2021-11-02 一种基于二进制分析的动态库裁剪方法

Publications (2)

Publication Number Publication Date
CN113721928A CN113721928A (zh) 2021-11-30
CN113721928B true CN113721928B (zh) 2022-01-18

Family

ID=78686391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111285971.1A Active CN113721928B (zh) 2021-11-02 2021-11-02 一种基于二进制分析的动态库裁剪方法

Country Status (1)

Country Link
CN (1) CN113721928B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643812B (zh) * 2023-07-26 2023-09-19 北京麟卓信息科技有限公司 一种基于最小符号冗余的动态库加载优化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054149A (zh) * 2009-11-06 2011-05-11 中国科学院研究生院 一种恶意代码行为特征提取方法
CN103116514A (zh) * 2013-03-15 2013-05-22 清华大学 基于系统扩展调用图的操作系统自动优化方法和系统
CN107357566A (zh) * 2017-06-06 2017-11-17 上海交通大学 多架构二进制相似代码检测系统及方法
CN111209007A (zh) * 2020-01-17 2020-05-29 济南浪潮高新科技投资发展有限公司 一种基于移动环境监控可控设备软件实现方法
CN112379940A (zh) * 2020-11-11 2021-02-19 歌尔科技有限公司 一种可执行文件处理方法、装置、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070113291A1 (en) * 2005-11-17 2007-05-17 Juin-Jia Dai Method for administrating the function access
CN101840334B (zh) * 2010-04-16 2013-04-17 中国电子科技集团公司第二十八研究所 一种软件构件服务化封装方法
CN103034486B (zh) * 2012-11-28 2015-09-30 清华大学 移动终端操作系统基于全系统扩展调用图的自动优化方法
US9535814B2 (en) * 2014-03-31 2017-01-03 Nec Corporation Dynamic border line tracing for tracking message flows across distributed systems
CN106528403B (zh) * 2016-10-08 2018-11-20 西安电子科技大学 基于二进制代码植入技术的软件运行时监控方法
CN113050948B (zh) * 2021-03-22 2022-07-19 厦门亿联网络技术股份有限公司 动态库优化方法、装置、设备及存储介质
CN113535263A (zh) * 2021-07-07 2021-10-22 深圳市元征未来汽车技术有限公司 动态库调用方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054149A (zh) * 2009-11-06 2011-05-11 中国科学院研究生院 一种恶意代码行为特征提取方法
CN103116514A (zh) * 2013-03-15 2013-05-22 清华大学 基于系统扩展调用图的操作系统自动优化方法和系统
CN107357566A (zh) * 2017-06-06 2017-11-17 上海交通大学 多架构二进制相似代码检测系统及方法
CN111209007A (zh) * 2020-01-17 2020-05-29 济南浪潮高新科技投资发展有限公司 一种基于移动环境监控可控设备软件实现方法
CN112379940A (zh) * 2020-11-11 2021-02-19 歌尔科技有限公司 一种可执行文件处理方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Compiling Dynamic Data Structures in Python to Enable the Use of Multi-core and Many-core Libraries;Bin Ren;《2011 International Conference on Parallel Architectures and Compilation Techniques》;20111014;第68-77页 *
Windows操作系统冗余动态链接库的删除;范长青;《福州大学学报(自然科学版)》;20000601;第39-42页 *

Also Published As

Publication number Publication date
CN113721928A (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
Debray et al. Profile-guided code compression
US5805895A (en) Method and apparatus for code translation optimization
EP2082318B1 (en) Register-based instruction optimization for facilitating efficient emulation of an instruction stream
US7958133B2 (en) Application conversion of source data
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
US10942718B2 (en) Systems and/or methods for type inference from machine code
CN110569628B (zh) 一种代码的混淆方法以及装置、计算机设备、存储介质
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN112732321B (zh) 一种固件修改方法、装置、计算机可读存储介质和设备
CN111078279A (zh) 字节码文件的处理方法、装置、设备及存储介质
CN113721928B (zh) 一种基于二进制分析的动态库裁剪方法
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
CN116934330A (zh) 一种调用智能合约的方法及执行方法、计算机设备及存储介质
US11029934B2 (en) Method and system for updating legacy software
US5926814A (en) System and method for processing a new calendar system
CN111880800B (zh) 应用下载方法与应用下载系统
CN111796832B (zh) 热补丁文件生成方法、装置、设备及存储介质
US20230325476A1 (en) Obfuscation device, obfuscation method, and obfuscation program
CN114174983B (zh) 用于高级构造的优化的自动验证的方法和系统
CN114816435A (zh) 一种基于逆向技术的软件开发方法
CN114637988A (zh) 一种面向二进制的函数级软件随机化方法
CN104615935A (zh) 一种面向Xen虚拟化平台的隐藏方法
CN114579135B (zh) 一种安装包生成方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Dynamic Library Cropping Method Based on Binary Analysis

Effective date of registration: 20230712

Granted publication date: 20220118

Pledgee: Sichuan Tianfu bank Limited by Share Ltd. Chengdu branch

Pledgor: CHENGDU NO SUGAR INFORMATION TECH Co.,Ltd.

Registration number: Y2023510000179