CN106325927A - 一种应用于Linux系统中动态库API的拦截方法及装置 - Google Patents

一种应用于Linux系统中动态库API的拦截方法及装置 Download PDF

Info

Publication number
CN106325927A
CN106325927A CN201610697142.7A CN201610697142A CN106325927A CN 106325927 A CN106325927 A CN 106325927A CN 201610697142 A CN201610697142 A CN 201610697142A CN 106325927 A CN106325927 A CN 106325927A
Authority
CN
China
Prior art keywords
function
hook
api
handle
file
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.)
Granted
Application number
CN201610697142.7A
Other languages
English (en)
Other versions
CN106325927B (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.)
Beijing Falcon Safety Technology Co ltd
Original Assignee
Beijing Kingsoft Security Management System 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 Kingsoft Security Management System Technology Co Ltd filed Critical Beijing Kingsoft Security Management System Technology Co Ltd
Priority to CN201610697142.7A priority Critical patent/CN106325927B/zh
Publication of CN106325927A publication Critical patent/CN106325927A/zh
Application granted granted Critical
Publication of CN106325927B publication Critical patent/CN106325927B/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

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)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种应用于linux系统中动态库API的拦截方法和装置,方法包括:获取待执行的动态库服务所调用的API及钩子函数;根据API从预设的双级拦截映射表中查找相应的API,将钩子函数与API的原函数挂钩,以钩子函数替换原函数执行动态库服务;在动态库服务执行完成后,卸钩API并恢复原函数。本发明的拦截方法利用双级拦截映射表,建立不同动态库服务所调用的API与其对应的ELF文件、钩子函数和原函数的关联关系,根据钩子函数的区别可以在映射表中插入多个API调用记录,能够在动态库服务执行完成,根据调用记录将API复原为原始函数,方便不同动态库服务对同一API的多次重复调用。

Description

