CN101719077B - 在.Net程序中注入代码的方法和装置 - Google Patents

在.Net程序中注入代码的方法和装置 Download PDF

Info

Publication number
CN101719077B
CN101719077B CN200910243880.4A CN200910243880A CN101719077B CN 101719077 B CN101719077 B CN 101719077B CN 200910243880 A CN200910243880 A CN 200910243880A CN 101719077 B CN101719077 B CN 101719077B
Authority
CN
China
Prior art keywords
executable file
address
net
iat
new
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
CN200910243880.4A
Other languages
English (en)
Other versions
CN101719077A (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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN200910243880.4A priority Critical patent/CN101719077B/zh
Publication of CN101719077A publication Critical patent/CN101719077A/zh
Priority to US12/989,681 priority patent/US8739119B2/en
Priority to PCT/CN2010/075516 priority patent/WO2011076010A1/zh
Application granted granted Critical
Publication of CN101719077B publication Critical patent/CN101719077B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

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

Abstract

本发明公开了一种在.Net程序中注入代码的方法和装置,属于信息安全领域。所述方法包括:在.Net可执行文件的引入表中写入待注入代码的信息;在.Net可执行文件的IAT中添加待注入代码的地址,构建成新的IAT;将.Net可执行文件的入口点偏移地址修改为新的IAT的地址;修改.Net可执行文件中元数据表头中的标记,使得.Net可执行文件在执行时满足认证要求。所述装置包括:写入模块、构建模块和修改模块。本发明实现了在.Net可执行文件中注入代码,抛弃了对汇编和反汇编工具的依赖,容易实现,解决了.Net可执行文件注入代码效率低、稳定性和兼容性差的问题。

Description

在.Net程序中注入代码的方法和装置
技术领域
本发明涉及信息安全领域,特别涉及一种在.Net程序中注入代码的方法和装置。
背景技术
.Net是微软的新一代技术平台,是全新的基于互联网的跨语言软件开发平台,顺应了当今软件工业分布式计算、面向组件、企业级应用、软件服务化和以Web为中心等大趋势。.Net并非开发语言,但是在.Net开发平台上可以支持多门开发语言,如C#语言、C++、Visual Basic、Jscript等。
.Net程序的编译分为两个阶段,首先高级语言的.Net程序被编译成一种称作IL(中间代码)的中间语言,然后将IL编译成机器语言。与高级语言相比,IL更像是机器语言,然而,IL却包含一些抽象概念,如类和异常等,这也是这种语言被称为中间语言的原因。
现有技术在.Net程序中注入代码时,通常先将.Net程序的EXE文件反编译成IL代码,然后插入IL代码,如加解密函数的IL代码,最后再编译成.Net程序。该方法需要经过反编译和编译的过程,复杂繁琐,效率较低,兼容性差,而且对.Net程序的限制比较多。比如,不能在汇编和IL混编的程序VC.NET编译的程序中注入代码。
发明内容
为了克服现有技术的缺陷,本发明实施例提供了一种在.Net程序中注入代码的方法和装置。所述技术方案如下:
一种在.Net程序中注入代码的方法,所述方法包括:
在.Net可执行文件的引入表中写入待注入代码的信息;
在所述.Net可执行文件的导入地址表IAT中添加待注入代码的地址,构建成新的IAT;
将所述.Net可执行文件的入口点偏移地址修改为所述新的IAT的地址;
修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求。
在导入地址表IAT中添加待注入代码的地址,构建成新的IAT,具体包括:
启用一个新的地址,将所述.Net可执行文件的导入地址表IAT的内容复制到所述新的地址中;
在复制的内容之后添加待注入代码的地址,构建成新的IAT,所述新的IAT的地址为所述新的地址。
修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求,具体包括:
将所述.Net可执行文件中元数据表头中的标记修改为0,使得所述.Net可执行文件在执行时满足认证要求。
在.Net可执行文件的引入表中写入待注入代码的信息之前,还包括:
将.Net程序原码编译成.Net可执行文件。
所述信息包括所述待注入代码的引擎动态链接库和所述待注入代码对应的函数。
一种在.Net程序中注入代码的装置,所述装置包括:
写入模块,用于在.Net可执行文件的引入表中写入待注入代码的信息;
构建模块,用于在所述.Net可执行文件的导入地址表IAT中添加待注入代码的地址,构建成新的IAT,将所述.Net可执行文件的入口点偏移地址修改为所述新的IAT的地址;
修改模块,用于修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求。
所述构建模块具体包括:
构建单元,用于启用一个新的地址,将所述.Net可执行文件的导入地址表IAT的内容复制到所述新的地址中,在复制的内容之后添加待注入代码的地址,构建成新的IAT,所述新的IAT的地址为所述新的地址。
所述修改模块具体包括:
修改单元,用于将所述.Net可执行文件中元数据表头中的标记修改为0,使得所述.Net可执行文件在执行时满足认证要求。
所述装置还包括:
编译模块,用于在所述写入模块在.Net可执行文件的引入表中写入待注入代码的信息之前,将.Net程序原码编译成.Net可执行文件。
所述信息包括所述待注入代码的引擎动态链接库和所述待注入代码对应的函数。
本发明实施例提供的上述技术方案,实现了在.Net可执行文件中注入代码,抛弃了对汇编和反汇编工具的依赖,容易实现,解决了.Net可执行文件注入代码效率低、稳定性和兼容性差的问题。
附图说明
图1是本发明实施例1提供的一种在.Net程序中注入代码的方法流程图;
图2是本发明实施例1提供的另一种在.Net程序中注入代码的方法流程图;
图3是本发明实施例2提供的在.Net程序中注入代码的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种在.Net程序中注入代码的方法,包括:
步骤101:在.Net可执行文件的引入表中写入待注入代码的信息;
步骤102:在.Net可执行文件的导入地址表IAT中添加待注入代码的信息的地址,构建成新的IAT;
步骤103:将.Net可执行文件的入口点偏移地址修改为新的IAT的地址;
步骤104:修改.Net可执行文件中元数据表头中的标记,使得.Net可执行文件在执行时满足认证要求。
本发明实施例中,待注入代码是用户根据需要预先设定的,具体内容本发明实施例对此不做限定。通常设置为函数,可以为一个,也可以为多个。下面以待注入代码为一个加解密函数为例,具体说明上述方法。参见图2,本实施例提供的上述方法,可以具体包括:
步骤201:对.Net程序原码进行编译,得到.Net程序原码的可执行文件。
其中,.Net程序原码的编译分为两个阶段,首先是将高级语言.Net程序原码编译成一种IL代码,再将IL代码编译成可执行文件。
通常,编译后得到的.Net可执行文件中包含有如下信息:标准的可执行文件信息、区块表和元数据表等。其中,标准的可执行文件信息是指可执行文件中标准的PE(PortableExecutable,可移植的可执行文件)文件头和区块表。该PE文件头可以用来识别当前文件是否为可执行文件,区块表是用来存放代码、资源、数据等,元数据表也可以位于区块表中,用来存放各种.Net数据,如:类、参数和函数等等。
例如,有一个.Net程序原码,内容如下:
namespace ConsoleApp
{
    class Program
    {
          static void Main(string[]args)
          {
                 String str=″This is a test!″;
                 Console.WriteLine(str);
          }
    }
}
将上述.Net程序原码编译后得到可执行文件ConsoleApp.exe,该可执行文件的组成如下表所示:
表1
  Dos Header
  NT Header
  Section Headers
  Import PagesImport InformationExport PagesExport InformationResource PagesResource Information....
  CLR Header
  Meta Tables ...
其中,Dos Header和NT Header为PE文件头;Section Headers为区块表头;区块表头下面的内容为区块表,存放有引入表、输出表、资源表、代码等信息;CLR Header为元数据表头;Meta Tables为元数据表。引入表包括:Import Pages和Import Information。输出表包括:Export Pages和Export Information。资源表包括:Resource Pages和Resource Information。无用区块表在表1中未示出。
.Net程序原码的可执行文件的引入表是PE文件格式中的一个概念,它描述了PE文件中引入的其它关联DLL(Dynamic Link Library,动态链接库)以及DLL中的函数。
其中,DLL是作为共享函数库的可执行文件为动态链接提供的一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。DLL是一个包含可由多个程序同时使用的代码和数据的库。通过使用DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售,可以在运行时将各个模块加载到主程序中。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
步骤202:在.Net可执行文件的引入表中写入待注入代码的信息,该信息包括待注入代码的引擎动态链接库和待注入代码对应的函数。
以上述可执行文件ConsoleApp.exe为例,其已引入了一个外部的DLL:mscoree.dll,且引入了该mscoree.dll中的一个输出函数_CorExeMain,该可执行文件ConsoleApp.exe的引入表具体如下:
【Import Tables】
DllName OriginaFirstThunk TimeDateStamp ForwarderChain Name
mscoree.dll 0000A23  000000000  00000000  0000A24C
FirstThunk ThunkRVA ThunkOffset ThunkValue Hint  ApiName
0000A228   0000A230 00006830    0000A23E   0000  _CorExeMain
引入表中的上述信息均为mscoree.dll的相关信息,其中包括:引入的外部DLL库的名称mscoree.dll,以及引入的函数的名称CorExeMain等等。
其中,mscoree.dll是.Net Framework相关组件,该文件是一个浏览器插件(BHO),每次当用户打开互联网浏览器时它都会自动打开及启动。BHO因为会被认定为浏览器本身,所以都不会被个人防火墙所阻挡,广告和间谍程序都会利用到这个形式。_CorExeMain函数用来指示Windows加载程序在可执行映像中查找入口点。
本实施例以待注入代码为Startup函数为例进行说明,该Startup函数的引擎链接库为Engine.dll,则在上述引入表中加入该待注入代码的相关信息,得到如下的引入表:
【Import Tables】
DllName    OriginaFirstThunk TimeDateStamp ForwarderChain  Name
mscoree.dll  0000A230    00000000    00000000    0000A24C
Engine.dll   0000B5C0    00000000    00000000    0000B602
FirstThunk   ThunkRVA    ThunkOffset ThunkValue Hint    ApiName
0000A228     0000A230    00006830    0000A23E   0000    _CorExeMain
0000B612     0000B5C0    00009830    0000B5CE   0000    Startup
上述Startup函数的形式可以如下:
BOOL_declspec(dllexport)Startup()
{
  //在这里实现本函数的功能,如加解密功能;
  return TRUE;
}
上述Startup函数的DLL库具体如下:
BOOL APIENTRY DllMain(HMODULE hModule,
                 DWORD ul reason for call,
                 LPVOID lpReserved
                 )
{
   switch(ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:{
        break;
                       }
  case DLL_THREAD_ATTACH:
  case DLL_THREAD_DETACH:
  case DLL_PROCESS_DETACH:
      break;
  }
  return TRUE;
}
步骤203:用上述.Net可执行文件的IAT(Import Address Table,导入地址表)和待注入代码的地址,构建新的IAT。
IAT中描述了.Net可执行文件所有引用的导入函数的真实地址。导入函数是指被.Net程序调用但其执行代码又不在.Net程序中的函数,这些函数的代码位于一个或者多个DLL中,当.Net可执行文件被装入内存的时候,Windows装载器才将该DLL装入,并将调用导入函数的指令和该函数实际所处的地址联系起来,完成动态链接。其中,将调用导入函数的指令和该函数实际所处的地址联系起来,就是依靠IAT来完成的。
本实施例中,由于要在.Net可执行文件中注入代码,因此,需要在IAT中添加待注入代码的地址。对于上述例子而言,需要在IAT中添加函数Startup的地址,以便于后续调用该函数时完成该函数的关联。其中,原来的IAT中仅包含了.Net可执行文件引入的输出函数_CorExeMain的地址,具体如下:
Address
3E A2 00 00 00 00 00 00
在该IAT中添加函数Startup的地址后,得到的新的IAT具体如下:
Address
3E A2 00 00 CE B5 00 00 00 00 00 00
通常,由于原有的IAT占用的存储空间是大小固定的,无法直接将Startup函数的地址添加到该IAT中,因此,采用如下方法构建新的IAT:
启用一个新的地址,即开辟一块新的存储空间,将.Net可执行文件的原有的IAT的内容复制到该新的地址中,在复制的内容之后添加待注入代码的地址,构建成新的IAT,该新的IAT的地址就是上述启用的新的地址。例如,原有IAT存储于地址0X2000,长度为4个字节,启用一个新的地址0X5000,长度为8个字节,先将原有IAT中的内容共4个字节复制到地址0X5000中,然后在其后添加Startup函数的地址占用4个字节,则得到8个字节的新的IAT,该新的IAT的地址为0X5000。原有的IAT则弃用。
步骤204:将.Net可执行文件的入口点偏移地址修改为上述新的IAT的地址。
其中,.Net可执行文件的入口点偏移地址指向的是IAT的地址,由于已构建了新的IAT,放弃了原有的IAT,且新的IAT的地址不再是原有IAT的地址,因此,需要将.Net可执行文件的入口点偏移地址修改为新的IAT的地址,从而保证.Net可执行文件正常的运行。
本实施例中,将.Net可执行文件的入口点偏移地址修改为新的IAT的地址,其代码实现具体如下:
/*EntryPoint*/
IMAGE_NT_HEADERS*pNtHeader=NULL;
pNtHeader=RtlImageNtHeader(pvBase,dwSize);
PBYTE pEntryPoint=NULL;
pEntryPoint=RtlImageRvaToVa(pNtHeader,
pvBase,
pNtHeader->OptionalHeader.AddressOfEntryPoint,
0);
pEntryPoint+=2;/*FF 25*/
DWORD dwEEIAT=0x400000+RtlGetIatRva();
memcpy(pEntryPoint,(PBYTE)&dwEEIAT,4);
步骤205:将.Net可执行文件中元数据表头CLR Header数据结构中的标记FLAGS的值设置为0,使得.Net可执行文件在执行时满足微软认证要求。
其中,CLR Header是.Net可执行文件中的元数据表头,是一种数据结构,用来描述元数据信息,当其中的FLAGS的值为1时,表示IL ONLY,即只存在IL代码,当该FLAGS的值为0时,表示混合编码程序集,可以保证.Net可执行文件在执行时满足微软的认证要求。
上述修改FLAGS值的具体代码实现如下:
/*Cor Flags*/
IMAGE_COR20_HEADER*pCor=NULL;
pCor=RtlImageCorHeaderForPE(pvBase,dwSize);
if(!pCor){
       _LastError=RESULT_META_DECODER_FAILD;
       return FALSE;
    }
    if((pCor->Flags & COMIMAGE_FLAGS_ILONLY)==COMIMAGE_FLAGS_ILONLY)
    pCor->Flags^=COMIMAGE_FLAGS_ILONLY;
    if((pCor->Flags&COMIMAGE_FLAGS_IL_LIBRARY)==COMIMAGE_FLAGS_IL_LIBR
ARY)
    pCor->Flags^=COMIMAGE_FLAGS_IL_LIBRARY;
经过上述步骤已完成向.Net程序注入代码,且可以保证注入代码后的.Net可执行文件可以正常运行。
实施例2
参见图3,本实施例提供了一种在.Net程序中注入代码的装置,包括:
写入模块301,用于在.Net可执行文件的引入表中写入待注入代码的信息;
构建模块302,用于在.Net可执行文件的导入地址表IAT中添加待注入代码的地址,构建成新的IAT,将.Net可执行文件的入口点偏移地址修改为新的IAT的地址;
修改模块303,用于修改.Net可执行文件中元数据表头中的标记,使得.Net可执行文件在执行时满足认证要求。
本实施例中,所述信息包括待注入代码的引擎动态链接库和待注入代码对应的函数。
其中,构建模块302具体包括:
构建单元,用于启用一个新的地址,将.Net可执行文件的导入地址表IAT的内容复制到新的地址中,在复制的内容之后添加待注入代码的地址,构建成新的IAT,新的IAT的地址为新的地址。
修改模块303具体包括:
修改单元,用于将.Net可执行文件中元数据表头中的标记修改为0,使得.Net可执行文件在执行时满足认证要求。
进一步地,上装置还可以包括:
编译模块304,用于在写入模块301在.Net可执行文件的引入表中加入待注入代码的信息之前,将.Net程序原码编译成.Net可执行文件。
本发明实施例提供的上述方法和装置,实现了对.Net可执行文件注入代码,抛弃了对汇编和反汇编工具的依赖,容易实现,解决了.Net可执行文件注入代码效率低、稳定性和兼容性差的问题。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种在.Net程序中注入代码的方法,其特征在于,所述方法包括:
在.Net可执行文件的引入表中写入待注入代码的信息;
在所述.Net可执行文件的导入地址表IAT中添加待注入代码的地址,构建成新的IAT;
将所述.Net可执行文件的入口点偏移地址修改为所述新的IAT的地址;
修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求。
2.根据权利要求1所述的方法,其特征在于,在导入地址表IAT中添加待注入代码的地址,构建成新的IAT,具体包括:
启用一个新的地址,将所述.Net可执行文件的导入地址表IAT的内容复制到所述新的地址中;
在复制的内容之后添加待注入代码的地址,构建成新的IAT,所述新的IAT的地址为所述新的地址。
3.根据权利要求1所述的方法,其特征在于,修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求,具体包括:
将所述.Net可执行文件中元数据表头中的标记修改为0,使得所述.Net可执行文件在执行时满足认证要求。
4.根据权利要求1所述的方法,其特征在于,在.Net可执行文件的引入表中写入待注入代码的信息之前,还包括:
将.Net程序原码编译成.Net可执行文件。
5.根据权利要求1所述的方法,其特征在于,所述信息包括所述待注入代码的引擎动态链接库和所述待注入代码对应的函数。
6.一种在.Net程序中注入代码的装置,其特征在于,所述装置包括:
写入模块,用于在.Net可执行文件的引入表中写入待注入代码的信息;
构建模块,用于在所述.Net可执行文件的导入地址表IAT中添加待注入代码的地址,构建成新的IAT,将所述.Net可执行文件的入口点偏移地址修改为所述新的IAT的地址;
修改模块,用于修改所述.Net可执行文件中元数据表头中的标记,使得所述.Net可执行文件在执行时满足认证要求。
7.根据权利要求6所述的装置,其特征在于,所述构建模块具体包括:
构建单元,用于启用一个新的地址,将所述.Net可执行文件的导入地址表IAT的内容复制到所述新的地址中,在复制的内容之后添加待注入代码的地址,构建成新的IAT,所述新的IAT的地址为所述新的地址。
8.根据权利要求6所述的装置,其特征在于,所述修改模块具体包括:
修改单元,用于将所述.Net可执行文件中元数据表头中的标记修改为0,使得所述.Net可执行文件在执行时满足认证要求。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
编译模块,用于在所述写入模块在.Net可执行文件的引入表中写入待注入代码的信息之前,将.Net程序原码编译成.Net可执行文件。
10.根据权利要求6所述的装置,其特征在于,所述信息包括所述待注入代码的引擎动态链接库和所述待注入代码对应的函数。
CN200910243880.4A 2009-12-24 2009-12-24 在.Net程序中注入代码的方法和装置 Active CN101719077B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200910243880.4A CN101719077B (zh) 2009-12-24 2009-12-24 在.Net程序中注入代码的方法和装置
US12/989,681 US8739119B2 (en) 2009-12-24 2010-07-28 Method for inserting code into .net programs and apparatus therefor
PCT/CN2010/075516 WO2011076010A1 (zh) 2009-12-24 2010-07-28 在.net程序中注入代码的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910243880.4A CN101719077B (zh) 2009-12-24 2009-12-24 在.Net程序中注入代码的方法和装置

Publications (2)

Publication Number Publication Date
CN101719077A CN101719077A (zh) 2010-06-02
CN101719077B true CN101719077B (zh) 2012-06-27

Family

ID=42433655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910243880.4A Active CN101719077B (zh) 2009-12-24 2009-12-24 在.Net程序中注入代码的方法和装置

Country Status (3)

Country Link
US (1) US8739119B2 (zh)
CN (1) CN101719077B (zh)
WO (1) WO2011076010A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908119B (zh) * 2010-08-12 2012-10-03 浙江中控软件技术有限公司 一种动态链接库dll文件的处理方法和装置
US8869112B2 (en) 2010-11-30 2014-10-21 Sap Se System and method for modular business applications
US9336027B2 (en) 2010-12-17 2016-05-10 Sap Se System and method for modular business applications
US8554797B2 (en) 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
US9632771B2 (en) * 2012-12-13 2017-04-25 Microsoft Technology Licensing, Llc Association of metadata with source code and applications and services premised thereon
US9817638B2 (en) * 2013-12-27 2017-11-14 Symantec Corporation Systems and methods for injecting code into an application
CN104866293B (zh) * 2014-02-25 2018-04-03 北京娜迦信息科技发展有限公司 一种对Android应用程序扩展功能的方法及装置
CN105528220B (zh) * 2014-09-28 2020-12-01 腾讯科技(深圳)有限公司 加载动态共享对象的方法和装置
CN105787359B (zh) * 2016-02-19 2019-01-08 百度在线网络技术(北京)有限公司 进程守护方法和装置
CN107193538A (zh) * 2016-03-14 2017-09-22 无锡天脉聚源传媒科技有限公司 一种改进的钩取技术的方法及装置
CN106295402B (zh) * 2016-08-16 2020-03-31 武汉斗鱼网络科技有限公司 一种dll文件的隐藏方法及系统
CN106354644B (zh) * 2016-08-30 2018-12-14 北京深思数盾科技股份有限公司 应用程序性能测试方法、装置和系统
CN108073499B (zh) * 2016-11-10 2020-09-29 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN107632934B (zh) * 2017-09-18 2021-02-02 武汉斗鱼网络科技有限公司 一种C-sharp中函数复制方法及装置
CN108845841B (zh) * 2018-06-15 2021-10-01 广州多益网络股份有限公司 改变终端应用行为的方法、装置及终端
CN111177026B (zh) * 2019-09-11 2024-09-27 腾讯科技(深圳)有限公司 一种修改变量内存布局的方法、装置及计算机设备
CN112115466B (zh) * 2020-08-26 2021-05-14 广州锦行网络科技有限公司 一种绕过select关键字的sql注入方法
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN114610405B (zh) * 2022-03-03 2024-03-29 深圳盛显科技有限公司 一种多应用截屏及网络编码输出方法、设备、介质、产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998033106A1 (en) * 1997-01-29 1998-07-30 Shopnow.Com, Inc. Method and system for injecting new code into existing application code
CN101382892A (zh) * 2008-09-24 2009-03-11 北京飞天诚信科技有限公司 下载.Net程序的方法和装置
CN101504656A (zh) * 2009-03-26 2009-08-12 成都磐石软件有限责任公司 一种pe文件代码合并执行方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334213B1 (en) * 1998-01-20 2001-12-25 Preview Systems Merging of separate executable computer programs to form a single executable computer program
US7739516B2 (en) * 2004-03-05 2010-06-15 Microsoft Corporation Import address table verification
CN100570188C (zh) * 2004-07-07 2009-12-16 黄中一 结构改良的沐浴用的莲蓬头
US8151277B2 (en) * 2007-05-15 2012-04-03 Dynatrace Software Gmbh Method and system for dynamic remote injection of in-process agents into virtual machine based applications
CN100474253C (zh) * 2007-11-22 2009-04-01 北京飞天诚信科技有限公司 .Net程序保护方法及装置
CN101256612B (zh) * 2008-04-01 2010-11-03 北京飞天诚信科技有限公司 基于.Net卡的程序保护方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998033106A1 (en) * 1997-01-29 1998-07-30 Shopnow.Com, Inc. Method and system for injecting new code into existing application code
CN101382892A (zh) * 2008-09-24 2009-03-11 北京飞天诚信科技有限公司 下载.Net程序的方法和装置
CN101504656A (zh) * 2009-03-26 2009-08-12 成都磐石软件有限责任公司 一种pe文件代码合并执行方法

Also Published As

Publication number Publication date
WO2011076010A1 (zh) 2011-06-30
CN101719077A (zh) 2010-06-02
US8739119B2 (en) 2014-05-27
US20120272212A1 (en) 2012-10-25

Similar Documents

Publication Publication Date Title
CN101719077B (zh) 在.Net程序中注入代码的方法和装置
US6802006B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
Schwartz et al. Incremental compilation in Magpie
US8615735B2 (en) System and method for blurring instructions and data via binary obfuscation
WO2006056985A2 (en) System and method for managing content of rich media
US20090007081A1 (en) System and Method of Generating Applications for Mobile Devices
CN108845839A (zh) 应用页面加载方法、装置及计算机可读存储介质
US20050027988A1 (en) System and method of verifying the authenticity of dynamically connectable executable images
CN111078279B (zh) 字节码文件的处理方法、装置、设备及存储介质
Tanenbaum Lessons learned from 30 years of MINIX
CN108647061A (zh) 系统隐藏方法的调用方法、装置和计算设备
CN102147734B (zh) 运行时类提取的方法和系统
KR20110013192A (ko) 실행형 컨텐츠의 분리 실행이 가능한 저장 장치 및 그의 네이티브 실행 환경 구현 장치
EP1303802B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
CN110597496A (zh) 应用程序的字节码文件获取方法及装置
US9841982B2 (en) Locating import class files at alternate locations than specified in classpath information
CN103377131A (zh) 数据处理装置和方法
US8423974B2 (en) System and method for call replacement
CN106778270B (zh) 一种恶意应用程序的检测方法及系统
CN101593258A (zh) 一种在软件保护装置中简化实现.Net虚拟机的系统和方法
CN102629259A (zh) 嵌入式系统中只读文件系统建立方法,装置及嵌入式系统
CN106897588B (zh) 一种标签函数的处理方法及装置
JP2007179260A (ja) 資産管理装置及び資産管理方法
Cozens Advanced Perl Programming: The Worlds Most Highly Developed Perl Tutorial
WO1999056204A1 (fr) Procede et dispositif pour le traitement de donnees

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085

Patentee after: Feitian Technologies Co.,Ltd.

Country or region after: China

Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing

Patentee before: Feitian Technologies Co.,Ltd.

Country or region before: China