CN114741131B - 动态库导出符号的隐藏方法、装置、设备及存储介质 - Google Patents

动态库导出符号的隐藏方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114741131B
CN114741131B CN202210351135.7A CN202210351135A CN114741131B CN 114741131 B CN114741131 B CN 114741131B CN 202210351135 A CN202210351135 A CN 202210351135A CN 114741131 B CN114741131 B CN 114741131B
Authority
CN
China
Prior art keywords
function
class
dynamic library
export
virtual
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
CN202210351135.7A
Other languages
English (en)
Other versions
CN114741131A (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.)
Shenzhen Ruan Niu Technology Group Co ltd
Original Assignee
Afirstsoft 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 Afirstsoft Co Ltd filed Critical Afirstsoft Co Ltd
Priority to CN202210351135.7A priority Critical patent/CN114741131B/zh
Publication of CN114741131A publication Critical patent/CN114741131A/zh
Application granted granted Critical
Publication of CN114741131B publication Critical patent/CN114741131B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明提供了一种动态库导出符号的隐藏方法、装置、设备及存储介质,其中方法包括:构建一个含有虚函数的C++类;将所述C++类的虚函数表作为动态库导出符号的入口;将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。本发明的方法把对外导出的符号放入虚函数表中,因为对于虚函数的调用,是依据虚函数索引的偏移量进行调用的。通过抽象类,定义一组调用的虚函数,作为导出要导出的函数,而真正的导出函数,只需要提供一个返回抽象类接口的指针地址的函数即可,充分利用了虚函数的特性,步骤简单,实现更加方便。

Description

