CN101984409A - 一种用于Linux系统测试代码注入的方法 - Google Patents

一种用于Linux系统测试代码注入的方法 Download PDF

Info

Publication number
CN101984409A
CN101984409A CN2010105383755A CN201010538375A CN101984409A CN 101984409 A CN101984409 A CN 101984409A CN 2010105383755 A CN2010105383755 A CN 2010105383755A CN 201010538375 A CN201010538375 A CN 201010538375A CN 101984409 A CN101984409 A CN 101984409A
Authority
CN
China
Prior art keywords
test code
boot
ptrace
target process
code
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
CN2010105383755A
Other languages
English (en)
Other versions
CN101984409B (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.)
NR Electric Co Ltd
NR Engineering Co Ltd
Original Assignee
NR Electric Co Ltd
NR Engineering 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 NR Electric Co Ltd, NR Engineering Co Ltd filed Critical NR Electric Co Ltd
Priority to CN 201010538375 priority Critical patent/CN101984409B/zh
Publication of CN101984409A publication Critical patent/CN101984409A/zh
Application granted granted Critical
Publication of CN101984409B publication Critical patent/CN101984409B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种用于Linux系统测试代码注入的方法,步骤1,编写编译引导程序及测试代码;引导程序目的是在目标进程里申请地址空间,装载测试代码,及使申请的内存空间属性变为可执行;步骤2,关联待测进程,复制引导程序到进程地址空间;步骤3:执行引导程序并装载测试代码;在目标进程里申请地址空间,装载测试代码,并将其与原进程符号进行链接;步骤4:执行测试代码;在目标进程中创建线程,同时在目标进程里申请地址空间,装载测试代码,并将其与原进程符号链接、函数重定向工作;步骤5:脱离待测进程,恢复原进程空间指令,恢复原进程执行。本发明提供的方法能够在不中断目标进程运行,实时对目标程序进行测试代码的动态注入。

Description