一种应用于Linux系统中动态库API的拦截方法及装置
技术领域
本发明涉及计算机API拦截技术领域,特别是涉及一种应用于linux系统中动态库API的拦截方法及装置。
背景技术
为了实现对计算机应用程序的调试以及拓展原有的功能,现有计算技术领域普遍采用钩子技术用来拦截不同API的调用,拦截api的技术有很多种,大体分为用户层和内核层的拦截,其中,对于用户层的拦截技术,一般是直接修改要拦截的api的内存以及程序流程,使程序跳转到指定的地址执行,然后再返回到原地址。但是上述的拦截方法中,由于不同动态库服务调用的同一API所执行的钩子函数有所区别,因此在某一调用的API未完成对应的动态库服务时,其它同样需要调用该指令的动态库服务就要延迟推后执行,不能支持对同一API的重复多次挂钩以及卸钩操作。
发明内容
本发明所要解决的技术问题是:提供一种应用于linux系统中动态库API的拦截方法及装置,利用双级拦截映射表可以实现对API及其钩子函数的多次挂钩和卸钩。
本发明解决上述技术问题所采用的技术方案是:
本发明提供了一种应用于linux系统中动态库API的拦截方法,包括:获取待执行的动态库服务所调用的API及钩子函数;根据API从预设的双级拦截映射表中查找相应的API,将钩子函数与API的原函数挂钩,以钩子 函数替换原函数执行动态库服务;在动态库服务执行完成后,卸钩API并恢复原函数。
进一步的,双级拦截映射表包括一级映射表和二级映射表,其中,一级映射表的键为ELF文件的句柄集,值为API名称集;二级映射表的键为API名称,值为原函数和钩子函数。
进一步的,根据API从预设的双级拦截映射表中查找相应的API的过程包括:调用dlopen函数打开对应API的ELF文件,并获取ELF文件的句柄,从一级映射表的句柄集中查找和匹配对应的句柄;取出匹配成功的句柄所对应的API名称集,并递增ELF文件的引用计数。
进一步的,在调用dlopen函数打开ELF文件并获取所述ELF文件的句柄后,判断句柄是否满足句柄调用条件;判断句柄是否满足句柄调用条件的过程包括:判断句柄是否为空,若否,则判断ELF文件的路径名是否为空;若路径名不为空,则满足句柄调用条件,否则,从伪文件系统中读取文件路径名,其中,读取的文件路径名为/proc/self/exe;以只读方式调用open函数并返回fd,判断fd是否为-1,若否,则满足句柄调用条件。
进一步的,当句柄未从所述句柄集中查找和匹配成功时,在一级映射表中新建句柄;在一级映射表中新建句柄的过程包括:读取句柄对应的所述ELF文件的文件头,计算ELF文件的基地址,将句柄插入至一级映射表的句柄集中。
进一步的,计算确定ELF文件的映像基地址的过程包括:获取ELF文件的程序头部表,判断ELF文件的类型,在ELF文件为DYN文件时,读取DYN文件的动态链接符号节头和字符串节头;根据动态链接符号节头确定DYN文件的动态链接符号表,根据字符串节头确定DYN文件的动态链接符号字符串表;从动态链接符号表中重复取下一个符号sym并获取sym的偏移量,判断是否达到动态链接符号表的末尾,若否,则判断sym是否为外部 函数且偏移量非0;若sym为外部函数且偏移量非0,则从动态链接符号字符串表中获取sym的函数名称,并调用库函数返回fun;判断fun是否为非空,fun为通过dlopen函数所获取的对应符号的函数地址,若fun非空,则设置ELF文件的映像基地址为fun和sym偏移量的差。
进一步的,将钩子函数与API的原函数挂钩的过程包括:根据动态链接符号节头确定API名称对应的索引,以及根据映象基地址和偏移量确定动态符号表和重定位链接过程表的位置,获取动态符号表和重定位链接过程表;以钩子函数替换重定位链接过程表的入口表项,并输出原函数;若替换失败,则以钩子函数替换动态符号表的入口表项,并输出原函数;判断钩子函数与原函数是否相同,若否,则判断是否为第一次挂钩该API;若为第一次挂钩该API,则将钩子函数和原函数插入至二级映射表并生成挂钩记录,否则,更新二级映射表中前次未卸钩的钩子函数为本次挂钩的钩子函数。
进一步的,卸钩API并恢复原函数的过程包括:从二级映射表中查找对应所述API的挂钩记录;以原函数为钩子函数,以钩子函数替换重定位链接过程表的入口表项,并输出原函数;判断钩子函数与原函数是否相同,若否,更新二级映射表中的钩子函数为原函数;将二级映射表中的挂钩记录删除。
进一步的,在动态库服务执行完成后,关闭ELF文件,其中,关闭ELF文件的过程包括:递减ELF文件的引用计数,判断递减后的引用次数是否为0,若是,则遍历二级映射表,卸钩API并恢复原函数;释放加载处理进程占用的内存,调用dlclose函数和close函数关闭ELF文件;将ELF文件从一级映射表中删除。
本发明还提供了一种应用该拦截方法的装置,包括:获取单元,用于获取待执行的动态库服务所对应API及钩子函数;挂钩单元,用于根据API 从预设的双级拦截映射表中查找相应的API,将钩子函数与API的原函数挂钩,以钩子函数替换所述原函数执行动态库服务;卸钩单元,用于在动态库服务执行完成后,卸钩API并恢复原函数。
本发明采用上述技术方案所具有的有益效果是:
本发明的拦截方法利用双级拦截映射表,建立不同动态库服务所调用的API与其对应的ELF文件、钩子函数和原函数的关联关系,根据钩子函数的区别可以在映射表中插入多个API调用记录,能够在动态库服务执行完成,根据调用记录将API复原为原始函数,方便不同动态库服务对同一API的多次重复调用。
附图说明
图1为本发明拦截方法的整体流程图;
图2为本发明一实施例中双级拦截映射表的结构示意图;
图3为本发明拦截方法中查找API的流程图;
图4为本发明拦截方法中基地址计算的流程图;
图5为本发明拦截方法中挂钩API的流程图;
图6为本发明拦截方法中卸钩API的流程图;
图7为本发明拦截方法中关闭ELF文件的流程图。
具体实施方式
为清楚的说明本发明中的方案,下面给出优选的实施例并结合附图详细说明。以下的说明本质上仅仅是示例性的而并不是为了限制本公开的应用或用途。应当理解的是,在全部的附图中,对应的附图标记表示相同或对应的部件和特征。
如图1所示,本发明提供了一种应用于linux系统中动态库API的拦 截方法,包括:
S101、获取待执行的动态库服务所调用的API及钩子函数;
S102、根据API从预设的双级拦截映射表中查找相应的API,将钩子函数与API的原函数挂钩,以钩子函数替换原函数执行动态库服务;
S103、在动态库服务执行完成后,卸钩API并恢复原函数。
钩子函数是外部输入的动态库服务函数,由于钩子函数是基于API的原函数基础上修改成的动态库服务函数,在原函数对应的动态库服务函数基础拓展了新的动态库服务内容,而本发明中API挂钩的即是将新的动态库服务函数与原函数挂钩,在上述过程中,钩子函数替换原函数执行完新的动态库服务后,可以根据双级拦截映射表恢复API与原函数的关联关系。
实施例中,如图2所示,双级拦截映射表包括一级映射表和二级映射表,其中,一级映射表的键为ELF文件的句柄集,值为API名称集;二级映射表的键为API名称,值为原函数和钩子函数;本发明对API的挂钩和卸钩操作即是根据该双级拦截映射表实现的,例如,某一映射表中的ELF文件的其中一个句柄为0xffff0001,API的名称为dlopen,该API的原函数为0xffff1234,外部输入的某一钩子函数为0xffff5678。
实施例中,如图3所示,根据API从预设的双级拦截映射表中查找相应的API的过程包括:调用dlopen函数打开对应API的ELF文件,并获取ELF文件的句柄,从一级映射表的句柄集中查找和匹配对应的句柄;取出匹配成功的句柄所对应的API名称集,并递增ELF文件的引用计数,引用计数可以用于记录同一ELF文件被打开及使用的次数。
实施例中,在调用dlopen函数打开ELF文件并获取ELF文件的句柄后,判断句柄是否满足句柄调用条件,具体判断过程为:
S201、判断句柄是否为空,若否,则判断ELF文件的路径名是否为空;
S202、若路径名不为空,则满足句柄调用条件,否则,从伪文件系统 中读取文件路径名,其中,读取的文件路径名为/proc/self/exe;
S203、以只读方式调用open函数并返回fd,判断fd是否为-1,fd为文件描述符,在fd=-1时,即ELF文件打开失败;若否,则满足句柄调用条件。
实施例中,当句柄未从句柄集中查找和匹配成功时,在一级映射表中新建句柄,具体新建的过程包括:读取句柄对应的ELF文件的文件头,计算ELF文件的基地址,将句柄插入至一级映射表的句柄集中。
如图4所示,计算确定ELF文件的映像基地址的过程包括:
S301、获取ELF文件的程序头部表,判断ELF文件的类型,在ELF文件为DYN文件时,读取DYN文件的动态链接符号节头和字符串节头;
S303、根据动态链接符号节头确定DYN文件的动态链接符号表,根据字符串节头确定DYN文件的动态链接符号字符串表;
S304、从动态链接符号表中重复取下一个符号sym并获取sym的偏移量,判断是否达到动态链接符号表的末尾,若否,则判断sym是否为外部可见的导出函数且偏移量非0;
S305、若sym为外部可见的导出函数且偏移量非0,则从动态链接符号字符串表中获取sym的函数名称,并调用库函数返回fun;
S306、判断fun是否为非空,fun为通过dlopen函数所获取的对应符号的函数地址,若fun非空,则设置ELF文件的映像基地址为fun和sym偏移量的差。
如图5所示,将钩子函数与API的原函数挂钩的过程包括:
S401、根据动态链接符号节头确定API名称对应的索引,索引是指在动态符号表或重定位链接过程表中的表项位置;比如,1、2、3等;以及根据映象基地址和偏移量确定动态符号表和重定位链接过程表的位置,获取动态符号表和重定位链接过程表;
S402、以钩子函数替换重定位链接过程表的入口表项,入口表项存储有API的地址,比如dlopen索引为1时,在表项1处的内容为地址0xffff1234,地址0xffff1234的内容为dlopen的地址;并输出原函数;若替换失败,则以钩子函数替换动态符号表的入口表项,并输出原函数;
S403、判断钩子函数与原函数是否相同,若否,则判断是否为第一次挂钩该API;
S404、若为第一次挂钩该API,则将钩子函数和原函数插入至二级映射表并生成挂钩记录,否则,更新二级映射表中前次未卸钩的钩子函数为本次挂钩的钩子函数。
如图6所示,卸钩API并恢复原函数的过程包括:
S501、从二级映射表中查找对应API的挂钩记录;
S502、以原函数为钩子函数,重新调用挂钩API的流程,以原函数作为钩子函数替换重定位链接过程表的入口表项,并输出原函数;
S503、判断钩子函数与原函数是否相同,若否,更新二级映射表中的钩子函数为原函数;
S504、将二级映射表中的挂钩记录删除。
如图7所示,在动态库服务执行完成后,关闭ELF文件,关闭ELF文件的具体过程包括:
S601、递减ELF文件的引用计数,判断递减后的引用次数是否为0,若是,则遍历二级映射表,卸钩API并恢复原函数;
S602、释放加载处理进程占用的内存,调用dlclose函数和close函数关闭ELF文件;
S603、将ELF文件从一级映射表中删除。
本发明还提供了一种装置,该装置采用上述实施例中所公开的拦截方法,装置具体包括:
获取单元,用于获取待执行的动态库服务所对应API及钩子函数;
挂钩单元,用于根据API从预设的双级拦截映射表中查找相应的API,将钩子函数与API的原函数挂钩,以钩子函数替换原函数执行动态库服务;
卸钩单元,用于在动态库服务执行完成后,卸钩API并恢复原函数。
具体的,挂钩单元用于:调用dlopen函数打开对应API的ELF文件,并获取ELF文件的句柄,从一级映射表的句柄集中查找和匹配对应的句柄;取出匹配成功的句柄所对应的API名称集,并递增ELF文件的引用计数。
挂钩单元还用于:在调用dlopen函数打开ELF文件并获取ELF文件的句柄后,判断句柄是否满足句柄调用条件;判断句柄是否满足句柄调用条件的过程包括:判断句柄是否为空,若否,则判断ELF文件的路径名是否为空;若路径名不为空,则满足句柄调用条件,否则,从伪文件系统中读取文件路径名,其中,读取的文件路径名为/proc/self/exe;以只读方式调用open函数并返回fd,判断fd是否为-1,若否,则满足句柄调用条件。
挂钩单元还用于:当句柄未从句柄集中查找和匹配成功时,在一级映射表中新建句柄;在一级映射表中新建句柄的过程包括:读取句柄对应的ELF文件的文件头,计算ELF文件的基地址,将句柄插入至一级映射表的句柄集中。
挂钩单元还用于计算确定ELF文件的映像基地址,具体用于:获取ELF文件的程序头部表,判断ELF文件的类型,在ELF文件为DYN文件时,读取DYN文件的动态链接符号节头和字符串节头;根据动态链接符号节头确定DYN文件的动态链接符号表,根据字符串节头确定DYN文件的动态链接符号字符串表;从动态链接符号表中重复取下一个符号sym并获取sym的偏移量,判断是否达到动态链接符号表的末尾,若否,则判断sym是否为外部可见的导出函数且偏移量非0;若sym为外部可见的导出函数且偏移量非0,则从动态链接符号字符串表中获取sym的函数名称,并调用库函数返 回fun;判断fun是否为非空,fun为通过dlopen函数所获取的对应符号的函数地址,若fun非空,则设置ELF文件的映像基地址为fun和sym偏移量的差。
实施例中,挂钩单元还用于:根据动态链接符号节头确定API名称对应的索引,以及根据映象基地址和偏移量确定动态符号表和重定位链接过程表的位置,获取动态符号表和重定位链接过程表;以钩子函数替换重定位链接过程表的入口表项,并输出原函数;若替换失败,则以钩子函数替换动态符号表的入口表项,并输出原函数;判断钩子函数与原函数是否相同,若否,则判断是否为第一次挂钩该API;若为第一次挂钩该API,则将钩子函数和原函数插入至二级映射表并生成挂钩记录,否则,更新二级映射表中前次未卸钩的钩子函数为本次挂钩的钩子函数。
实施例中,卸钩单元具体用于:从二级映射表中查找对应API的挂钩记录;以原函数为钩子函数,以钩子函数替换重定位链接过程表的入口表项,并输出原函数;判断钩子函数与原函数是否相同,若否,更新二级映射表中的钩子函数为原函数;将二级映射表中的挂钩记录删除。
实施例中,卸钩单元还用于在动态库服务执行完成后,关闭ELF文件;具体用于:递减ELF文件的引用计数,判断递减后的引用次数是否为0,若是,则遍历二级映射表,卸钩API并恢复原函数;释放加载处理进程占用的内存,调用dlclose函数和close函数关闭ELF文件;将ELF文件从一级映射表中删除。
综上,以上内容仅为本发明的实施例,仅用于说明本发明的原理,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种应用于linux系统中动态库API的拦截方法,其特征在于,包括:
获取待执行的动态库服务所调用的API及钩子函数;
根据所述API从预设的双级拦截映射表中查找相应的API,将所述钩子函数与所述API的原函数挂钩,以所述钩子函数替换所述原函数执行所述动态库服务;
在所述动态库服务执行完成后,卸钩所述API并恢复所述原函数。
2.根据权利要求1所述的拦截方法,其特征在于,所述双级拦截映射表包括一级映射表和二级映射表,
其中,所述一级映射表的键为ELF文件的句柄集,值为API名称集;所述二级映射表的键为API名称,值为所述原函数和所述钩子函数。
3.根据权利要求2所述的拦截方法,其特征在于,根据所述API从预设的双级拦截映射表中查找相应的API的过程包括:
调用dlopen函数打开对应所述API的所述ELF文件,并获取所述ELF文件的句柄,从所述一级映射表的句柄集中查找和匹配对应的句柄;
取出匹配成功的句柄所对应的API名称集,并递增所述ELF文件的引用计数。
4.根据权利要求3所述的拦截方法,其特征在于,包括:在调用dlopen函数打开所述ELF文件并获取所述ELF文件的句柄后,判断所述句柄是否满足句柄调用条件;
所述判断所述句柄是否满足句柄调用条件的过程包括:
判断所述句柄是否为空,若否,则判断所述ELF文件的路径名是否为空;
若所述路径名不为空,则满足句柄调用条件,否则,从伪文件系统中读取文件路径名,其中,读取的文件路径名为/proc/self/exe;
以只读方式调用所述open函数并返回fd,判断所述fd是否为-1,若否,则满足句柄调用条件。
5.根据权利要求3所述的拦截方法,其特征在于,包括:当所述句柄未从所述句柄集中查找和匹配成功时,在所述一级映射表中新建句柄;
在所述一级映射表中新建句柄的过程包括:
读取所述句柄对应的所述ELF文件的文件头,计算所述ELF文件的基地址,将句柄插入至所述一级映射表的句柄集中。
6.根据权利要求5所述的拦截方法,其特征在于,计算确定所述ELF文件的映像基地址的过程包括:
获取所述ELF文件的程序头部表,判断所述ELF文件的类型,在所述ELF文件为DYN文件时,读取所述DYN文件的动态链接符号节头和字符串节头;
根据所述动态链接符号节头确定所述DYN文件的动态链接符号表,根据所述字符串节头确定所述DYN文件的所述动态链接符号字符串表;
从所述动态链接符号表中重复取下一个符号sym并获取所述sym的偏移量,判断是否达到所述动态链接符号表的末尾,若否,则判断sym是否为外部函数且偏移量非0;
若所述sym为外部函数且偏移量非0,则从所述动态链接符号字符串表中获取所述sym的函数名称,并调用库函数返回fun;
判断所述fun是否为非空,所述fun为通过dlopen函数所获取的对应所述符号的函数地址,若所述fun非空,则设置所述ELF文件的映像基地址为所述fun和所述sym偏移量的差。
7.根据权利要求6所述的拦截方法,其特征在于,将所述钩子函数与所述API的原函数挂钩的过程包括:
根据所述动态链接符号节头确定所述API名称对应的索引,以及根据所述映象基地址和所述偏移量确定动态符号表和重定位链接过程表的位置,获取所述动态符号表和重定位链接过程表;
以所述钩子函数替换所述重定位链接过程表的入口表项,并输出所述原函数;若替换失败,则以所述钩子函数替换所述动态符号表的入口表项,并输出所述原函数;
判断所述钩子函数与所述原函数是否相同,若否,则判断是否为第一次挂钩该API;
若为第一次挂钩该API,则将所述钩子函数和所述原函数插入至所述二级映射表并生成挂钩记录,否则,更新二级映射表中前次未卸钩的钩子函数为本次挂钩的钩子函数。
8.根据权利要求7所述的拦截方法,其特征在于,卸钩所述API并恢复所述原函数的过程包括:
从所述二级映射表中查找对应所述API的所述挂钩记录;
以所述原函数为钩子函数,以所述钩子函数替换所述重定位链接过程表的入口表项,并输出所述原函数;
判断所述钩子函数与所述原函数是否相同,若否,更新二级映射表中的钩子函数为原函数;
将所述二级映射表中的所述挂钩记录删除。
9.根据权利要求8所述的拦截方法,其特征在于,包括:在所述动态库服务执行完成后,关闭所述ELF文件;
关闭所述ELF文件的过程包括:
递减所述ELF文件的引用计数,判断递减后的所述引用次数是否为0,若是,则遍历所述二级映射表,卸钩所述API并恢复所述原函数;
释放加载所述处理进程占用的内存,调用dlclose函数和close函数关闭所述ELF文件;
将ELF文件从一级映射表中删除。
10.一种应用如权利要求1-9的任一项所述的拦截方法的装置,其特征在于,包括:
获取单元,用于获取待执行的动态库服务所对应API及钩子函数;
挂钩单元,用于根据所述API从预设的双级拦截映射表中查找相应的API,将所述钩子函数与所述API的原函数挂钩,以所述钩子函数替换所述原函数执行所述动态库服务;
卸钩单元,用于在所述动态库服务执行完成后,卸钩所述API并恢复所述原函数。
CN201610697142.7A 2016-08-19 2016-08-19 一种应用于linux系统中动态库API的拦截方法及装置 Active CN106325927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610697142.7A CN106325927B (zh) 2016-08-19 2016-08-19 一种应用于linux系统中动态库API的拦截方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610697142.7A CN106325927B (zh) 2016-08-19 2016-08-19 一种应用于linux系统中动态库API的拦截方法及装置

Publications (2)

Publication Number Publication Date
CN106325927A true CN106325927A (zh) 2017-01-11
CN106325927B CN106325927B (zh) 2019-12-17

Family

ID=57741209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610697142.7A Active CN106325927B (zh) 2016-08-19 2016-08-19 一种应用于linux系统中动态库API的拦截方法及装置

Country Status (1)

Country Link
CN (1) CN106325927B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334515A (zh) * 2017-01-20 2018-07-27 阿里巴巴集团控股有限公司 一种处理崩溃文件中堆栈地址的方法、装置及系统
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN108595218A (zh) * 2018-04-17 2018-09-28 网宿科技股份有限公司 一种加载系统动态库的方法和装置
CN108965105A (zh) * 2018-06-11 2018-12-07 山东华软金盾软件股份有限公司 一种审计tim聊天内容的方法
CN109492406A (zh) * 2018-11-15 2019-03-19 百度在线网络技术(北京)有限公司 监测内核漏洞攻击的方法、装置和系统
WO2019095968A1 (zh) * 2017-11-20 2019-05-23 华为技术有限公司 一种动态加载方法、目标文件的制作方法及装置
CN110378081A (zh) * 2019-06-06 2019-10-25 厦门网宿有限公司 一种加壳动态链接库加载方法及装置
WO2020019482A1 (zh) * 2018-07-27 2020-01-30 平安科技(深圳)有限公司 一种函数hook检测方法、检测设备及计算机可读介质
CN112416366A (zh) * 2019-08-23 2021-02-26 华为技术有限公司 一种Java语言动态挂钩子的方法、装置及设备
WO2021218172A1 (zh) * 2020-04-30 2021-11-04 平安科技(深圳)有限公司 共享库文件模拟方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029374A1 (en) * 2000-07-14 2002-03-07 Moore Richard John Generalised program hooks
CN101901313A (zh) * 2010-06-10 2010-12-01 中科方德软件有限公司 一种Linux文件保护系统及方法
CN102004890A (zh) * 2010-12-07 2011-04-06 武汉大学 一种基于网络环境的通用数字版权保护方法
CN102004884A (zh) * 2009-08-28 2011-04-06 华为技术有限公司 一种获取可执行文件输入表的方法及装置
CN103077332A (zh) * 2012-12-28 2013-05-01 飞天诚信科技股份有限公司 一种运行含有自校验的加壳程序的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029374A1 (en) * 2000-07-14 2002-03-07 Moore Richard John Generalised program hooks
CN102004884A (zh) * 2009-08-28 2011-04-06 华为技术有限公司 一种获取可执行文件输入表的方法及装置
CN101901313A (zh) * 2010-06-10 2010-12-01 中科方德软件有限公司 一种Linux文件保护系统及方法
CN102004890A (zh) * 2010-12-07 2011-04-06 武汉大学 一种基于网络环境的通用数字版权保护方法
CN103077332A (zh) * 2012-12-28 2013-05-01 飞天诚信科技股份有限公司 一种运行含有自校验的加壳程序的方法和装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334515A (zh) * 2017-01-20 2018-07-27 阿里巴巴集团控股有限公司 一种处理崩溃文件中堆栈地址的方法、装置及系统
CN108334515B (zh) * 2017-01-20 2022-07-15 阿里巴巴集团控股有限公司 一种处理崩溃文件中堆栈地址的方法、装置及系统
WO2019095968A1 (zh) * 2017-11-20 2019-05-23 华为技术有限公司 一种动态加载方法、目标文件的制作方法及装置
US10908925B2 (en) 2017-11-20 2021-02-02 Huawei Technologies Co., Ltd. Dynamic loading method, and target file creation method and apparatus
CN108415739B (zh) * 2018-02-28 2020-04-14 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN108595218A (zh) * 2018-04-17 2018-09-28 网宿科技股份有限公司 一种加载系统动态库的方法和装置
CN108595218B (zh) * 2018-04-17 2021-08-27 网宿科技股份有限公司 一种加载系统动态库的方法和装置
CN108965105A (zh) * 2018-06-11 2018-12-07 山东华软金盾软件股份有限公司 一种审计tim聊天内容的方法
CN108965105B (zh) * 2018-06-11 2021-02-26 山东华软金盾软件股份有限公司 一种审计tim聊天内容的方法
WO2020019482A1 (zh) * 2018-07-27 2020-01-30 平安科技(深圳)有限公司 一种函数hook检测方法、检测设备及计算机可读介质
CN109492406A (zh) * 2018-11-15 2019-03-19 百度在线网络技术(北京)有限公司 监测内核漏洞攻击的方法、装置和系统
CN110378081A (zh) * 2019-06-06 2019-10-25 厦门网宿有限公司 一种加壳动态链接库加载方法及装置
CN112416366A (zh) * 2019-08-23 2021-02-26 华为技术有限公司 一种Java语言动态挂钩子的方法、装置及设备
WO2021218172A1 (zh) * 2020-04-30 2021-11-04 平安科技(深圳)有限公司 共享库文件模拟方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN106325927B (zh) 2019-12-17