动态库导出符号的隐藏方法、装置、设备及存储介质
技术领域
本发明涉及动态库技术领域,尤其涉及一种动态库导出符号的隐藏方法、装置、设备及存储介质。
背景技术
在软件开发领域,软件越来越复杂,需要按功能封装到不同的模块中,最常动的便是静态库和动态库,导出符号,便是模块与外界沟通的桥梁。在产品发布后,竞争对手,可以通过导出符号表,来对模块的功能做一个了解,如果导出符号望名知义时,甚至可以直接调用该动态库,使用该库的功能。特别是C++的导出符号,里面包括了函数的完整签名信息。
对于核心模块,通常会对导出符号添加某些隐藏方案的保护措施,来隐藏动态库所提供的功能。当前常见的符号隐藏方案,有下面几种:一种是使用无意义的符号来替换正成的函数名,另一种是手动构建,调用符号表,现有的这几种符号隐藏方案要么没有实现真正意义的符号隐藏,要么开发方式繁琐,难以满足动态库导出符号的隐藏需求。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于解决现有动态库导出符号的隐藏方法步骤繁琐,实现不便的技术问题。
本发明第一方面提供了一种动态库导出符号的隐藏方法,包括:
构建一个含有虚函数的C++类;
将所述C++类的虚函数表作为动态库导出符号的入口;
将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;
构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。
在本发明第一方面一种可选的实施方式中,所述的动态库导出符号的隐藏方法还包括:
提供一个宏,通过所述宏来展开所述导出函数调用返回指针的类型转换,以简化调用代码的书写。
在本发明第一方面一种可选的实施方式中,在所述C++类中,所有的对外功能均由所述C++类的虚函数提供。
在本发明第一方面一种可选的实施方式中,所述将所述C++类的虚函数表作为动态库导出符号的入口包括:先定义一个抽象的接口类,再定义一个可实例化的类从所述接口类继承,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
在本发明第一方面一种可选的实施方式中,所述将所述C++类的虚函数表作为动态库导出符号的入口包括:将所述C++类中要导出的函数定义为虚函数并实现所述虚函数,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
在本发明第一方面一种可选的实施方式中,动态库的每一个导出符号对应于所述C++类的一个虚函数的实现。
在本发明第一方面一种可选的实施方式中,所述导出函数以C函数的方式导出。
本发明第二方面提供了一种动态库导出符号的隐藏装置,所述动态库导出符号的隐藏装置包括:
第一构建模块,用于构建一个含有虚函数的C++类;
入口定义模块,用于将所述C++类的虚函数表作为动态库导出符号的入口;
调用定义模块,用于将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;
第二构建模块,用于构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。
本发明第三方面提供了一种动态库导出符号的隐藏设备,所述动态库导出符号的隐藏设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述动态库导出符号的隐藏设备执行如上述任一项所述的动态库导出符号的隐藏方法。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的动态库导出符号的隐藏方法。
有益效果:本发明提供了一种动态库导出符号的隐藏方法、装置、设备及存储介质,其中方法包括:构建一个含有虚函数的C++类;将所述C++类的虚函数表作为动态库导出符号的入口;将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。本发明的方法把对外导出的符号放入虚函数表中,因为对于虚函数的调用,是依据虚函数索引的偏移量进行调用的。通过抽象类,定义一组调用的虚函数,作为导出要导出的函数,而真正的导出函数,只需要提供一个返回抽象类接口的指针地址的函数即可,充分利用了虚函数的特性,步骤简单,实现更加方便。
附图说明
图1为本发明一种动态库导出符号的隐藏方法的一个实施例示意图;
图2为本发明一种动态库导出符号的隐藏装置的一个实施例示意图;
图3为本发明一种动态库导出符号的隐藏设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种动态库导出符号的隐藏方法、装置、设备及存储介质。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术常见的符号隐藏方案,有下面几种:
方案一、使用无意义的符号来替换正成的函数名,举例来说,有一个函数接口叫sendMessage,和一个函数recvMessage,使用连续的序号,把这两个函数映射到a1,a2,使用某种替换规则。如每个字母的数值+1,sendMessage即tfofNfttbhf,使用密码表,每个字母映射到不同的位置进行替换但这种方案的缺点是显而易见的,1。增加了开发的工作量,要导出的符号还是要导出,正常的函数名,在编译时映射到编号,而且对于要解析crash堆栈时,看到的符号翻译过来,也增加了开发成本。2。导出符号没有减少,还是有这些导出符号在动态库的导出符号表中。只是符号加密了,没有真正地隐藏。
方案二:手动构建,调用符号表。定义一个C的结构体,里面的成员,全是函数指针。这种方案,真正隐藏的调用符号,缺点是,要手动构建这个结构体,要一项项的定义函数指针,并且赋值,有点繁琐,这种方案,能真正隐藏导出符号。
为了解决现有符号隐藏方案所存在的问题,请参阅图1,本发明第一方面提供了一种动态库导出符号的隐藏方法,包括:
S100、构建一个含有虚函数的C++类;在所述C++类中,所有的对外功能均由所述C++类的虚函数提供;
S200、将所述C++类的虚函数表作为动态库导出符号的入口;
在步骤S200中,实现方式有两种,第一种是:先定义一个抽象的接口类,再定义一个可实例化的类从所述接口类继承;第二种是也可以没有这个抽象的接口类,而是将所述C++类中要导出的函数定义为虚函数并实现所述虚函数。该步骤的主要作用是定义导出函数列表的槽;
S300、将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;步骤S300中,动态库的每一个导出符号对应于所述C++类的一个虚函数的实现,该步骤的主要作者用是使导出函数列表的槽对应上真正的导出函数或功能模块;
S400、构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。在步骤S400中,所述导出函数可以是唯一的,所述导出函数返回的是所述C++类的实例的虚函数表的入口地址,如果确保只有一个导出符号,对于导出函数必须要按照规范,写成导出入口类虚函数,同时收归库的导出接口列表;应用时给调用方提供所述C++类的头文件及所述C++类的虚函数调用所涉及的其他类型的头文件,调用时,include头文件后,直接调用即可,无须导出函数类型的转换,同时也享有编译器提供的强类型的安全检查。
本发明提供的是一种基于C++虚函数表的跨平台实现方案,把对外导出的符号放入虚函数表中,因为对于虚函数的调用,是依据虚函数索引的偏移量进行调用的。通过抽象类,定义一组调用的虚函数,作为导出要导出的函数。而真正的导出函数,只需要提供一个返回抽象类接口的指针地址的函数即可。本发明的方法导出接口入口,使用C函数导出,这样能隐藏该方法的签名,导出函数创数一个单例的C++对象,并返回的该对象的地址(指针),这个地址即所有的导出函数的入口;把真正要导出的函数,定义成个C++类的虚函数,即这个函数位置是放在一个C++的函数表里。
本发明的方案在观察动态库的导出符号时,只能看到一个导出符号;只要有对应的头文件,调用方式和传统的导出符号调用,在编码和调用上没有任何区别,一样会执行强类型的参数校验,也不需要手动写,符号的类型转换;另外本发明的方案还具有跨平台性,只要使用C++的虚函数表的调用特性,在win/mac/linux/ios/android等多个平台代码,导出函数的描述和调用方式完全相同;节省在代码里,通过手写字符串判断,来匹配调用接口的低效方式,而且手写时容易有拼写错误;节省编译链接代码的花费的时间,因为导出符号只有一个,编译时,对不同导出函数调用,生成的桩子都是同一个,即入口函数的桩子,在链接时,也只需计算唯一导出符号的地址写入到桩子里即可。
在本发明第一方面一种可选的实施方式中,所述的动态库导出符号的隐藏方法还包括:
提供一个宏,通过所述宏来展开所述导出函数调用返回指针的类型转换,以简化调用代码的书写。
在本发明第一方面一种可选的实施方式中,所述导出函数以C函数的方式导出。
实施例1
有两个导出的C函数,如下:
EXPORT int encryptText(const char*text,char*output);
EXPORT int decryptCipher(const char*cipher,char*output);
通常的做法是在每个导出函数前加EXPORT来标记,EXPORT在不同编译器对应不用的描述符。加上EXPORT后,函数即出现在了导出符号表中,是对外暴露的接口。微软的msvc编译器EXPORT对应于__declspec(dllexport)
动态库生成后,用msvc toolkit里的dumpobj.exe/EXPORT来察看导出符号:
000010C3?decryptCipher@@YAHPEBDPEAD@Z=@ILT+190(?decryptCipher@@YAHPEBDPEAD@Z)
00001127?encryptText@@YAHPEBDPEAD@Z=@ILT+290(?encryptText@@YAHPEBDPEAD@Z)
?decryptCipher@@YAHPEBDPEAD@Z、?encryptText@@YAHPEBDPEAD@Z为导出符号,使用sdk的UnDecorateSymbolName函数来解析一次,得到函数签名
int__cdecl decryptCipher(char const*__ptr64,char*__ptr64);
int__cdecl encryptText(char const*__ptr64,char*__ptr64);
可见,以C++方式导出,函数签名一览无余了。只要是C++程序员,都可以来使用这个动态库了,之后直接使用decrypt(“some message”,buff);就可以调用该函数了。
本申请方案
相对于之前的工作,变化如下:
1、把上述函数声明里的EXPORT去掉
2、定义一个类,该类的虚函数对接每个要导出的函数
3、只定义一个导出函数,作为导出函数的入口,并以是C函数的方式导出,为了隐藏函数的签名的参数类型。
extern"C"EXPORT void*codecEntry();//以C的方式定义导出函数
4、实现codecEntry()
5、函数的调用方式
static_cast<Codec*>(codecEntry())->encryptText(“world”,buff);
为了简化调用,我们在头文件里增加一个宏定义
#define gsCodec static_cast<Codec*>(codecEntry())
调用代码就简化为gsCodec->encrytText(“world”,buff);
经过这些步骤后,再看导出符号
0 0000113B codecEntry=@ILT+120(codecEntry)
解析符号后,得到的还是codecEntry,开发人员只知道这个是入口,入口里有些什么完全隐藏了。
实施例2:对于模块化较高,提供导出类方案,导出类实际上是导出了类的每个函数,通常做法:
本申请方案:
1、只定义一个ExportEntry
2、定义一个继承IExportEntry的类ExportEntry,并实现虚方法
3、定义获取这个IExportEntry的方法,并将之标记为导出函数
IExportEntry*EXPORT getExportEntry();
实施例3:
多个导出的接口类:
本申请方案:这种实施例下,优势:没有手动写字符串对类的映射,使用时,没有对创建类型的强制类型转换;
1、定义类:
2、定义唯一导出符号
参见图2,本发明第二方面提供了一种动态库导出符号的隐藏装置,所述动态库导出符号的隐藏装置包括:
第一构建模块10,用于构建一个含有虚函数的C++类;
入口定义模块20,用于将所述C++类的虚函数表作为动态库导出符号的入口;
调用定义模块30,用于将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;
第二构建模块40,用于构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针。
在本发明第二方面一种可选的实施方式中,所述的动态库导出符号的隐藏方法还包括:
代码简化模块,用于提供一个宏,通过所述宏来展开所述导出函数调用返回指针的类型转换,以简化调用代码的书写。
在本发明第二方面一种可选的实施方式中,在所述C++类中,所有的对外功能均由所述C++类的虚函数提供。
在本发明第二方面一种可选的实施方式中,所述将所述C++类的虚函数表作为动态库导出符号的入口包括:先定义一个抽象的接口类,再定义一个可实例化的类从所述接口类继承,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
在本发明第二方面一种可选的实施方式中,所述将所述C++类的虚函数表作为动态库导出符号的入口包括:将所述C++类中要导出的函数定义为虚函数并实现所述虚函数,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
在本发明第二方面一种可选的实施方式中,动态库的每一个导出符号对应于所述C++类的一个虚函数的实现。
在本发明第二方面一种可选的实施方式中,所述导出函数以C函数的方式导出。
图3是本发明实施例提供的一种动态库导出符号的隐藏设备的结构示意图,该动态库导出符号的隐藏设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器50(central processing units,CPU)(例如,一个或一个以上处理器)和存储器60,一个或一个以上存储应用程序或数据的存储介质70(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对动态库导出符号的隐藏设备中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在动态库导出符号的隐藏设备上执行存储介质中的一系列指令操作。
本发明的动态库导出符号的隐藏设备还可以包括一个或一个以上电源80,一个或一个以上有线或无线网络接口90,一个或一个以上输入输出接口100,和/或,一个或一个以上操作系统,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图3示出的动态库导出符号的隐藏设备结构并不构成对动态库导出符号的隐藏设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的动态库导出符号的隐藏方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (5)

1.一种动态库导出符号的隐藏方法,其特征在于,包括:
构建一个含有虚函数的C++类;在所述C++类中,所有的对外功能均由所述C++类的虚函数提供;
将所述C++类的虚函数表作为动态库导出符号的入口;所述动态库的每一个导出符号对应于所述C++类的一个虚函数的实现;
将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;
构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针;所述导出函数以C函数的方式导出;
所述将所述C++类的虚函数表作为动态库导出符号的入口包括:先定义一个抽象的接口类,再定义一个可实例化的类从所述接口类继承,以实现将所述C++类的虚函数表作为动态库导出符号的入口;
或者所述将所述C++类的虚函数表作为动态库导出符号的入口包括:将所述C++类中要导出的函数定义为虚函数并实现所述虚函数,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
2.根据权利要求1所述的动态库导出符号的隐藏方法,其特征在于,还包括:
提供一个宏,通过所述宏来展开所述导出函数调用返回指针的类型转换,以简化调用代码的书写。
3.一种动态库导出符号的隐藏装置,其特征在于,所述动态库导出符号的隐藏装置包括:
第一构建模块,用于构建一个含有虚函数的C++类;在所述C++类中,所有的对外功能均由所述C++类的虚函数提供;
入口定义模块,用于将所述C++类的虚函数表作为动态库导出符号的入口;所述动态库的每一个导出符号对应于所述C++类的一个虚函数的实现;
调用定义模块,用于将要导出的每一个函数或功能代码放到所述C++类的每一个函虚数里进行调用;
第二构建模块,用于构建一个的导出函数,在所述导出函数中创建并返回所述C++类对象的指针;所述导出函数以C函数的方式导出;
所述入口定义模块具体用于,先定义一个抽象的接口类,再定义一个可实例化的类从所述接口类继承,以实现将所述C++类的虚函数表作为动态库导出符号的入口;
或者所述入口定义模块具体用于,将所述C++类中要导出的函数定义为虚函数并实现所述虚函数,以实现将所述C++类的虚函数表作为动态库导出符号的入口。
4.一种动态库导出符号的隐藏设备,其特征在于,所述动态库导出符号的隐藏设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述动态库导出符号的隐藏设备执行如权利要求1和2中任一项所述的动态库导出符号的隐藏方法。
5.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1和2中任一项所述的动态库导出符号的隐藏方法。
CN202210351135.7A 2022-04-02 2022-04-02 动态库导出符号的隐藏方法、装置、设备及存储介质 Active CN114741131B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210351135.7A CN114741131B (zh) 2022-04-02 2022-04-02 动态库导出符号的隐藏方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210351135.7A CN114741131B (zh) 2022-04-02 2022-04-02 动态库导出符号的隐藏方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114741131A CN114741131A (zh) 2022-07-12
CN114741131B true CN114741131B (zh) 2023-08-15

Family

ID=82280082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210351135.7A Active CN114741131B (zh) 2022-04-02 2022-04-02 动态库导出符号的隐藏方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114741131B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006349590A (ja) * 2005-06-17 2006-12-28 Yamatake Corp 3次元計測装置、3次元計測方法及び3次元計測プログラム
CN101197818A (zh) * 2006-12-08 2008-06-11 中兴通讯股份有限公司 一种asn.1报文面向对象的处理方法
CN103309796A (zh) * 2012-03-09 2013-09-18 腾讯科技(深圳)有限公司 一种组件对象模型对象的监控方法和装置
CN104331368A (zh) * 2014-11-18 2015-02-04 合肥康捷信息科技有限公司 一种基于cfg文件静态分析C++虚函数调用的方法
CN104679495A (zh) * 2013-12-02 2015-06-03 贝壳网际(北京)安全技术有限公司 软件识别方法及装置
CN104881610A (zh) * 2015-06-16 2015-09-02 北京理工大学 一种针对虚函数表劫持攻击的防御方法
CN108446149A (zh) * 2018-02-28 2018-08-24 北京凌宇智控科技有限公司 一种第三方动态库接口拦截方法及系统
CN108647061A (zh) * 2018-04-24 2018-10-12 北京奇虎科技有限公司 系统隐藏方法的调用方法、装置和计算设备
CN110187988A (zh) * 2019-06-06 2019-08-30 中国科学技术大学 适用于虚函数和函数指针的静态函数调用图构建方法
CN113590360A (zh) * 2021-08-03 2021-11-02 北京博睿宏远数据科技股份有限公司 一种实现函数hook的方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8385276B2 (en) * 2009-07-09 2013-02-26 Qualcomm Incorporated Frequency tracking loop for wireless communications

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006349590A (ja) * 2005-06-17 2006-12-28 Yamatake Corp 3次元計測装置、3次元計測方法及び3次元計測プログラム
CN101197818A (zh) * 2006-12-08 2008-06-11 中兴通讯股份有限公司 一种asn.1报文面向对象的处理方法
CN103309796A (zh) * 2012-03-09 2013-09-18 腾讯科技(深圳)有限公司 一种组件对象模型对象的监控方法和装置
CN104679495A (zh) * 2013-12-02 2015-06-03 贝壳网际(北京)安全技术有限公司 软件识别方法及装置
CN104331368A (zh) * 2014-11-18 2015-02-04 合肥康捷信息科技有限公司 一种基于cfg文件静态分析C++虚函数调用的方法
CN104881610A (zh) * 2015-06-16 2015-09-02 北京理工大学 一种针对虚函数表劫持攻击的防御方法
CN108446149A (zh) * 2018-02-28 2018-08-24 北京凌宇智控科技有限公司 一种第三方动态库接口拦截方法及系统
CN108647061A (zh) * 2018-04-24 2018-10-12 北京奇虎科技有限公司 系统隐藏方法的调用方法、装置和计算设备
CN110187988A (zh) * 2019-06-06 2019-08-30 中国科学技术大学 适用于虚函数和函数指针的静态函数调用图构建方法
CN113590360A (zh) * 2021-08-03 2021-11-02 北京博睿宏远数据科技股份有限公司 一种实现函数hook的方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
螺旋焊管焊缝X射线实时数字成像系统研究;何山林;《中国优秀硕士学位论文全文数据库-工程科技I辑》(第02期);B022-254 *

Also Published As

Publication number Publication date
CN114741131A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
Mössenböck Object-oriented programming in Oberon-2
EP1548580B1 (en) Non-platform-specific unique identifier generation
US6581206B2 (en) Computer program language subset validation
TW484099B (en) Method and apparatus for efficient invocation of Java methods from native code
US20100281470A1 (en) Method for generating interpretable code for storage in a device having limited storage
Nielson et al. Shape analysis for mobile ambients
US20140040860A1 (en) Efficient and Expansive Conversions Between Reference and Primitive
BRPI0614089A2 (pt) método para evitar engenharia reversa de software, modificação não autorizada e interceptação de dados de tempo de execução
Drozdek Data structures and algorithms in Java
WO2020259417A1 (zh) 一种区块链的数据解析方法及装置
CN110140108B (zh) 处理兄弟调用
US7181745B1 (en) Method and system for accessing objects defined within an external object-oriented environment
Hyde The art of assembly language
US20080065664A1 (en) Computer-implemented method, tool, and program product for more efficiently utilizing java resource bundles
CN114741131B (zh) 动态库导出符号的隐藏方法、装置、设备及存储介质
CN111666095A (zh) Java反编译的实现方法、系统、设备及存储介质
Hubbers et al. From finite state machines to provably correct java card applets
Tutorial tutorialspoint. com
CN113297622A (zh) 一种日志脱敏方法、系统、电子设备及存储介质
US6401092B1 (en) Name type value storage
US6961933B2 (en) Representation of Java data types in virtual machines
Horstmann Core Java for the impatient
Stephen Design of an operating system with in-memory kernel
Ghupta Practical and Deployable Secure Multi-Party Computation
CN117667195A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 1301-1310, building 2, jinlitong financial center building, 1100 Xingye Road, Haiwang community, Xin'an street, Bao'an District, Shenzhen, Guangdong 518000

Patentee after: Shenzhen Ruan Niu Technology Group Co.,Ltd.

Address before: 1301-1310, building 2, jinlitong financial center building, 1100 Xingye Road, Haiwang community, Xin'an street, Bao'an District, Shenzhen, Guangdong 518000

Patentee before: AFIRSTSOFT CO.,LTD.