一种用于Linux系统测试代码注入的方法
技术领域
本发明涉及用于Linux操作系统的测试代码注入的方法和使用该方法的软件工具。
背景技术
代码注入是指向目标程序对应的本地进程(目标进程)的地址空间注入一段可执行代码,并使进程执行这段代码,用来实现某些特殊的功能。
在Linux开发过程中,为对目标程序进行测试,经常需要在目标进程的地址空间内注入某些测试代码,用于搜集信息或其他测试目的。
在Linux系统中,每个进程都有自己的私有内存空间,互相隔离,彼此不能越界操作。把代码注入不同的进程地址空间,然后在该进程的上下文中执行注入的代码,就必须跨越进程间访问内存执行代码。代码注入技术作为病毒、木马已经存在多年,特别是在Windows系统中:为躲避系统的监控,一些木马病毒在攻击系统时往往将自身作为一个线程运行于其他应用程序的地址空间内,并监视、窃取甚至修改用户进程内的数据。这些技术也可用于软件测试领域,因为测试工具也往往需要对待测程序进行监控、获取进程数据。
目前测试代码注入方法一般有两类。第一类为直接修改目标程序的源代码即源代码插桩,由于必须拥有源代码,其局限性显而易见。例如《舰船电子工程》24卷6期《基于源代码插桩的C程序内存使用错误动态检测》、《计算机工程》36卷4期《飞行控制软件测试中插桩技术的优化方法》、专利号CN200710123818.2的《一种嵌入式系统测试方法》 及专利号CN200910054325.7的《使用监控线程对二进制翻译程序执行流程动态监控的方法》等均采用了源代码插桩方法。另一类为在目标程序运行前对目标程序二进制代码进行修改。这对于某些运行时间超长,且无法中断的程序就无能为力了。病毒传播大部分采用此方法。
下面就此文用到的一些名词进行解释。
系统调用程序是Unix/Linux操作系统向用户程序提供支持的接口,通过这些接口应用程序向操作系统请求服务,控制转向操作系统,而操作系统在完成服务后,将控制和结果返回给用户程序。Linux 包括200多个系统调用,主要分为进程控制、文件系统控制、系统控制、内存管理、网络管理、用户管理、进程通信等几类。本方法用到了一下ptrace、mmap、 mprotect等3个系统调用程序。
ptrace系统调用:提供父进程观察和控制另一个进程执行的机制,同时提供查询和修改另一进程的核心影像与寄存器的能力。主要用于执行断点调试和系统调用跟踪。
mmap系统调用:Linux中的程序执行时,需要将对应的进程映象调入进程的虚拟内存空间,就需要通过mmap系统调用向系统申请一段合适的虚拟内存空间。
mprotect系统调用:可以更改一个已经存在的内存映射区的访问权限。
函数库:函数库是用于程序的子程序(函数)的集合。其和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码。库链接是指把一个或多个库包括到程序中。有两种不同的库链接形式:静态链接和动态链接,相应的,前者链接的库叫做静态库,后者的叫做共享库或动态库。
静态链接:指将函数库的内容直接加入到可执行程序中,即程序本身拥有一份共享函数库中函数的副本,加载时只加载程序本身的文件即可。
动态链接:它提供了一种方法,使可执行程序可以调用外部函数,此函数的代码位于一个独立 SO (或DLL)文件中。该 SO(或DLL)文件包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。SO(或DLL) 有助于共享数据和资源。
装载器:程序文件的解析器,它负责解释程序文件,准备好执行环境(包括场地等资源),形成进程。对于动态链接或静态链接的程序,其装载过程不太相同。静态连接程序,装载过程简单为将程序文件映射到内存。对于动态连接的程序,工作还包括库加载和符号解析重定位。
PPC Linux 2.4.25系统:嵌入式PowerPC架构Linux系统,内核版本2.4.25。
发明内容
本发明的目的是:提供一种用于Linux系统测试代码注入的方法。
本发明的技术方案由五个步骤组成,用于Linux系统下运行进程测试代码注入的方法:
第一步骤,编写编译引导程序及测试代码;引导程序(装载器)在目标进程里申请地址空间,装载测试代码,及使申请的内存空间属性变为可执行;
若目标进程为动态共享链接而成,则测试代码编译为.so文件;若目标进程为静态链接,则编译为.o中间文件;引导程序为加载器,加载测试代码对应的.so或.o文件;
静态链接的测试代码对应的引导程序:首先利用mmap系统调用程序申请一定大小数据空间;将测试代码、即elf文件的.text .data等段数据映射到此段空间,然后执行符号链接、函数重定向操作,最后利用mprotect系统调用程序将上述内存区域设置成可执行属性;由于测试代码为中间.o目标文件,无法直接执行,而目标进程空间中存在符号表等,因此必须人工分析目标进程的二进制文件,查找测试代码.o文件所需外部符号对应位置;
动态链接的测试代码对应的引导程序:加载测试代码对应的so文件,调用Linux系统动态函数库ld.so的函数dlopen打开so文件,不需要另外编写加载器(ld.so是进程加载的第一个so文件,所有其他so文件是通过ld.so间接加载的);需要查找函数dlopen及dlsym地址。由于目标进程地址空间存在符号表、PLT及GOT表,容易获得此地址。
引导程序查找保存测试代码的入口地址,为执行测试代码做准备:动态链接的测试代码仅仅使用ld.so 的函数dlsym即可找到特定测试代码入口在内存中的地址;静态链接的测试代码,在mmap系统调用程序映射测试代码到内存空间时,知道代码段加载的内存地址,再加上测试代码入口在文件中的偏移量,即可算出测试代码的入口在内存中的实际地址;
第二步骤,关联待测进程,复制引导程序到进程地址空间;
通过ptrace系统调用调试监控目标进程,备份目标进程某内存地址步骤代码;同时将引导程序复制到此内存地址;
prace系统调用有四个参数,第一个参数决定了ptrace的行为与其它参数的使用方法;通过ptrace系统调用、调用参数PTRACE_ATTACH与目标进程建立起关联调试关系。同时备份待测进程的上下文;然后通过ptrace系统调用、调用参数PTRACE_PEEKTEXT读取用户的进程指令区中指令并备份。备份结束后,通过ptrace系统调用、调用参数PTRACE_POKETEXT将引导程序写入上述引导程序复制的内存中;
第三步骤:执行引导程序并装载测试代码;在目标进程里申请地址空间,装载测试代码,并将其与原进程符号链接;
执行引导程序并装载测试代码;引导程序在目标进程空间执行,使用ptrace系统调用改变原进程的指令寄存器值,从而达到执行引导程序的目的;对于PPC Linux 2.4.25系统,一般通过ptrace系统调用、调用参数PTRACE_POKEUSR设置指令寄存器值为引导程起始地址,并通过ptrace系统调用参数PTRACE_CONT 执行引导程序;
尤其是在引导程序最后一条指令替换为TRAP指令;这样在引导程序执行完后,可继续操作目标进程;
第四步骤:执行测试代码;在目标进程中创建线程,同时在目标进程里申请地址空间,装载测试代码,并将其与原进程符号链接、函数重定向工作;
再次通过ptrace系统调用调用参数PTRACE_POKEUSR设置指令寄存器值为测试代码起始地址,并通过ptrace系统调用参数PTRACE_CONT 执行测试程序;测试代码执行时在目标进程中创建一测试线程,当最后进程恢复时,测试线程仍驻留在进程中; 
第五步骤:脱离待测进程,恢复原进程空间指令,恢复原进程执行;
在脱离目标进程前,先用备份的指令恢复被引导程序覆盖的代码段;其次,还需要恢复目标进程上下文,也采用备份上下文恢复;恢复完后ptrace系统调用调用(参数PTRACE_CONT)继续执行原进程,这样就脱离了目标进程,原进程也恢复了执行。
本发明的有益效果:本发明提供的方法能够在不中断被检测目标程序运行,不需要更改目标代码的情况下,实时对目标程序注入测试代码用于测试。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1是一个静态链接的引导程序流程图。
图2是一个动态链接的引导程序流程图。
图3是系统流程图。
具体实施方式
分五步骤内容,下面以PPC Linux 2.4.25为例说明这一过程。
第一步骤为编写、编译引导程序及测试代码。测试代码根据目标进程类型编译为共享库文件.so或简单.o文件。若目标进程为动态共享链接而成,则测试代码也编译为.so文件。若目标进程为静态链接,则编译为.o中间文件。引导程序实际为一加载器,主要功能为加载测试代码对应的.so或.o文件。具体流程如图1和图2所示
静态链接的测试代码对应的引导程序主要功能为:首先利用mmap系统调用申请一定大小数据空间,将测试代码(elf文件的.text .data等段数据)映射到此段空间,然后执行符号链接、函数重定向操作,最后利用mprotect系统调用将上述内存区域设置成可执行属性。由于测试代码为中间.o目标文件,无法直接执行,而目标进程空间中符号表等,因此必须人工分析目标进程的二进制文件,查找测试代码.o文件所需外部符号对应位置,手工进行链接操作。为减少手工链接工作量,测试代码尽可能少引用库函数(或自己编写库函数),尽可能直接使用系统调用。
动态链接的测试代码对应的引导程序主要功能为:由于Linux系统唯一的动态库引导程序ld.so在目标代码开始执行时已经加载到了其进程空间,因此加载测试代码对应的so文件,可简单的调用ld.so 的函数dlopen打开so文件,不需要另外编写加载器。唯一的工作为查找函数dlopen及dlsym地址。由于目标进程地址空间存在符号表、PLT及GOT表,因此此地址也较容易获得。
引导程序最后的功能为查找保存测试代码的入口地址,为执行测试代码做准备。动态链接的测试代码仅仅使用ld.so 的函数dlsym即可找到特定测试代码入口在内存中的地址。静态链接的测试代码,在mmap映射测试代码到内存空间时,已经知道代码段加载的内存地址,再加上测试代码入口在文件中的偏移量,即可算出测试代码的入口在内存中的实际地址
第二步骤:调试关联待测进程,复制引导程序到进程地址空间,用于最后的指令恢复与执行。在Linux系统中,为方便软件的开发和调试,提供了一种对运行中的进程进行跟踪和控制的手段,那就是系统调用ptrace。ptrace提供了一种使父进程监视和控制其它进程的方式,它还能够改变子进程中的寄存器和内核映像,实现断点调试和系统调用的跟踪。prace调用有四个参数,它的第一个参数决定了ptrace的行为与其它参数的使用方法。通过ptrace调用参数PTRACE_ATTACH与目标进程建立起关联调试关系,同时备份进程上下文环境,然后通过ptrace调用参数PTRACE_PEEKTEXT读取用户的进程指令区中指令并备份。备份结束后,通过ptrace调用参数PTRACE_POKETEXT将引导程序写入上述内存中。
第三步骤:执行引导程序,装载测试代码。引导程序必须在目标进程空间执行。这里使用ptrace调用方法改变原进程的指令寄存器值,从而达到执行引导程序的目的。对于PPC Linux 2.4.25系统,一般通过ptrace调用参数PTRACE_POKEUSR设置指令寄存器值为引导程起始地址,并通过ptrace调用参数PTRACE_CONT 执行引导程序。为了让引导程序执行完后,目标程序能继续接受控制,这里在引导程序最后一条指令替换为TRAP指令。这样引导程序执行完后,我们可以继续操作目标进程。
第四步骤:执行测试代码;在目标进程中创建线程,同时在目标进程里申请地址空间,装载测试代码,并将其与原进程符号链接、函数重定向工作。这里再次通过ptrace调用(参数PTRACE_POKEUSR)设置指令寄存器值为测试代码起始地址,并通过ptrace调用(参数PTRACE_CONT) 执行测试程序。测试代码执行时可在目标进程中创建一测试线程,这样等到最后进程恢复时,测试线程仍驻留在目标进程中继续运行。
第五步骤:恢复原进程空间指令,脱离待测进程,恢复原进程执行。在脱离目标进程前,我们首先用备份的指令恢复被引导程序覆盖的代码段。其次,再恢复目标进程上下文环境,也采用备份上下文恢复。恢复完后ptrace调用参数PTRACE_CONT继续执行原进程,这样我们就脱离了目标进程,原进程也恢复了执行。
整个系统流程如图3所示。
实验结果表明,利用上述方法开发的测试工具能实时将测试代码注入到运行中的进程中去,不受测试代码大小限制,提高了测试工具的应用能力。

Claims (9)

1.一种用于Linux系统测试代码注入的方法,其特征是:
步骤1,编写编译引导程序及测试代码;引导程序目的是在目标进程里申请地址空间,装载测试代码,及使申请的内存空间属性变为可执行;
步骤2,关联待测进程,复制引导程序到进程地址空间;
步骤3:执行引导程序并装载测试代码;在目标进程里申请地址空间,装载测试代码,并将其与原进程符号进行链接;
步骤4:执行测试代码;在目标进程中创建线程,同时在目标进程里申请地址空间,装载测试代码,并将其与原进程符号链接、函数重定向工作;
步骤5:脱离待测进程,恢复原进程空间指令,恢复原进程执行。
2.如权利要求1所述的用于Linux系统测试代码注入的方法,其特征是:步骤1中测试代码根据目标进程类型编译为共享库文件.so或简单.o文件;若目标进程为动态(共享)链接而成,则测试代码也编译为.so文件,若目标进程为静态链接,则编译为.o中间文件;
所述静态链接的测试代码对应的引导程序:首先利用mmap系统调用程序申请一定大小数据空间;将测试代码即elf文件的.text与.data等段数据映射到此段空间,然后执行符号链接、函数重定向操作,最后利用mprotect系统调用程序将上述内存区域设置成可执行属性;由于测试代码为中间.o目标文件,无法直接执行,而目标进程空间中存在符号表等,因此必须人工分析目标进程的二进制文件,查找测试代码.o文件所需外部符号对应位置;
所述动态链接的测试代码对应的引导程序:加载测试代码对应的so文件,调用Linux系统动态函数库ld.so ;动态链接、目标进程必须加载的第一个so文件的函数dlopen打开so文件,不需要另外编写加载器;需要查找函数dlopen及dlsym地址;
引导程序查找保存测试代码的入口地址,为执行测试代码做准备:动态链接的测试代码仅仅使用ld.so 的函数dlsym即可找到特定测试代码入口在内存中的地址;静态链接的测试代码,在mmap系统调用程序映射测试代码到内存空间时,知道代码段加载的内存地址,再加上测试代码入口在文件中的偏移量,即可算出测试代码的入口在内存中的实际地址。
3.如权利要求1所述的用于Linux系统测试代码注入的方法,其特征是:步骤2中通过ptrace系统调用调试监控目标进程,备份目标进程某内存地址步骤代码;同时将引导程序复制到此内存地址。
4.由权利要求1所述用于Linux系统测试代码注入的方法,其特征是:在步骤3过程中,引导程序包含一简单程序加载器,用于测试代码的动态加载,包括符号解析、链接、函数重定向。
5.如权利要求1所述的用于Linux系统测试代码注入的方法,其特征是:步骤3中执行引导程序并装载测试代码;引导程序在目标进程空间执行,使用ptrace系统调用改变原进程的指令寄存器值,从而达到执行引导程序的目的。
6.如权利要求5所述的用于Linux系统测试代码注入的方法,其特征是:步骤3中prace系统调用有四个参数,第一个参数决定了ptrace的行为与其它参数的使用方法;通过ptrace系统调用、调用参数PTRACE_ATTACH与目标进程建立起关联调试关系,同时备份目标进程的上下文;然后通过ptrace系统调用、调用参数PTRACE_PEEKTEXT读取用户的进程指令区中指令并备份;备份结束后,通过ptrace系统调用参数PTRACE_POKETEXT将引导程序写入上述引导程序复制的内存中。
7.根据权利要求1所述的用于Linux系统测试代码注入的方法,其特征是,步骤3中在引导程序最后一条指令替换为TRAP指令;这样在引导程序执行完后,可继续操作目标进程。
8.如权利要求1所述的用于Linux系统测试代码注入的方法,其特征是:步骤4中再次通过ptrace系统调用设置指令寄存器的值为测试代码起始地址,参数为PTRACE_POKEUSR,并通过ptrace系统调用执行测试程序,参数为PTRACE_CONT;测试代码执行时在目标进程中创建一测试线程,当最后进程恢复时,测试线程仍驻留在目标进程中,可继续进行测试任务。
9.如权利要求1所述的用于Linux系统测试代码注入的方法,其特征是:步骤5中在脱离目标进程前,先用步骤2备份的指令恢复被引导程序覆盖的代码指令;其次,恢复目标进程的上下文,也采用步骤2备份的上下文恢复;恢复完后ptrace系统调用调用参数PTRACE_CONT继续执行原进程,这样就脱离了目标进程,原进程也恢复了执行。
CN 201010538375 2010-11-10 2010-11-10 一种用于Linux系统测试代码注入的方法 Expired - Fee Related CN101984409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010538375 CN101984409B (zh) 2010-11-10 2010-11-10 一种用于Linux系统测试代码注入的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010538375 CN101984409B (zh) 2010-11-10 2010-11-10 一种用于Linux系统测试代码注入的方法

Publications (2)

Publication Number Publication Date
CN101984409A true CN101984409A (zh) 2011-03-09
CN101984409B CN101984409B (zh) 2013-03-13

Family

ID=43641578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010538375 Expired - Fee Related CN101984409B (zh) 2010-11-10 2010-11-10 一种用于Linux系统测试代码注入的方法

Country Status (1)

Country Link
CN (1) CN101984409B (zh)

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841795A (zh) * 2011-06-24 2012-12-26 镇江华扬信息科技有限公司 一种远程线程注入技术方法
CN102929716A (zh) * 2012-11-07 2013-02-13 北京亿赛通科技发展有限责任公司 一种启动多进程的方法
CN103092760A (zh) * 2013-01-30 2013-05-08 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN103379481A (zh) * 2012-04-26 2013-10-30 腾讯科技(深圳)有限公司 一种实现安全防护的方法及一种防火墙
CN103699835A (zh) * 2013-12-11 2014-04-02 西安交通大学 一种面向Android系统资源的访问控制方法
CN104077184A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 一种应用程序的进程控制方法及计算机系统
CN104657258A (zh) * 2013-11-21 2015-05-27 腾讯科技(深圳)有限公司 一种向目标进程内注入Java字节码的方法及装置
CN104732144A (zh) * 2015-04-01 2015-06-24 河海大学 一种基于伪协议的远程代码注入漏洞检测方法
CN104932972A (zh) * 2014-03-19 2015-09-23 北京娜迦信息科技发展有限公司 一种反动态调试应用程序的方法及装置
CN104978227A (zh) * 2014-04-08 2015-10-14 腾讯科技(深圳)有限公司 一种进程控制方法、装置,及系统
CN105094777A (zh) * 2014-05-14 2015-11-25 腾讯科技(深圳)有限公司 实现应用截屏的方法及装置
CN105677423A (zh) * 2016-01-11 2016-06-15 曾戟 一种资源下载方法和装置
CN105989286A (zh) * 2015-08-28 2016-10-05 武汉安天信息技术有限责任公司 一种分析可执行文件判断高危文件的方法及系统
CN106970806A (zh) * 2015-10-02 2017-07-21 洛克威尔自动控制技术股份有限公司 用于对正在控制工业过程的控制程序进行更新的系统
CN107085514A (zh) * 2017-03-06 2017-08-22 北京安博通科技股份有限公司 共享库升级方法及装置
CN107239410A (zh) * 2017-05-31 2017-10-10 上海交通大学 基于动态插桩的大块内存分配系统及方法
CN107423225A (zh) * 2017-08-10 2017-12-01 中国民航信息网络股份有限公司 对C++单元测试进行Mock的方法及装置
CN108519924A (zh) * 2018-03-06 2018-09-11 许继集团有限公司 一种嵌入式测控装置的在线故障定位方法、系统及装置
CN109001999A (zh) * 2018-08-03 2018-12-14 德丰电创科技股份有限公司 电动工具开关子模块化控制设备方法和系统
CN109992328A (zh) * 2019-03-14 2019-07-09 北京椒图科技有限公司 一种函数重定向方法及装置
CN110399184A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 区块链中智能合约的执行方法及装置
CN111488282A (zh) * 2020-04-13 2020-08-04 龙芯中科技术有限公司 业务功能处理方法、装置、电子设备及存储介质
CN112231221A (zh) * 2020-10-26 2021-01-15 积成电子股份有限公司 一种嵌入式Linux系统应用程序的调测方法及系统
CN112650539A (zh) * 2019-09-26 2021-04-13 无锡江南计算技术研究所 面向异构众核处理器的动态链接运行支撑方法
CN112988127A (zh) * 2021-01-28 2021-06-18 网宿科技股份有限公司 Cdn业务定制方法及系统
CN114217880A (zh) * 2021-12-23 2022-03-22 湖南小算科技信息有限公司 一种突破安卓幽灵进程限制的方法
CN114253615A (zh) * 2021-12-16 2022-03-29 安天科技集团股份有限公司 一种引导程序设置方法、装置、电子设备及存储介质
US20220100482A1 (en) * 2020-09-28 2022-03-31 Red Hat, Inc. Pathname independent probing of binaries
CN114840847A (zh) * 2021-02-02 2022-08-02 武汉斗鱼鱼乐网络科技有限公司 在目标进程中安全创建线程的方法、装置、介质及设备
WO2023155686A1 (zh) * 2022-02-15 2023-08-24 阿里云计算有限公司 一种数据处理的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101470619A (zh) * 2007-12-29 2009-07-01 安凯(广州)软件技术有限公司 一种基于微核操作系统的应用程序动态加载方法
CN101668283A (zh) * 2008-09-01 2010-03-10 沃勤网络科技(上海)有限公司 一种手机嵌入式系统中动态加载的方法
CN101763273A (zh) * 2008-12-26 2010-06-30 上海闻泰电子科技有限公司 一种在嵌入式系统的扩展存储器中动态装入代码的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101470619A (zh) * 2007-12-29 2009-07-01 安凯(广州)软件技术有限公司 一种基于微核操作系统的应用程序动态加载方法
CN101668283A (zh) * 2008-09-01 2010-03-10 沃勤网络科技(上海)有限公司 一种手机嵌入式系统中动态加载的方法
CN101763273A (zh) * 2008-12-26 2010-06-30 上海闻泰电子科技有限公司 一种在嵌入式系统的扩展存储器中动态装入代码的方法

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841795A (zh) * 2011-06-24 2012-12-26 镇江华扬信息科技有限公司 一种远程线程注入技术方法
CN103379481B (zh) * 2012-04-26 2015-05-06 腾讯科技(深圳)有限公司 一种实现安全防护的方法
WO2013159632A1 (zh) * 2012-04-26 2013-10-31 腾讯科技(深圳)有限公司 实现安全防护的方法、防火墙、终端及可读存储介质
CN103379481A (zh) * 2012-04-26 2013-10-30 腾讯科技(深圳)有限公司 一种实现安全防护的方法及一种防火墙
US9584476B2 (en) 2012-04-26 2017-02-28 Tencent Technology (Shenzhen) Company Limited Safety protection method, firewall, terminal device and computer-readable storage medium
CN102929716B (zh) * 2012-11-07 2015-04-15 北京亿赛通科技发展有限责任公司 一种启动多进程的方法
CN102929716A (zh) * 2012-11-07 2013-02-13 北京亿赛通科技发展有限责任公司 一种启动多进程的方法
CN103092760B (zh) * 2013-01-30 2015-11-11 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN103092760A (zh) * 2013-01-30 2013-05-08 北京控制工程研究所 一种软件修正性在轨维护优化方法
CN104077184A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 一种应用程序的进程控制方法及计算机系统
CN104657258A (zh) * 2013-11-21 2015-05-27 腾讯科技(深圳)有限公司 一种向目标进程内注入Java字节码的方法及装置
CN104657258B (zh) * 2013-11-21 2018-10-30 腾讯科技(深圳)有限公司 一种向目标进程内注入Java字节码的方法及装置
CN103699835A (zh) * 2013-12-11 2014-04-02 西安交通大学 一种面向Android系统资源的访问控制方法
CN103699835B (zh) * 2013-12-11 2016-08-17 西安交通大学 一种面向Android系统资源的访问控制方法
CN104932972B (zh) * 2014-03-19 2018-10-09 北京娜迦信息科技发展有限公司 一种反动态调试应用程序的方法及装置
CN104932972A (zh) * 2014-03-19 2015-09-23 北京娜迦信息科技发展有限公司 一种反动态调试应用程序的方法及装置
CN104978227A (zh) * 2014-04-08 2015-10-14 腾讯科技(深圳)有限公司 一种进程控制方法、装置,及系统
CN104978227B (zh) * 2014-04-08 2019-04-26 腾讯科技(深圳)有限公司 一种进程控制方法、装置,及系统
CN105094777A (zh) * 2014-05-14 2015-11-25 腾讯科技(深圳)有限公司 实现应用截屏的方法及装置
CN104732144B (zh) * 2015-04-01 2017-06-23 河海大学 一种基于伪协议的远程代码注入漏洞检测方法
CN104732144A (zh) * 2015-04-01 2015-06-24 河海大学 一种基于伪协议的远程代码注入漏洞检测方法
CN105989286A (zh) * 2015-08-28 2016-10-05 武汉安天信息技术有限责任公司 一种分析可执行文件判断高危文件的方法及系统
CN106970806A (zh) * 2015-10-02 2017-07-21 洛克威尔自动控制技术股份有限公司 用于对正在控制工业过程的控制程序进行更新的系统
CN106970806B (zh) * 2015-10-02 2020-04-21 罗克韦尔自动化技术公司 用于对正在控制工业过程的控制程序进行更新的系统
CN105677423A (zh) * 2016-01-11 2016-06-15 曾戟 一种资源下载方法和装置
CN107085514A (zh) * 2017-03-06 2017-08-22 北京安博通科技股份有限公司 共享库升级方法及装置
CN107239410A (zh) * 2017-05-31 2017-10-10 上海交通大学 基于动态插桩的大块内存分配系统及方法
CN107239410B (zh) * 2017-05-31 2020-06-09 上海交通大学 基于动态插桩的大块内存分配系统及方法
CN107423225A (zh) * 2017-08-10 2017-12-01 中国民航信息网络股份有限公司 对C++单元测试进行Mock的方法及装置
CN108519924A (zh) * 2018-03-06 2018-09-11 许继集团有限公司 一种嵌入式测控装置的在线故障定位方法、系统及装置
CN108519924B (zh) * 2018-03-06 2021-02-05 许继集团有限公司 一种嵌入式测控装置的在线故障定位方法、系统及装置
CN109001999A (zh) * 2018-08-03 2018-12-14 德丰电创科技股份有限公司 电动工具开关子模块化控制设备方法和系统
CN109001999B (zh) * 2018-08-03 2020-09-08 德丰电创科技股份有限公司 电动工具开关测试方法和系统
CN109992328B (zh) * 2019-03-14 2023-05-12 北京椒图科技有限公司 一种函数重定向方法及装置
CN109992328A (zh) * 2019-03-14 2019-07-09 北京椒图科技有限公司 一种函数重定向方法及装置
CN110399184A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 区块链中智能合约的执行方法及装置
CN110399184B (zh) * 2019-07-31 2023-04-25 中国工商银行股份有限公司 区块链中智能合约的执行方法及装置
CN112650539B (zh) * 2019-09-26 2022-07-12 无锡江南计算技术研究所 面向异构众核处理器的动态链接运行支撑方法
CN112650539A (zh) * 2019-09-26 2021-04-13 无锡江南计算技术研究所 面向异构众核处理器的动态链接运行支撑方法
CN111488282A (zh) * 2020-04-13 2020-08-04 龙芯中科技术有限公司 业务功能处理方法、装置、电子设备及存储介质
CN111488282B (zh) * 2020-04-13 2023-11-07 龙芯中科技术股份有限公司 业务功能处理方法、装置、电子设备及存储介质
US11599342B2 (en) * 2020-09-28 2023-03-07 Red Hat, Inc. Pathname independent probing of binaries
US20220100482A1 (en) * 2020-09-28 2022-03-31 Red Hat, Inc. Pathname independent probing of binaries
CN112231221A (zh) * 2020-10-26 2021-01-15 积成电子股份有限公司 一种嵌入式Linux系统应用程序的调测方法及系统
CN112988127A (zh) * 2021-01-28 2021-06-18 网宿科技股份有限公司 Cdn业务定制方法及系统
CN114840847A (zh) * 2021-02-02 2022-08-02 武汉斗鱼鱼乐网络科技有限公司 在目标进程中安全创建线程的方法、装置、介质及设备
CN114253615A (zh) * 2021-12-16 2022-03-29 安天科技集团股份有限公司 一种引导程序设置方法、装置、电子设备及存储介质
CN114253615B (zh) * 2021-12-16 2023-08-11 安天科技集团股份有限公司 一种引导程序设置方法、装置、电子设备及存储介质
CN114217880A (zh) * 2021-12-23 2022-03-22 湖南小算科技信息有限公司 一种突破安卓幽灵进程限制的方法
WO2023155686A1 (zh) * 2022-02-15 2023-08-24 阿里云计算有限公司 一种数据处理的方法和装置

