CN105574409B - 一种注入代码提取方法及装置 - Google Patents
一种注入代码提取方法及装置 Download PDFInfo
- Publication number
- CN105574409B CN105574409B CN201510918017.XA CN201510918017A CN105574409B CN 105574409 B CN105574409 B CN 105574409B CN 201510918017 A CN201510918017 A CN 201510918017A CN 105574409 B CN105574409 B CN 105574409B
- Authority
- CN
- China
- Prior art keywords
- code
- api function
- program
- suspect program
- suspect
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 323
- 230000008569 process Effects 0.000 claims abstract description 273
- 238000002347 injection Methods 0.000 claims abstract description 122
- 239000007924 injection Substances 0.000 claims abstract description 122
- 238000000605 extraction Methods 0.000 claims abstract description 66
- 230000006870 function Effects 0.000 claims description 355
- 239000000284 extract Substances 0.000 claims description 29
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 26
- 238000001514 detection method Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 230000008439 repair process Effects 0.000 claims description 8
- 238000002955 isolation Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000014759 maintenance of location Effects 0.000 claims 2
- 238000007689 inspection Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 6
- 241000700605 Viruses Species 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006378 damage Effects 0.000 description 5
- 230000002155 anti-virotic effect Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000002775 capsule Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 230000000266 injurious effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种注入代码提取方法,包括:运行可疑程序,在运行可疑程序过程中,通过PIN工具检测可疑程序的进程是否向其它进程(尤其是白进程)注入了代码(可能恶意程序),若检测到注入了代码,则通过PIN工具提取注入的代码。本发明有效地解了现有技术中难以对被注入到白进程中的代码进行提取的技术问题,实现了快捷地将被注入到白进程中的代码进行提取的技术效果。这样有利于对注入代码进行分析,识别其是否为恶意代码,并及时采取对应的措施,从而保证了计算机安全。同时,本发明还公开了一种注入代码提取装置。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种注入代码提取方法及装置。
背景技术
随着计算机应用的日益普及,包括病毒、木马在内的恶意程序的数量也迅速增长,其中的木马程序是一类可以通过在用户的计算机上运行,进而窃取用户文件、隐私、账户等信息,有的甚至还可以让黑客远程控制用户电脑的恶意程序。相比较传统的单纯以破坏计算机设备为目的的病毒,木马对计算机用户的侵害行为更具有获取利益的目的性,其窃取信息的行为常常会给用户造成巨大的损失,因此木马程序的危害也更大。恶意程序可以通过很多传播途径来侵害用户的电脑,例如便携的移动介质,如闪存盘,光盘等,而随着计算机网络技术的广泛应用,互联网逐渐成为恶意程序传播的主要途径之一,黑客或恶意程序传播者将木马等恶意程序文件伪装成其他类型文件,并引诱用户点击和下载,而恶意程序一旦被下载到用户计算机并成功运行,黑客或恶意程序传播者就可以利用这些恶意程序,进行破坏用户计算机,窃取用户个人信息等不法行为。
利用操作***以及应用软件的漏洞实施攻击,是使恶意程序在用户计算机上成功植入和运行的最主要手段之一。漏洞是指操作***软件或应用软件在逻辑设计上的缺陷或在编写时产生的错误。这些缺陷或错误往往可以被黑客利用来植入木马等恶意程序,侵害或控制甚至破坏用户计算机软硬件***,或者窃取用户的重要资料和信息。
杀毒软件可以有效地对恶意程序进行预防和查杀,但是,恶意程序为了躲避杀毒软件的查杀,常常将恶意代码注入到白进程(记录在白名单中的进程,不会被杀毒软件查杀)中,从而在白进程中对计算机进行攻击,对于注入到白进程中的代码,一般很难进行提取,难以进行分析,这给计算机安全带来了巨大威胁。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的注入代码提取方法及装置。
本发明的一个方面,提供了一种注入代码提取方法,包括:
运行一可疑程序;
在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述在运行所述可疑程序过程中,检测所述可疑程序的进程是否向其它进程注入了代码,包括:
在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;
从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;
基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;
若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
优选地,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码,包括:
从所述PIN的日志文件中提取所述预设API函数的相关信息;
从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
输出所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
优选地,所述通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码,包括:
运行所述可疑程序的进程向所述其它进程注入的代码;
通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
优选地,所述通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息,包括:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;
从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;
基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
优选地,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
优选地,所述基于所述API函数序列的相关信息,判断所述API函数序列是否合法,包括:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;
若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;
若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
优选地,所述将所述可疑程序确定为恶意程序之后,还包括:
通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
优选地,所述获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码,包括:
在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
优选地,所述将所述可疑程序确定为恶意程序之后,还包括:
对所述可疑程序进行删除;或
对所述可疑程序造成的破坏进行修复;或
对所述可疑程序进行隔离;或
对所述可疑程序进行样本归类。
本发明的另一个方面,提供了一种注入代码提取装置,包括:
运行模块,用于运行一可疑程序;
检测模块,用于在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
提取模块,用于若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述检测模块,包括:
***子模块,用于在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;
第一提取子模块,用于从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;
第一判断子模块,用于基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;
第一确定子模块,用于若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
优选地,所述提取模块,包括:
第二提取子模块,用于从所述PIN的日志文件中提取所述预设API函数的相关信息;
第三提取子模块,用于从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述注入代码提取装置,还包括:
输出模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,输出所述可疑程序的进程向所述其它进程注入的代码。
优选地,所述注入代码提取装置,还包括:
判断模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
确定模块,用于若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
优选地,所述判断模块,包括:
运行子模块,用于运行所述可疑程序的进程向所述其它进程注入的代码;
获取子模块,用于通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
第二判断子模块,用于基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
第二确定子模块,用于若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
优选地,所述获取子模块,具体用于:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
优选地,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
优选地,所述第二判断子模块,具体用于:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
优选地,所述注入代码提取装置,还包括:
获取模块,用于所述将所述可疑程序确定为恶意程序之后,通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出模块,用于输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
优选地,所述获取模块,包括:
第四提取子模块,用于所述将所述可疑程序确定为恶意程序之后,在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
第五提取子模块,用于基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
优选地,所述的注入代码提取装置,还包括:
删除模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行删除;或
修复模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序造成的破坏进行修复;或
隔离模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行隔离;或
归类模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行样本归类。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
根据本发明的一种注入代码提取方法及装置,可以运行一可疑程序,在运行可疑程序过程中,通过PIN工具检测可疑程序的进程是否向其它进程(尤其是白进程)注入了代码(可能是恶意代码),若检测到可疑程序的进程向其它进程注入了代码,则通过PIN工具提取可疑程序的进程向其它进程注入的代码。本发明有效地解了现有技术中难以对被注入到白进程中的代码进行提取的技术问题,实现了快捷地将被注入到白进程中的代码进行提取的技术效果。这样有利于对注入的代码进行分析,识别其是否为恶意代码,并及时采取对应的措施,从而保证了计算机安全。且,在本发明中,基于PIN工具可以同时对大批量可疑程序注入的代码进行提取操作,并输出大批量日志文件,对这些日志文件进行分析,有利于快速发现未知的病毒。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种注入代码提取方法的流程图;
图2示出了根据本发明一个实施例的一种注入代码提取装置的结构图。
具体实施方式
本发明实施例提供了一种注入代码提取方法及装置,用以解决现有技术中难以对被注入到白进程中的代码进行提取的技术问题。
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先说明,本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
如图1所示,本实施例提供了一种注入代码提取方法,包括:
步骤S101:运行一可疑程序。
此处出现的术语“可疑程序”,不具有特指性,泛指任一程序,主要用于区别后文出现的术语“恶意程序”。
步骤S102:在运行可疑程序过程中,通过PIN(Pin API Record Tool,API执行记录工具),检测可疑程序的进程是否向其它进程(尤其是白进程)注入了代码。
在现有技术中,恶意程序为了躲避杀毒软件的查杀,常常将恶意代码注入到白进程(记录在白名单中的进程,不会被杀毒软件查杀)中,从而在白进程中对计算机进行攻击。对此,在本实施例中,利用PIN工具对注入到其它进程中的代码进行提取。
PIN工具是一种动态二进制检测框架,适用于X86架构、以及X64架构,一般用于程序动态分析用,支持多个平台(例如:windows、linux、OSX)。PIN工具原本适用于计算机架构分析领域,而本实施例将PIN工具应用于在计算机安全领域,利用PIN工具来对注入到其它进程中的代码进行提取。
在具体实施过程中,可以在运行可疑程序过程中,在可疑程序调用的每个API(Application Program Interface,应用程序编程接口)函数的头和尾***PIN的监控代码,具体监控代码举例如下:
在执行该监控代码时,该监控代码能够监控可疑程序调用的每个API函数,并将可疑程序调用的每个API函数的相关信息(例如:函数名称、参数、返回值、返回地址,等等)存储到PIN的日志文件中。所以,可以从PIN的日志文件中提取可疑程序调用的每个API函数的相关信息,再基于可疑程序调用的每个API函数的相关信息,判断可疑程序调用的API函数中是否有预设API函数;若可疑程序调用的API函数中有预设API函数,则确定可疑程序的进程向其它进程注入了代码。其中,该预设API函数用于向其它进程注入代码和/或数据,例如:“WriteProcessMemory”函数。
步骤S103:若检测到可疑程序的进程向其它进程注入了代码,则通过PIN,提取可疑程序的进程向其它进程注入的代码。
作为一种可选的实施方式,步骤S103,具体包括:
从PIN的日志文件中提取预设API函数(例如:“WriteProcessMemory”函数)的相关信息,再从预设API函数的相关信息中,提取可疑程序的进程向其它进程注入的代码。
在具体实施过程中,注入的代码是作为“WriteProcessMemory”函数的参数被注入到其它进程中的,且在运行上述PIN的监控代码时,“WriteProcessMemory”函数的相关信息(其中包含WriteProcessMemory”函数的参数)已被提取并存储到PIN的日志文件中。所以,可以从PIN的日志文件中提取“WriteProcessMemory”函数的相关信息,再从“WriteProcessMemory”函数的相关信息中,提取可疑程序的进程向其它进程注入的代码。
作为一种可选的实施方式,在提取可疑程序的进程向其它进程注入的代码之后,所述注入代码提取方法,还包括:
输出可疑程序的进程向其它进程注入的代码。
在具体实施过程中,可以通过一显示屏输出一交互式界面,来获取技术人员的一预设操作(例如:触发一预设按钮,或输入一预设指令,等等),在获取到该预设操作时,则通过该显示屏输出可疑程序的进程向其它进程注入的代码。这样,便于技术人员对注入的代码进行阅读和分析,在确定被注入的代码为恶意代码时,可以快速找到对应措施,从而保证计算机安全。
作为一种可选的实施方式,在通过PIN,提取可疑程序的进程向其它进程注入的代码之后,所述注入代码提取方法,还包括:
通过PIN判断可疑程序的进程向其它进程注入的代码是否为恶意代码;
若可疑程序的进程向其它进程注入的代码为恶意代码,则将可疑程序确定为恶意程序。
在具体实施过程中,可以运行可疑程序的进程向其它进程注入的代码,并通过PIN工具获取运行注入的代码时注入的代码调用的API函数序列的相关信息,再基于API函数序列的相关信息判断API函数序列是否合法,若API函数序列不合法,则将注入的代码确定为恶意代码。其中,所述可疑代码调用的API函数序列的相关信息,包括:可疑代码调用的每个API函数的名称,以及每个API函数被调用的先后顺序。所述可疑代码调用的API函数序列,可以是:可疑代码所调用的全部API函数所组成序列,或,可疑代码所调用的部分API函数所组成序列。其中,不同的API函数序列可以实现不同的功能,例如:API函数序列“OpenProcess->WriteProcessMemory”,用于“跨进程注入”;再例如:API函数序列“SuspendThread->Setthreadcontext->ResumeThread…”,用于“恶意代码切换执行流程……”。
在具体实施过程中,可以在运行所述注入的代码过程中,在注入的代码中的每个API函数的头和尾***PIN的上述监控代码。在执行监控代码时,监控代码能够监控注入的代码调用的每个API函数,并将注入的代码调用的每个API函数的相关信息(例如:API函数的名称)存储到PIN的日志文件中。所以,可以从PIN的日志文件中提取注入的代码调用的每个API函数的相关信息,再基于注入的代码调用的每个API函数的相关信息,就可以确定注入的代码调用的API函数序列的相关信息。其中,注入的代码调用的API函数序列的相关信息,包括:运行注入的代码时注入的代码调用的每个API函数的名称,以及运行注入的代码时注入的代码调用每个API函数的先后顺序。
在具体实施过程中,可以基于API函数序列的相关信息,判断API函数序列是否被记录在一恶意API函数序列库中,其中,该恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;若API函数序列被记录在恶意API函数序列库中,则确定API函数序列不合法;若API函数序列未被记录在恶意API函数序列库中,则确定API函数序列合法。
在具体实施过程中,该恶意API函数序列库由专业技术人员负责维护更新,该恶意API函数序列库中存储有现有全部已知的恶意API函数序列,这些恶意API函数序列通常存在于恶意代码中,用于对计算机进行破坏。其中,所述恶意API函数序列库记录的恶意API函数序列,主要分为以下几类:
(1)用于对注册表进行恶意篡改的API函数序列;例如:“RegOpenKeyEx->RegSetKeyValue…”。
(2)用于访问恶意链接的API函数序列,或,用于下载恶意程序的API函数序列;例如:“URLDownloadToFileA->CreateFile(%temp%/xxx.exe,…)->Winexec(%temp%/xxx.exe)…”。
作为一种可选的实施方式,在将可疑程序确定为恶意程序之后,所述注入代码提取方法,还包括:
通过PIN获取可疑程序中的用于调用可疑程序中每个API函数的指令代码,并输出可疑程序中的用于调用可疑程序中每个API函数的指令代码。
在具体实施过程中,在运行携带有PIN监控代码的可疑程序时,PIN工具会将可疑程序中用于调用可疑程序中每个API函数的指令代码的内存地址存储到自身的日志文件中。所以,可以在PIN的日志文件中,提取可疑程序中的用于调用可疑程序中每个API函数的指令代码的内存地址,再基于该内存地址,从内存中提取或转存(dump)出可疑程序中的用于调用可疑程序中每个API函数的指令代码。
在具体实施过程中,可以通过显示屏提供一交互式界面,在该交互式界面中显示有可疑程序所调用的全部API函数的标识。可以通过该交互式界面获取技术人员的选择操作(该选择操作用于在可疑程序调用的全部API中选择一个或几个API),并基于该选择操作确定技术人员所选中的一个或多个API函数,之后,从PIN的日志文件中提取可疑程序中用于调用技术人员选中的API函数的指令代码的内存地址,再根据该内存地址从内存中提取或转存(dump)出可疑程序中用于调用技术人员选中的API函数的指令代码,并通过显示屏将这些指令代码显示出来。这样,便于技术人员对恶意代码中用于调用每个API函数的指令代码进行阅读和分析。
作为一种可选的实施方式,在将可疑程序确定为恶意程序之后,所述注入代码提取方法,还包括:对可疑程序进行删除,或,对可疑程序进行删隔离。
作为一种可选的实施方式,在将可疑程序确定为恶意程序之后,所述注入代码提取方法,还包括:对可疑程序造成的破坏进行修复,和/或,对可疑程序进行样本归类。
在具体实施过程中,所述对可疑程序造成的破坏进行修复,包括:恢复注册表中被篡改的信息,恢复被恶意删除的***文件,等等。
在具体实施过程中,可以基于多种规则对可疑程序进行样本归类,例如:根据破坏的类型(例如:是篡改注册表还是下载恶意程序),或者根据API、及其参数判断是否有反虚拟机(或反调试器流程)等等规则,对可疑程序进行样本归类。
本实施例有效地解了现有技术中难以对被注入到白进程中的代码进行提取的技术问题,实现了快捷地将被注入到白进程中的代码进行提取的技术效果。这样有利于对注入的代码进行分析,识别其是否为恶意代码,并及时采取对应的措施,从而保证了计算机安全。
且,在本实施例中,基于PIN工具可以同时对大批量可疑程序注入的代码进行提取操作,并输出大批量日志文件,对这些日志文件进行分析,有利于快速发现未知的病毒。
基于上述注入代码提取方法,本实施例还提供了一种注入代码提取装置,如图2所示,包括:
运行模块201,用于运行一可疑程序;
检测模块202,用于在运行可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测可疑程序的进程是否向其它进程注入了代码;
提取模块203,用于若检测到可疑程序的进程向其它进程注入了代码,则通过PIN,提取可疑程序的进程向其它进程注入的代码。
作为一种可选的实施方式,检测模块202,包括:
***子模块,用于在运行可疑程序过程中,在可疑程序调用的每个应用程序编程接口API函数的头和尾***PIN的监控代码,其中,在执行监控代码时,监控代码能够监控可疑程序调用的每个API函数,并将可疑程序调用的每个API函数的相关信息存储到PIN的日志文件中;
第一提取子模块,用于从PIN的日志文件中提取可疑程序调用的每个API函数的相关信息;
第一判断子模块,用于基于可疑程序调用的每个API函数的相关信息,判断可疑程序调用的API函数中是否有预设API函数,其中,预设API函数用于向其它进程注入代码和/或数据;
第一确定子模块,用于若可疑程序调用的API函数中有预设API函数,则确定可疑程序的进程向其它进程注入了代码。
作为一种可选的实施方式,提取模块203,包括:
第二提取子模块,用于从PIN的日志文件中提取预设API函数的相关信息;
第三提取子模块,用于从预设API函数的相关信息中,提取可疑程序的进程向其它进程注入的代码。
作为一种可选的实施方式,所述注入代码提取装置,还包括:
输出模块,用于通过PIN,提取可疑程序的进程向其它进程注入的代码之后,输出可疑程序的进程向其它进程注入的代码。
作为一种可选的实施方式,所述注入代码提取装置,还包括:
判断模块,用于通过PIN,提取可疑程序的进程向其它进程注入的代码之后,通过PIN,判断可疑程序的进程向其它进程注入的代码是否为恶意代码;
确定模块,用于若可疑程序的进程向其它进程注入的代码为恶意代码,则将可疑程序确定为恶意程序。
作为一种可选的实施方式,所述判断模块,包括:
运行子模块,用于运行可疑程序的进程向其它进程注入的代码;
获取子模块,用于通过PIN,获取运行注入的代码时注入的代码调用的API函数序列的相关信息;
第二判断子模块,用于基于API函数序列的相关信息,判断API函数序列是否合法;
第二确定子模块,用于若API函数序列不合法,则将注入的代码确定为恶意代码。
作为一种可选的实施方式,获取子模块,具体用于:
在运行可疑程序的进程向其它进程注入的代码过程中,在注入的代码中的每个API函数的头和尾***PIN的监控代码,其中,在执行监控代码时,监控代码能够监控注入的代码调用的每个API函数,并将注入的代码调用的每个API函数的相关信息存储到PIN的日志文件中;从PIN的日志文件中提取注入的代码调用的每个API函数的相关信息;基于注入的代码调用的每个API函数的相关信息,确定注入的代码调用的API函数序列的相关信息。
作为一种可选的实施方式,所述注入的代码调用的API函数序列的相关信息,包括:
运行注入的代码时注入的代码调用的每个API函数的名称,以及
运行注入的代码时注入的代码调用每个API函数的先后顺序。
作为一种可选的实施方式,第二判断子模块,具体用于:
基于API函数序列的相关信息,判断API函数序列是否被记录在一恶意API函数序列库中,其中,恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;若API函数序列被记录在恶意API函数序列库中,则确定API函数序列不合法;若API函数序列未被记录在恶意API函数序列库中,则确定API函数序列合法。
作为一种可选的实施方式,所述注入代码提取装置,还包括:
获取模块,用于将可疑程序确定为恶意程序之后,通过PIN,获取可疑程序中的用于调用可疑程序中每个API函数的指令代码;
输出模块,用于输出可疑程序中的用于调用可疑程序中每个API函数的指令代码。
作为一种可选的实施方式,获取模块,包括:
第四提取子模块,用于将可疑程序确定为恶意程序之后,在PIN的日志文件中,提取可疑程序中的用于调用可疑程序中每个API函数的指令代码的内存地址;
第五提取子模块,用于基于内存地址,从内存中提取可疑程序中的用于调用可疑程序中每个API函数的指令代码。
作为一种可选的实施方式,所述注入代码提取装置,还包括:
删除模块,用于将可疑程序确定为恶意程序之后,对可疑程序进行删除;或
修复模块,用于将可疑程序确定为恶意程序之后,对可疑程序造成的破坏进行修复;或
隔离模块,用于将可疑程序确定为恶意程序之后,对可疑程序进行隔离;或
归类模块,用于将可疑程序确定为恶意程序之后,对可疑程序进行样本归类。
由于本实施例所介绍的注入代码提取装置为实施本申请实施例中注入代码提取方法所采用的装置,故而基于本申请实施例中所介绍的注入代码提取方法,本领域所属技术人员能够了解本实施例的注入代码提取装置的具体实施方式以及其各种变化形式,所以在此对于该注入代码提取装置如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中注入代码提取方法所采用的装置,都属于本申请所欲保护的范围。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
根据本发明的一种注入代码提取方法及装置,可以运行一可疑程序,在运行可疑程序过程中,通过PIN工具检测可疑程序的进程是否向其它进程(尤其是白进程)注入了代码(可能是恶意代码),若检测到可疑程序的进程向其它进程注入了代码,则通过PIN工具提取可疑程序的进程向其它进程注入的代码。本发明有效地解了现有技术中难以对被注入到白进程中的代码进行提取的技术问题,实现了快捷地将被注入到白进程中的代码进行提取的技术效果。这样有利于对注入的代码进行分析,识别其是否为恶意代码,并及时采取对应的措施,从而保证了计算机安全。且,在本发明中,基于PIN工具可以同时对大批量可疑程序注入的代码进行提取操作,并输出大批量日志文件,对这些日志文件进行分析,有利于快速发现未知的病毒。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种注入代码提取装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了,A1、一种注入代码提取方法,其特征在于,包括:
运行一可疑程序;
在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码。
A2、如A1所述的注入代码提取方法,其特征在于,所述在运行所述可疑程序过程中,检测所述可疑程序的进程是否向其它进程注入了代码,包括:
在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;
从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;
基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;
若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
A3、如A2所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码,包括:
从所述PIN的日志文件中提取所述预设API函数的相关信息;
从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
A4、如A1所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
输出所述可疑程序的进程向所述其它进程注入的代码。
A5、如A1所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
A6、如A5所述的注入代码提取方法,其特征在于,所述通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码,包括:
运行所述可疑程序的进程向所述其它进程注入的代码;
通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
A7、如A6所述的注入代码提取方法,其特征在于,所述通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息,包括:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;
从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;
基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
A8、如A6所述的注入代码提取方法,其特征在于,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
A9、如A6所述的注入代码提取方法,其特征在于,所述基于所述API函数序列的相关信息,判断所述API函数序列是否合法,包括:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;
若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;
若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
A10、如A5~A9任一所述的注入代码提取方法,其特征在于,所述将所述可疑程序确定为恶意程序之后,还包括:
通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
A11、如权利要求A10所述的注入代码提取方法,其特征在于,所述获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码,包括:
在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
A12、如A5~A9任一所述的注入代码提取方法,其特征在于,所述将所述可疑程序确定为恶意程序之后,还包括:
对所述可疑程序进行删除;或
对所述可疑程序造成的破坏进行修复;或
对所述可疑程序进行隔离;或
对所述可疑程序进行样本归类。
B13、一种注入代码提取装置,其特征在于,包括:
运行模块,用于运行一可疑程序;
检测模块,用于在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
提取模块,用于若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码。
B14、如B13所述的注入代码提取装置,其特征在于,所述检测模块,包括:
***子模块,用于在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;
第一提取子模块,用于从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;
第一判断子模块,用于基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;
第一确定子模块,用于若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
B15、如B14所述的注入代码提取装置,其特征在于,所述提取模块,包括:
第二提取子模块,用于从所述PIN的日志文件中提取所述预设API函数的相关信息;
第三提取子模块,用于从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
B16、如B13所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
输出模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,输出所述可疑程序的进程向所述其它进程注入的代码。
B17、如B13所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
判断模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
确定模块,用于若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
B18、如B17所述的注入代码提取装置,其特征在于,所述判断模块,包括:
运行子模块,用于运行所述可疑程序的进程向所述其它进程注入的代码;
获取子模块,用于通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
第二判断子模块,用于基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
第二确定子模块,用于若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
B19、如B18所述的注入代码提取装置,其特征在于,所述获取子模块,具体用于:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
B20、如B18所述的注入代码提取装置,其特征在于,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
B21、如权利要求B18所述的注入代码提取装置,其特征在于,所述第二判断子模块,具体用于:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
B22、如B17~B21任一所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
获取模块,用于所述将所述可疑程序确定为恶意程序之后,通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出模块,用于输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
B23、如B22所述的注入代码提取装置,其特征在于,所述获取模块,包括:
第四提取子模块,用于所述将所述可疑程序确定为恶意程序之后,在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
第五提取子模块,用于基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
B24、如B17~B21任一所述的注入代码提取装置,其特征在于,所述的注入代码提取装置,还包括:
删除模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行删除;或
修复模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序造成的破坏进行修复;或
隔离模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行隔离;或
归类模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行样本归类。
Claims (22)
1.一种注入代码提取方法,其特征在于,包括:
运行一可疑程序;
在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码;
其中,所述在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码,包括:在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
2.如权利要求1所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码,包括:
从所述PIN的日志文件中提取所述预设API函数的相关信息;
从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
3.如权利要求1所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
输出所述可疑程序的进程向所述其它进程注入的代码。
4.如权利要求1所述的注入代码提取方法,其特征在于,所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,还包括:
通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
5.如权利要求4所述的注入代码提取方法,其特征在于,所述通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码,包括:
运行所述可疑程序的进程向所述其它进程注入的代码;
通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
6.如权利要求5所述的注入代码提取方法,其特征在于,所述通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息,包括:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;
从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;
基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
7.如权利要求5所述的注入代码提取方法,其特征在于,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
8.如权利要求5所述的注入代码提取方法,其特征在于,所述基于所述API函数序列的相关信息,判断所述API函数序列是否合法,包括:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;
若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;
若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
9.如权利要求4~8任一所述的注入代码提取方法,其特征在于,所述将所述可疑程序确定为恶意程序之后,还包括:
通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
10.如权利要求9所述的注入代码提取方法,其特征在于,所述获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码,包括:
在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
11.如权利要求4~8任一所述的注入代码提取方法,其特征在于,所述将所述可疑程序确定为恶意程序之后,还包括:
对所述可疑程序进行删除;或
对所述可疑程序造成的破坏进行修复;或
对所述可疑程序进行隔离;或
对所述可疑程序进行样本归类。
12.一种注入代码提取装置,其特征在于,包括:
运行模块,用于运行一可疑程序;
检测模块,用于在运行所述可疑程序过程中,通过应用程序编程接口执行记录工具PIN,检测所述可疑程序的进程是否向其它进程注入了代码;
提取模块,用于若检测到所述可疑程序的进程向所述其它进程注入了代码,则通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码;
其中,所述检测模块,包括:
***子模块,用于在运行所述可疑程序过程中,在所述可疑程序调用的每个应用程序编程接口API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述可疑程序调用的每个API函数,并将所述可疑程序调用的每个API函数的相关信息存储到所述PIN的日志文件中;
第一提取子模块,用于从所述PIN的日志文件中提取所述可疑程序调用的每个API函数的相关信息;
第一判断子模块,用于基于所述可疑程序调用的每个API函数的相关信息,判断所述可疑程序调用的API函数中是否有预设API函数,其中,所述预设API函数用于向所述其它进程注入代码和/或数据;
第一确定子模块,用于若所述可疑程序调用的API函数中有所述预设API函数,则确定所述可疑程序的进程向所述其它进程注入了代码。
13.如权利要求12所述的注入代码提取装置,其特征在于,所述提取模块,包括:
第二提取子模块,用于从所述PIN的日志文件中提取所述预设API函数的相关信息;
第三提取子模块,用于从所述预设API函数的相关信息中,提取所述可疑程序的进程向所述其它进程注入的代码。
14.如权利要求12所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
输出模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,输出所述可疑程序的进程向所述其它进程注入的代码。
15.如权利要求13所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
判断模块,用于所述通过所述PIN,提取所述可疑程序的进程向所述其它进程注入的代码之后,通过所述PIN,判断所述可疑程序的进程向所述其它进程注入的代码是否为恶意代码;
确定模块,用于若所述可疑程序的进程向所述其它进程注入的代码为所述恶意代码,则将所述可疑程序确定为恶意程序。
16.如权利要求15所述的注入代码提取装置,其特征在于,所述判断模块,包括:
运行子模块,用于运行所述可疑程序的进程向所述其它进程注入的代码;
获取子模块,用于通过所述PIN,获取运行所述注入的代码时所述注入的代码调用的API函数序列的相关信息;
第二判断子模块,用于基于所述API函数序列的相关信息,判断所述API函数序列是否合法;
第二确定子模块,用于若所述API函数序列不合法,则将所述注入的代码确定为恶意代码。
17.如权利要求16所述的注入代码提取装置,其特征在于,所述获取子模块,具体用于:
在运行所述可疑程序的进程向所述其它进程注入的代码过程中,在所述注入的代码中的每个API函数的头和尾***所述PIN的监控代码,其中,在执行所述监控代码时,所述监控代码能够监控所述注入的代码调用的每个API函数,并将所述注入的代码调用的每个API函数的相关信息存储到所述PIN的日志文件中;从所述PIN的日志文件中提取所述注入的代码调用的每个API函数的相关信息;基于所述注入的代码调用的每个API函数的相关信息,确定所述注入的代码调用的API函数序列的相关信息。
18.如权利要求16所述的注入代码提取装置,其特征在于,所述注入的代码调用的API函数序列的相关信息,包括:
运行所述注入的代码时所述注入的代码调用的每个API函数的名称,以及
运行所述注入的代码时所述注入的代码调用每个API函数的先后顺序。
19.如权利要求16所述的注入代码提取装置,其特征在于,所述第二判断子模块,具体用于:
基于所述API函数序列的相关信息,判断所述API函数序列是否被记录在一恶意API函数序列库中,其中,所述恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函数序列;若所述API函数序列被记录在所述恶意API函数序列库中,则确定所述API函数序列不合法;若所述API函数序列未被记录在所述恶意API函数序列库中,则确定所述API函数序列合法。
20.如权利要求15~19任一所述的注入代码提取装置,其特征在于,所述注入代码提取装置,还包括:
获取模块,用于所述将所述可疑程序确定为恶意程序之后,通过所述PIN,获取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码;
输出模块,用于输出所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
21.如权利要求20所述的注入代码提取装置,其特征在于,所述获取模块,包括:
第四提取子模块,用于所述将所述可疑程序确定为恶意程序之后,在所述PIN的日志文件中,提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码的内存地址;
第五提取子模块,用于基于所述内存地址,从内存中提取所述可疑程序中的用于调用所述可疑程序中每个API函数的指令代码。
22.如权利要求15~19任一所述的注入代码提取装置,其特征在于,所述的注入代码提取装置,还包括:
删除模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行删除;或
修复模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序造成的破坏进行修复;或
隔离模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行隔离;或
归类模块,用于所述将所述可疑程序确定为恶意程序之后,对所述可疑程序进行样本归类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510918017.XA CN105574409B (zh) | 2015-12-10 | 2015-12-10 | 一种注入代码提取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510918017.XA CN105574409B (zh) | 2015-12-10 | 2015-12-10 | 一种注入代码提取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105574409A CN105574409A (zh) | 2016-05-11 |
CN105574409B true CN105574409B (zh) | 2018-09-04 |
Family
ID=55884528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510918017.XA Active CN105574409B (zh) | 2015-12-10 | 2015-12-10 | 一种注入代码提取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105574409B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709325B (zh) * | 2016-11-11 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种监控程序的方法及装置 |
CN116108440B (zh) * | 2023-04-12 | 2024-01-26 | 北京网藤科技有限公司 | 针对工控关键软件被注入的处理方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268471A (zh) * | 2014-09-10 | 2015-01-07 | 珠海市君天电子科技有限公司 | 一种检测面向返程的编程攻击的方法及装置 |
CN104715195A (zh) * | 2015-03-12 | 2015-06-17 | 广东电网有限责任公司信息中心 | 基于动态插桩的恶意代码检测***及方法 |
CN104834859A (zh) * | 2015-04-24 | 2015-08-12 | 南京邮电大学 | 一种Android应用中恶意行为的动态检测方法 |
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
CN105138903A (zh) * | 2015-08-14 | 2015-12-09 | 电子科技大学 | 一种基于ret指令与jmp指令的rop攻击检测方法 |
-
2015
- 2015-12-10 CN CN201510918017.XA patent/CN105574409B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268471A (zh) * | 2014-09-10 | 2015-01-07 | 珠海市君天电子科技有限公司 | 一种检测面向返程的编程攻击的方法及装置 |
CN104715195A (zh) * | 2015-03-12 | 2015-06-17 | 广东电网有限责任公司信息中心 | 基于动态插桩的恶意代码检测***及方法 |
CN104834859A (zh) * | 2015-04-24 | 2015-08-12 | 南京邮电大学 | 一种Android应用中恶意行为的动态检测方法 |
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
CN105138903A (zh) * | 2015-08-14 | 2015-12-09 | 电子科技大学 | 一种基于ret指令与jmp指令的rop攻击检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105574409A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550581B (zh) | 一种恶意代码检测方法及装置 | |
CN103559446B (zh) | 一种基于安卓***的设备的动态病毒检测方法和装置 | |
US6907396B1 (en) | Detecting computer viruses or malicious software by patching instructions into an emulator | |
Kendall et al. | Practical malware analysis | |
CN107729752B (zh) | 一种勒索软件防御方法及*** | |
CN104517054B (zh) | 一种检测恶意apk的方法、装置、客户端和服务器 | |
CN106326737B (zh) | 用于检测可在虚拟堆栈机上执行的有害文件的***和方法 | |
CN109033828A (zh) | 一种基于计算机内存分析技术的木马检测方法 | |
CN107851155A (zh) | 用于跨越多个软件实体跟踪恶意行为的***及方法 | |
CN102043915B (zh) | 一种非可执行文件中包含恶意代码的检测方法及其装置 | |
EP3262557A1 (en) | A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code | |
Balachandran et al. | Potent and stealthy control flow obfuscation by stack based self-modifying code | |
CN107103237A (zh) | 一种恶意文件的检测方法及装置 | |
Fleck et al. | Pytrigger: A system to trigger & extract user-activated malware behavior | |
CN105574409B (zh) | 一种注入代码提取方法及装置 | |
US8151117B2 (en) | Detection of items stored in a computer system | |
Chew et al. | ESCAPADE: Encryption-type-ransomware: System call based pattern detection | |
CN103970574B (zh) | office程序的运行方法及装置、计算机*** | |
CN106650439A (zh) | 检测可疑应用程序的方法及装置 | |
CN104239801B (zh) | 0day漏洞的识别方法以及装置 | |
JP5613000B2 (ja) | アプリケーション特性解析装置およびプログラム | |
CN111475168A (zh) | 一种代码编译方法及装置 | |
Nasim et al. | Uncovering self code modification in Android | |
Webb | Evaluating tool based automated malware analysis through persistence mechanism detection | |
Yehoshua et al. | Antivirus Bypass Techniques: Learn practical techniques and tactics to combat, bypass, and evade antivirus software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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 |
Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Co-patentee after: QAX Technology Group Inc. Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Co-patentee before: BEIJING QIANXIN TECHNOLOGY Co.,Ltd. Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |