CN108304187A - 一种静态库的生成方法以及设备 - Google Patents

一种静态库的生成方法以及设备 Download PDF

Info

Publication number
CN108304187A
CN108304187A CN201610721491.8A CN201610721491A CN108304187A CN 108304187 A CN108304187 A CN 108304187A CN 201610721491 A CN201610721491 A CN 201610721491A CN 108304187 A CN108304187 A CN 108304187A
Authority
CN
China
Prior art keywords
intermediate code
preliminary
obj ect
code
function 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.)
Pending
Application number
CN201610721491.8A
Other languages
English (en)
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.)
BEIJING DINGXIANG TECHNOLOGY Co.,Ltd.
Original Assignee
Beijing Sixty Technology 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 Beijing Sixty Technology Co Ltd filed Critical Beijing Sixty Technology Co Ltd
Priority to CN201610721491.8A priority Critical patent/CN108304187A/zh
Publication of CN108304187A publication Critical patent/CN108304187A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Abstract

本发明公开了一种静态库生成方法及设备。该方法包括:编译源代码,获得对应的初步对象文件和初步中间代码;链接多个初步对象文件以及对应的初步中间代码,生成不包含函数信息的目标中间代码。根据本发明,可以使得静态库中为提供“全程序视角”保留的对象文件之间接口不会泄露静态库的实现细节。规避相应的安全风险和商业风险。

Description

一种静态库的生成方法以及设备
技术领域
本发明涉及计算机领域,更具体地,涉及一种静态库的生成方法及设备。
背景技术
现有技术中,软件开发者们可以根据自身软件开发的需求,通过互联网下载或者其他软件开发者或者厂商的提供的SDK(Software Development Kit,软件开发工具包),将这些SDK包含或集成到自身开发的软件中,辅助开发和运行。
而对于提供SDK的软件开发者,通常发布的SDK中大多都包含静态库(又称静态链接文件,例如.a文件),使得获取SDK的第三方的软件开发者们,可以在软件开发过程中在代码链接阶段将静态库链接到软件应用中,辅助软件的开发。通常这些静态库由多个由源代码文件(例如c/c++源码文件)编译而成的对象文件(例如.o文件)打包或者压缩而成。
但发明人发现,现有技术中,至少存在这样一个问题:作为SDK的发布者,提供静态库时,需要保留静态库中各个对象文件之间的接口,使得获取SDK的其他第三方开发者在将SDK中包含的静态库链接到自己开发的代码时,可以通过各个对象文件之间的接口获取“全程序视角”进而在代码编译阶段进行优化等,但是,一般在默认情况下,各个对象文件之间的接口都是各个对象文件包含函数的函数名,而只要是一个良好的程序,本领域技术人员读取函数名就可以直接知道函数的实现原理,这就有可能导致发布SDK时泄漏静态库的实现细节,带来安全风险和商业风险。
发明内容
本发明的一个目的是提供一种用于生成静态库的新技术方案。
根据本发明的第一方面,提供了一种静态库的生成方法,包括:
编译源代码,获得对应的初步对象文件和初步中间代码;
链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
在一个实施例中,所述初步中间代码包含在对应的所述初步对象文件中。
在另一个实施例中,所述链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成目标中间代码的步骤,包括:链接多个所述初步中间代码,生成临时中间代码;清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码。
在又一个实施例中,所述混淆所述临时中间代码中的所述函数信息的步骤,还包括:通过无意义符号混淆所述临时中间代码中的所述函数信息,所述无意义符号为与所述函数信息不存在关联的符号。
可选地,所述的静态库生成方法还包括:打包所述目标中间代码生成的目标对象文件,得到对应的静态库。
根据本发明的第二方面,提供一种静态库生成设备,包括:
编译单元,用于编译源代码,获得对应的初步对象文件和初步中间代码;
链接单元,用于链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
在一个实施例中,所述初步中间代码包含在对应的所述初步对象文件中。
在另一个实施例中,所述编译单元,包括:
用于链接多个所述初步中间代码,生成临时中间代码的装置;以及
用于清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码的装置。
在又一个实施例中,所述编译单元,还包括:
用于通过无意义符号混淆所述临时中间代码中的所述函数信息的装置,所述无意义符号为与所述函数信息不存在关联的符号。
可选地,所述的静态库生成设备,还包括:
用于打包所述目标中间代码生成的目标对象文件,得到对应的静态库的装置。
本发明的发明人发现,在现有技术中,尚未提出一种静态库的生成方法以及设备,可以使得静态库中为提供“全程序视角”保留的对象文件之间接口不会泄露静态库的实现细节。规避相应的安全风险和商业风险。因此,本发明所要实现的技术任务或者所要解决的技术问题是本领域技术人员从未想到的或者没有预期到的,故本发明是一种新的技术方案。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的计算系统的硬件配置的例子的框图。
图2示出了本发明的实施例的静态库生成方法的流程图。
图3示出了本发明的实施例的静态库生成方法的又一个流程图。
图4是本发明的实施例的静态库生成方法的例子的示意图。
图5示出了本发明的实施例的静态库生成设备的示意性框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的计算机系统1000的硬件配置的框图。
如图1所示,计算机系统1000包括计算机1110。计算机1110包括经由系统总线1121连接的处理单元1120、系统存储器1130、固定非易失性存储器接口1140、移动非易失性存储器接口1150、用户输入接口1160、网络接口1170、视频接口1190和输出外围接口1195。
系统存储器1130包括ROM(只读存储器)和RAM(随机存取存储器)。BIOS(基本输入输出系统)驻留在ROM内。操作系统、应用程序、其它程序模块和某些程序数据驻留在RAM内。
诸如硬盘的固定非易失性存储器连接到固定非易失性存储器接口1140。固定非易失性存储器例如可以存储操作系统、应用程序、其它程序模块和某些程序数据。
诸如软盘驱动器和CD-ROM驱动器的移动非易失性存储器连接到移动非易失性存储器接口1150。例如,软盘可以被插入到软盘驱动器中,以及CD(光盘)可以被插入到CD-ROM驱动器内。
诸如鼠标和键盘的输入设备被连接到用户输入接口1160。
计算机1110可以通过网络接口1170连接到远程计算机1180。例如,网络接口1170可以通过局域网连接到远程计算机。或者,网络接口1170可以连接到调制解调器(调制器-解调器),以及调制解调器经由广域网连接到远程计算机1180。
远程计算机1180可以包括诸如硬盘的存储器,其可以存储远程应用程序。
视频接口1190连接到监视器。
输出外围接口1195连接到打印机和扬声器。
图1所示的计算机系统仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。
<实施例>
本实施例中提供一种静态库生成方法,如图2所示,包括:
步骤S2001,编译源代码,获得对应的初步对象文件和初步中间代码。
源代码是指编写的程序的最原始的代码。源代码不能直接运行,必须编译后才能运行。一般源代码编译后,可以得到对应的对象文件。例如,C/C++语言编写的源代码为.c文件,编译得到的对应的对象文件.o文件。在本实施例中,编译源代码后,获得对应的初步对象文件之外,还有对应的初步中间代码。所述初步中间代码包含各个初步对象文件的原始信息,包括接口信息。由初步中间代码可以生成初步对象文件。
编译源代码后获取的对应的初步对象文件和初步中间代码,可以是相互独立的两个文件,也可以是一个文件。在一个例子中,所述初步中间代码包含在对应的所述初步对象文件中。
在步骤S2100之后,进入步骤S2200,链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中含的函数的实现原理的信息。
通常一个静态库由多个由源代码编译得到的对象文件打包或压缩而成。而在本实施例中,将多个源代码分别编译得到的初步对象文件,当链接初步对象文件时,链接对应的初步中间代码。例如,初步中间代码包含在对应的初步对象文件中,当链接多个初步对象文件时链接对应的初步中间代码,或者,初步中间代码与初步对象文件是相互独立的两个文件,则在链接初步对象文件的过程中找到对应的初步中间代码进行链接。链接多个初步中间代码,生成不包含函数信息的目标中间代码。在本实施例中,函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。例如,函数的名称,一个功能良好的代码中,函数的名字就可以使得本领域技术人员显而易见地获取函数的实现原理。所述函数的实现原理包含函数的实现细节、函数的调用关系等。
不包含函数信息的目标中间代码对应生成的目标对象文件,使得本领域技术人员不能直接容易地获取其包含的函数的实现原理。可以避免泄露静态库的实现细节。不会带来这方面的安全风险和商业风险。
在一个例子中,步骤S2200可以如图3所示的方法,包括:
步骤S3100,链接多个所述初步中间代码,生成临时中间代码。
在这个例子中,将多个源代码分别编译得到的初步对象文件进行链接时,链接每个初步对象文件对应的初步中间代码,生成临时中间代码,可以获取“全程序视角”。临时中间代码中还包含所述函数信息。可能会泄露对应多个初步对象文件中包含的函数的实现原理。
在步骤S3100之后,进入步骤S3200,清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码。
通过清除和/或混淆所述临时中间代码中的所述函数信息。清除所述函数信息,是清除可被识别的初步对象文件中包含的函数的实现原理的信息。例如,能使得本领域技术人员直接知道函数的实现原理的未使用函数。但是在某些场景下,清除函数可能导致生成的静态库代码缺失,则可以通过混淆函数信息的方式,使得生成的目标中间代码不包含函数信息或尽可能不包含函数信息。
在一个例子中,可以通过无意义符号混淆所述临时中间代码中的所述函数信息。使得临时中间代码不包含所述函数信息。所述无意义符号为与所述函数信息不存在关联的符号。例如,可以是一串采用随机生成的字符串。可以根据各种已有的随机方式生成。只要是与所述函数信息不存在关联,不会使得本领域技术人员可以获取函数信息的符号,均可以作为本实施例的无意义符号。
更具体的一个例子中,以两个初步对象文件为test.o和sayhello.o为例。如下表中表1和表2所示。(表1、2为采用反编译工具查看得到的初步对象文件test.o和sayhello.o的代码内容)。
表1test.o
表2say-hello.o
在本例中,函数信息为函数名。由表1和表2中的对象文件,可以直接清晰地看出,函数func()和函数sayHello()之间存在调用关系。函数func()可被外部调用打印10次hello。在本例中,函数sayHello()不可被外部直接调用,无需保留,可以通过无意义符号对sayHello()的函数名进行混淆,得到目标中间代码的内容如表3所示。
表3目标中间代码
在获得目标中间代码后,一般还需要根据目标中间代码生成目标对象文件,打包或压缩目标对象文件得到对应的静态库。在一个例子中,本实施例提供的静态库生成方法还包括,打包所述目标中间代码生成的目标对象文件,得到对应的静态库。
以下再具体地提供一个例子,用于说明实施本发明提供的静态库生成方法。如图4所示。在本例中,源代码为C/C++开发语言开发的.c文件。
步骤1,对两个源代码a.c和b.c分别编译,得到对应的初步对象文件a.o和初步中间代码a.ir,初步对象文件b.o和初步中间代码b.ir;
步骤2,链接a.o、b.o以及a.ir、b.ir,得到临时中间代码all.ir(保留初步对象文件之间接口,具有“全程序视角”);
步骤3,将all.ir中的函数信息通过无意义符号混淆,生成不包含函数信息的ibf.ir;
步骤4,将ibf.ir生成的目标对象文件ibf.o打包得到静态库ibf.a。
本实施例中还提供一种静态库的生成设备5000,如图5所示,包括编译单元5100、链接单元5200。用于实施本实施例中提供的任意一项静态库的生成方法,在此不再赘述。
静态库的生成设备5000,包括:
编译单元5100,用于编译源代码,获得对应的初步对象文件和初步中间代码;
链接单元5200,用于链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
在一个例子中,所述初步中间代码包含在对应的所述初步对象文件中。
在另一个例子中,所述编译单元5200,包括:
用于链接多个所述初步中间代码,生成临时中间代码的装置;以及
用于清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码的装置。
在再一个例子中,所述编译单元5200,还包括:
用于通过无意义符号混淆所述临时中间代码中的所述函数信息的装置,所述无意义符号为与所述函数信息不存在关联的符号。
可选地,所述设备还包括,用于打包所述目标中间代码生成的目标对象文件,得到对应的静态库的装置。
以上已经结合例子和附图,说明了本发明的实施例。根据本发明的实施例,对源代码编译得到对应的初步对象文件以及初步中间代码,链接初步对象文件以及对应的初步中间代码,生成不包含函数信息的目标中间代码。可以提供“全程序视角”。目标中间代码不包含函数信息,避免泄露函数的实现原理。对应地,根据目标中间代码生成的目标对象文件打包得到的静态库中,为提供“全程序视角”而保留对象文件之间接口不会泄露静态库的实现细节。规避相应的安全风险和商业风险。
本领域技术人员应当明白,可以通过各种方式来实现生成设备5000。例如,可以通过指令配置处理器来实现生成设备5000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现生成设备5000。例如,可以将生成设备5000固化到专用器件(例如ASIC)中。可以将生成设备5000分成相互独立的单元,或者可以将它们合并在一起实现。生成设备5000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (10)

1.一种静态库的生成方法,其特征在于,包括:
编译源代码,获得对应的初步对象文件和初步中间代码;
链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
2.根据权利要求1所述的方法,其特征在于,
所述初步中间代码包含在对应的所述初步对象文件中。
3.根据权利要求1所述的方法,其特征在于,所述链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成目标中间代码的步骤,包括:
链接多个所述初步中间代码,生成临时中间代码;
清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码。
4.根据权利要求3所述的方法,其特征在于,所述混淆所述临时中间代码中的所述函数信息的步骤,还包括:
通过无意义符号混淆所述临时中间代码中的所述函数信息,所述无意义符号为与所述函数信息不存在关联的符号。
5.根据权利要求1-4任意一项所述的方法,还包括:
打包所述目标中间代码生成的目标对象文件,得到对应的静态库。
6.一种静态库的生成设备,其特征在于,包括:
编译单元,用于编译源代码,获得对应的初步对象文件和初步中间代码;
链接单元,用于链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
7.根据权利要求6所述的设备,其特征在于,
所述初步中间代码包含在对应的所述初步对象文件中。
8.根据权利要求6所述的设备,其特征在于,所述编译单元,包括:
用于链接多个所述初步中间代码,生成临时中间代码的装置;以及
用于清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码的装置。
9.根据权利要求8所述的设备,其特征在于,所述编译单元,还包括:
用于通过无意义符号混淆所述临时中间代码中的所述函数信息的装置,所述无意义符号为与所述函数信息不存在关联的符号。
10.根据权利要求6-9任意一项所述的设备,其特征在于,还包括:
用于打包所述目标中间代码生成的目标对象文件,得到对应的静态库的装置。
CN201610721491.8A 2016-08-24 2016-08-24 一种静态库的生成方法以及设备 Pending CN108304187A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610721491.8A CN108304187A (zh) 2016-08-24 2016-08-24 一种静态库的生成方法以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610721491.8A CN108304187A (zh) 2016-08-24 2016-08-24 一种静态库的生成方法以及设备

Publications (1)

Publication Number Publication Date
CN108304187A true CN108304187A (zh) 2018-07-20

Family

ID=62871128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610721491.8A Pending CN108304187A (zh) 2016-08-24 2016-08-24 一种静态库的生成方法以及设备

Country Status (1)

Country Link
CN (1) CN108304187A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109460235A (zh) * 2018-10-09 2019-03-12 珠海格力电器股份有限公司 组态软件编译方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101568927A (zh) * 2006-12-21 2009-10-28 艾利森电话股份有限公司 混淆计算机程序代码
CN103218549A (zh) * 2012-01-19 2013-07-24 阿里巴巴集团控股有限公司 一种Java源代码加解密的方法及装置
CN104091100A (zh) * 2014-07-15 2014-10-08 电子科技大学 一种基于编译中间结果的软件保护方法
CN105447349A (zh) * 2015-11-20 2016-03-30 珠海多玩信息技术有限公司 对so文件中的导出符号进行保护的方法及装置
US20160188440A1 (en) * 2014-12-30 2016-06-30 International Business Machines Corporation Managing assertions while compiling and debugging source code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101568927A (zh) * 2006-12-21 2009-10-28 艾利森电话股份有限公司 混淆计算机程序代码
CN103218549A (zh) * 2012-01-19 2013-07-24 阿里巴巴集团控股有限公司 一种Java源代码加解密的方法及装置
CN104091100A (zh) * 2014-07-15 2014-10-08 电子科技大学 一种基于编译中间结果的软件保护方法
US20160188440A1 (en) * 2014-12-30 2016-06-30 International Business Machines Corporation Managing assertions while compiling and debugging source code
CN105447349A (zh) * 2015-11-20 2016-03-30 珠海多玩信息技术有限公司 对so文件中的导出符号进行保护的方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
向广利: "《软件保护新技术》", 30 September 2012, 武汉大学出版社 *
张晓: "基于Android平台的软件保护策略的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
邵国金: "《UNIX系统与软件开发》", 31 October 2013, 中国铁道出版社 *
马小陆,刘晓东编: "《基于ARM的嵌入式Linux开发与应用》", 31 March 2016, 西安电子科技大学出版社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109460235A (zh) * 2018-10-09 2019-03-12 珠海格力电器股份有限公司 组态软件编译方法