Also Published As

Publication number Publication date
CN101984409B (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
CN101984409B (zh) 一种用于Linux系统测试代码注入的方法
US5956479A (en) Demand based generation of symbolic information
Chipounov et al. Selective symbolic execution
US6968540B2 (en) Software instrumentation method and apparatus
US20100095281A1 (en) Internal Function Debugger
US20060130016A1 (en) Method of kernal-mode instruction interception and apparatus therefor
US7263689B1 (en) Application program interface for dynamic instrumentation of a heterogeneous program in a distributed environment
EP0926592B1 (en) Software emulation system
US20050108562A1 (en) Technique for detecting executable malicious code using a combination of static and dynamic analyses
CN108369520B (zh) 保护基本输入/输出(bios)代码
US11507362B1 (en) System and method for generating a binary patch file for live patching of an application
US20070294675A1 (en) Method and apparatus for handling exceptions during binding to native code
Johnson Some requirements for architectural support of software debugging
Janin et al. Care, the comprehensive archiver for reproducible execution
JP2001519953A (ja) マイクロプロセッサの改良
CN102364433B (zh) 在ARM处理器上实现Wine构建工具移植的方法
CN110663082B (zh) 数据处理系统和方法
Ma et al. A stack-on-demand execution model for elastic computing
CN107368739B (zh) 一种内核驱动的监视方法和装置
AU638999B2 (en) Incremental compiler for source-code development system
CN109857522B (zh) 一种面向kvm的虚拟化层故障注入方法
CN102831334A (zh) 一种目标地址定位方法和系统
Stadler et al. Lazy continuations for Java virtual machines
Steinert et al. Object versioning to support recovery needs: Using proxies to preserve previous development states in lively
Kiss et al. Using dynamic information in the interprocedural static slicing of binary executables

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130313

Termination date: 20201110