Similar Documents

Publication Publication Date Title
CN106325927A (zh) 一种应用于Linux系统中动态库API的拦截方法及装置
US10235141B2 (en) Method and system for providing source code suggestion to a user in real-time
US10169034B2 (en) Verification of backward compatibility of software components
CN105144088B (zh) 元数据与源代码的关联以及基于其的应用和服务
US8280908B2 (en) Merging file system directories
US8261244B2 (en) Arbitrary runtime function call tracing
US20090222691A1 (en) Data Migration Manager
US7653880B2 (en) Application of data-binding mechanism to perform command binding
US9575736B2 (en) Advanced interactive command-line front-end for graph analysis systems
US10169393B2 (en) Tracking changes among similar documents
CN106802817A (zh) SQLite数据库的升级方法及装置
CN110515543B (zh) 基于对象存储桶的快照方法、装置和系统
CN106528071A (zh) 目标代码的选取方法及装置
US20110321063A1 (en) Application settings migration using virtualization
CN110795447A (zh) 数据处理方法、数据处理系统、电子设备和介质
EP0961203A2 (en) A generic configuration file processing library and executable
Haryono et al. Androevolve: Automated update for android deprecated-api usages
CN101228509A (zh) 进行执行二进制图像的生成及执行的装置、方法、程序、及记录该程序的可由计算机读取的记录介质
CN107784055A (zh) 基于非关系型数据库的事务处理方法和装置
CN106557572A (zh) 一种安卓应用程序文件的提取方法及系统
EP2756396B1 (en) Simulation of static members and parameterized constructors on an interface-based api
CN108959548A (zh) 业务请求的处理方法及装置
JP2008123254A (ja) Java言語プログラムを用いた大規模業務系の影響分析ツール
CN111767070A (zh) Api文档管理方法、装置、计算机设备及存储介质
Hefele et al. Library usage detection in ethereum smart contracts

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 100041, room 2, building 3, building 30, Xing Xing street, Shijingshan District, Beijing,

Patentee after: Beijing Falcon Safety Technology Co.,Ltd.

Address before: 100041 Beijing city Shijingshan District Street Hing 30 Hospital No. 3 Building 2 layer A-0003

Patentee before: BEIJING KINGSOFT SECURITY MANAGEMENT SYSTEM TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 3502B, 3rd Floor, Building 4, No. 49 Badachu Road, Shijingshan District, Beijing 100144

Patentee after: Beijing Falcon Safety Technology Co.,Ltd.

Country or region after: China

Address before: 100041 room a-0003, 2 / F, building 3, yard 30, Shixing street, Shijingshan District, Beijing

Patentee before: Beijing Falcon Safety Technology Co.,Ltd.

Country or region before: China