Similar Documents

Publication Publication Date Title
JP7317722B2 (ja) ブロックチェーンコンパイラ
KR101873619B1 (ko) 상태 기계 격자에서의 불리언 로직
CN110414261B (zh) 一种数据脱敏方法、装置、设备及可读存储介质
ES2733516T3 (es) Verificación de límites en tiempo de compilación para tipos definidos por el usuario
CN108399318A (zh) 可执行文件的生成方法、执行方法及电子设备
CN107273109B (zh) 对源代码建模的方法和系统以及使用数据模型的方法
CN108139891A (zh) 针对外部文件的缺失包括建议
KR101770292B1 (ko) 컴퓨터 수행 가능한 모델 역공학 방법 및 장치
CN105378658A (zh) 自动源代码生成
CN109739600A (zh) 数据处理方法、介质、装置和计算设备
CN107832059A (zh) 一种基于Makefile的代码静态分析方法和装置
CN110389786A (zh) 内核管理方法、设备和计算机程序产品
CN106462405A (zh) 使用活动场所的互动学习工具
CN111124373A (zh) 一种测试软件开发方法、装置及测试设备
CN110333872A (zh) 一种应用的处理方法、装置、设备和介质
US20090187897A1 (en) Compiling method and compiling program
CN109740313A (zh) 计算机程序保护方法、装置、电子设备和计算机可读存储介质
CN111435312A (zh) 应用程序管理方法、装置及电子设备
CN108304187A (zh) 一种静态库的生成方法以及设备
CN113391811B (zh) 函数编译方法、装置、电子设备及计算机可读存储介质
WO2014030035A1 (en) Method and system for obtaining run-time information associated with executing an executable
US9934006B2 (en) Scalable code division and workflow chart
CN109298952A (zh) 应用程序编程接口的调用方法及其装置
CN108304158A (zh) 一种动态库的代理方法及设备
US10761837B2 (en) Annotations in software development

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211201

Address after: 100085 room 0308 / 0310, 3 / F, No. 26, shangdixinxi Road, Haidian District, Beijing

Applicant after: BEIJING DINGXIANG TECHNOLOGY Co.,Ltd.

Address before: 100084 room 0112-190, 01 / F, No.26 shangdixinxi Road, Haidian District, Beijing

Applicant before: BEIJING HUAJIA TECHNOLOGY CO.,LTD.