CN111475229B - 一种Windows平台下的dll注入方法及*** - Google Patents
一种Windows平台下的dll注入方法及*** Download PDFInfo
- Publication number
- CN111475229B CN111475229B CN202010273193.3A CN202010273193A CN111475229B CN 111475229 B CN111475229 B CN 111475229B CN 202010273193 A CN202010273193 A CN 202010273193A CN 111475229 B CN111475229 B CN 111475229B
- Authority
- CN
- China
- Prior art keywords
- injection
- dll
- program
- target
- target process
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种Windows平台下的dll注入方法及***,包括步骤如下:S01.准备注入程序;S02.提升操作者自身权限;S03.向目标进程发送断点事件;S04.目标进程响应断点事件;S05.目标进程运行到断点处,程序暂停,保存堆栈的返回地址,并修改为注入程序的地址;S06.修正注入程序的代码,使其执行完毕后返回到原本的返回地址;S07.目标程序继续运行返回到注入程序部分,注入程序运行完成dll注入;S08.目标程序跳转到已保存的返回地址继续运行,通过向目标程序发送断点事件,修改断点返回地址,跳转到shellcode完成dll注入,解决了现有技术中无法向正在运行的进程进行dll注入的问题,成功率高,且受限条件少。
Description
技术领域
本发明涉及数据安全技术领域,具体的说是一种Windows平台下的dll注入方法及***。
背景技术
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于***中。当我们执行某一个程序时,相应的DLL文件就会被调用,一个应用程序可有多个DLL文件。在Windows操作***中,运行的每一个进程都生活在自己的程序空间中,理论上而言,运行在操作***上的每一个进程之间都是互不干扰的,即每个进程都会拥有独立的地址空间,DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分,让目标进程加载自己的dll文件。dll文件被加载后,可以运行dll里所期望的功能,例如获取函数地址,监测进程等。
进程注入的方式一般是通过修改进程里的代码、数据,或向进程写入代码、数据,或修改dll文件名的方式实现的,该方式的应用场景是进程尚未启动时或正在启动时,并且有的方案不能再windows下的多个版本中通用,在特定环境要求下,比如不能修改进程上下文,进程已经启动完毕,此时需要dll注入时,上述方式就无法实现。
中国专利文献CN105045605B公开了一种将DLL注入目标进程的方法和***,设置用于监测操作***中程序启动的DLL注入模块,将DLL注入模块注册到操作***中,当有目标进程向操作***请求启动时,操作***将该请求通知DLL注入模块,用户根据需要将待注入的目的DLL***到该目标程序的DLL中。具有控制全面,隐蔽性好,灵活性高等优点,能够应用于数据防泄漏,增强数据防护的等级;能够注入所有非***关键进程,注入***explorer的技术可应用于安全桌面技术;能够适应多种常用的操作***,包括Windows XP、Windows Server 2003、Windows 7等,该专利中dll注入采用修改进程内存的方式实现注入,该方式适用于在进程正在启动时,而对于已启动的进程,无法实现进程注入。
中国专利文献CN107479874A公开了一种基于Windows平台的DLL注入方法及***,该方法包括以下步骤:)进程启动,判断当前进程是否需要注入安全检测DLL,如果需要,则获取需要注入安全检测DLL的模块名;判断模块名是否为“ntdll.dll”,如果是,将当前进程的注入信息***工作队列;安全检测DLL对当前进程进行安全检测;如果经检测不安全,则结束,如果安全,则允许启动当前进程。通过本发明的方案,可以注入更多的进程,对杀毒软件不误杀,更稳定,更高效,该dll注入方式采用修改关键函数方式实现,适用于目标进程启动前,同样无法在已启动的进程中实现dll注入。
发明内容
针对上述现有技术中存在的问题,本发明公布了一种Windows平台下的dll注入方法及***,本发明利用向目标程序发送断点事件,修改断点返回地址,跳转到shellcode完成dll注入,解决了现有技术中无法向正在运行的进程进行dll注入的问题,成功率高,且受限条件少。
本发明所公开的具体的技术方案如下:一种Windows平台下的dll注入方法,包括如下步骤:
S01.准备注入程序;
S02.提升操作者自身权限,获得SeDebugPrivilege权限;
S03.向目标进程发送断点事件;
S04.目标进程响应断点事件;
S05.目标进程运行到断点处,程序暂停,保存堆栈的返回地址,并修改为注入程序的地址;
S06.修正注入程序的代码,使其执行完毕后返回到原本的返回地址;
S07.目标进程继续运行返回到注入程序部分,注入程序运行完成dll注入;
S08.目标进程跳转到已保存的返回地址继续运行。
进一步的,步骤S07中注入程序部分的运行步骤为:
S071.保存寄存器环境;
S072.初始化线程上下文结构体;
S073.加载目标dll程序;
S074.还原寄存器环境;
S075.返回到原来的地址运行。
进一步的,步骤S02中提升权限的方法为:
S021.使用OpenProcessToken获取需要提升权限的进程的“令牌”;
S022.使用LookupPrivilegeValue函数,根据权限的“名称字符串”查找到权限在对应***上的LUID;
S023.使用AdjustTokenPrivileges函数,向指定进程的“令牌”添加或删除权限。
进一步的,所述断点事件包括调试事件、按钮事件、挂起进程、等待事件和延迟事件。
进一步的,步骤S04中响应断点事件的线程采用调试线程。
进一步的,所述注入程序采用修改和写入代码的方式,使目标进程主动加载dll。
进一步的,步骤S073中加载dll程序的方法采用Shellcode工具。
进一步的,所述dll注入方法适用于Windows7、Windows8及Windows10平台环境。
进一步的,所述dll注入方法适用于目标线程已运行、目标线程未启动或目标线程正在启动的状态。
基于上述方法,本发明还提供了一种Windows平台下的dll注入***,包括:
注入工具单元,用于向目标进程发送断点事件以及提供需注入的dll程序;
目标进程单元,接收断点事件并提供被注入的目标进程;
注入程序部分,用于将dll程序加载至目标进程内的断点处,完成注入;
修正单元,用于修正注入程序,使其执行完毕后返回至目标进程的原本运行进度;
恢复单元,使dll程序执行完毕后,恢复至目标进程的原本运行进度。
本发明同现有技术相比,具有如下优点:
1)本发明采用注入程序发送断点事件,使进程到达断点,通过修改断点的返回地址,跳转到shellcode,完成dll注入,实现了运行中程序进行dll注入。
2)本发明中的dll注入方式受限条件少,成功率较高,具有较高的稳定性。
3)本发明的dll注入方法适用于多种windows版本,具有通用性。
附图说明
图1是本发明实施例中一种Windows平台下的dll注入方法的流程图;
图2是本发明实施例中一种Windows平台下的dll注入***的结构图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例:
如图1所示,本发明提供了一种Windows平台下的dll注入方法,包括如下步骤:
S01.准备注入程序;
S02.提升操作者自身权限,获得SeDebugPrivilege权限;
S03.向目标进程发送断点事件;
S04.目标进程响应断点事件;
S05.目标进程运行到断点处,程序暂停,保存堆栈的返回地址,并修改为注入程序的地址;
S06.修正注入程序的代码,使其执行完毕后返回到原本的返回地址;
S07.目标进程继续运行返回到注入程序部分,注入程序运行完成dll注入;
S08.目标进程跳转到已保存的返回地址继续运行。
进一步的,步骤S07中注入程序部分的运行步骤为:
S071.保存寄存器环境;
S072.初始化线程上下文结构体;
S073.加载目标dll程序;
S074.还原寄存器环境;
S075.返回到原来的地址运行。
进一步的,步骤S02中提升权限的方法为:
S021.使用OpenProcessToken获取需要提升权限的进程的“令牌”;
S022.使用LookupPrivilegeValue函数,根据权限的“名称字符串”查找到权限在对应***上的LUID;
S023.使用AdjustTokenPrivileges函数,向指定进程的“令牌”添加或删除权限。
进一步的,所述断点事件包括调试事件、按钮事件、挂起进程、等待事件和延迟事件。
进一步的,步骤S04中响应断点事件的线程采用调试线程。
进一步的,所述注入程序采用修改和写入代码的方式,使目标进程主动加载dll。
进一步的,步骤S073中加载dll程序的方法采用Shellcode工具。
进一步的,所述dll注入方法适用于Windows7、Windows8及Windows10平台环境。
进一步的,所述dll注入方法适用于目标线程已运行、目标线程未启动或目标线程正在启动的状态。
如图2所示,基于上述方法,本发明还提供了一种Windows平台下的dll注入***,包括:
注入工具单元,用于向目标进程发送断点事件以及提供需注入的dll程序;
目标进程单元,接收断点事件并提供被注入的目标进程;
注入程序部分,用于将dll程序加载至目标进程内的断点处,完成注入;
修正单元,用于修正注入程序,使其执行完毕后返回至目标进程的原本运行进度;
恢复单元,使dll程序执行完毕后,恢复至目标进程的原本运行进度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (8)
1.一种Windows平台下的dll注入方法,其特征在于,包括如下步骤:
S01.准备注入程序;
S02.提升操作者自身权限,获得SeDebugPrivilege权限;
S03.向目标进程发送断点事件;
S04.目标进程响应断点事件;
S05.目标进程运行到断点处,程序暂停,保存堆栈的返回地址,并修改为注入程序的地址;
S06.修正注入程序的代码,使其执行完毕后返回到原本的返回地址;
S07.目标进程继续运行返回到注入程序部分,注入程序运行完成dll注入;
S08.目标进程跳转到已保存的返回地址继续运行,
步骤S07中注入程序部分的运行步骤为:
S071.保存寄存器环境;
S072.初始化线程上下文结构体;
S073.加载目标dll程序;
S074.还原寄存器环境;
S075.返回到原来的地址运行,
所述注入程序采用修改和写入代码的方式,使目标进程主动加载dll。
2.根据权利要求1所述的一种Windows平台下的dll注入方法,其特征为:步骤S02中提升权限的方法为:
S021.使用OpenProcessToken获取需要提升权限的进程的“令牌”;
S022.使用LookupPrivilegeValue函数,根据权限的“名称字符串”查找到权限在对应***上的LUID;
S023.使用AdjustTokenPrivileges函数,向指定进程的“令牌”添加或删除权限。
3.根据权利要求2所述的一种Windows平台下的dll注入方法,其特征为:所述断点事件包括调试事件、按钮事件、挂起进程、等待事件和延迟事件。
4.根据权利要求3所述的一种Windows平台下的dll注入方法,其特征为:步骤S04中响应断点事件的线程采用调试线程。
5.根据权利要求4所述的一种Windows平台下的dll注入方法,其特征为:步骤S073中加载dll程序的方法采用Shellcode工具。
6.根据权利要求5所述的一种Windows平台下的dll注入方法,其特征为:所述dll注入方法适用于Windows7、Windows8及Windows10平台环境。
7.根据权利要求6所述的一种Windows平台下的dll注入方法,其特征为:所述dll注入方法适用于目标线程已运行、目标线程未启动或目标线程正在启动的状态。
8.一种Windows平台下的dll注入***,其特征在于,包括:
注入工具单元,用于向目标进程发送断点事件以及提供需注入的dll程序;
目标进程单元,接收断点事件并提供被注入的目标进程;
注入程序部分,用于将dll程序加载至目标进程内的断点处,完成注入;
修正单元,用于修正注入程序,使其执行完毕后返回至目标进程的原本运行进度;
恢复单元,使dll程序执行完毕后,恢复至目标进程的原本运行进度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010273193.3A CN111475229B (zh) | 2020-04-09 | 2020-04-09 | 一种Windows平台下的dll注入方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010273193.3A CN111475229B (zh) | 2020-04-09 | 2020-04-09 | 一种Windows平台下的dll注入方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475229A CN111475229A (zh) | 2020-07-31 |
CN111475229B true CN111475229B (zh) | 2021-01-15 |
Family
ID=71751368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010273193.3A Active CN111475229B (zh) | 2020-04-09 | 2020-04-09 | 一种Windows平台下的dll注入方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475229B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434863B (zh) * | 2021-06-25 | 2023-11-24 | 上海观安信息技术股份有限公司 | 一种基于pe文件结构实现主机远程控制方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012148080A2 (ko) * | 2011-04-28 | 2012-11-01 | 주식회사 파수닷컴 | Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 |
CN103116715A (zh) * | 2013-03-01 | 2013-05-22 | 中标软件有限公司 | Windows平台可执行文件API延迟导入保护方法 |
CN104137062A (zh) * | 2012-02-09 | 2014-11-05 | 微软公司 | 将代码动态注入到运行中的进程 |
US9602581B2 (en) * | 2012-03-02 | 2017-03-21 | Calgary Scientific Inc. | Remote control of an application using dynamic-linked library (DLL) injection |
CN107479874A (zh) * | 2017-07-11 | 2017-12-15 | 北京明朝万达科技股份有限公司 | 一种基于Windows平台的DLL注入方法及*** |
CN105045605B (zh) * | 2015-08-28 | 2019-05-24 | 成都卫士通信息产业股份有限公司 | 一种将dll注入目标进程的方法和*** |
-
2020
- 2020-04-09 CN CN202010273193.3A patent/CN111475229B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012148080A2 (ko) * | 2011-04-28 | 2012-11-01 | 주식회사 파수닷컴 | Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 |
CN104137062A (zh) * | 2012-02-09 | 2014-11-05 | 微软公司 | 将代码动态注入到运行中的进程 |
US9602581B2 (en) * | 2012-03-02 | 2017-03-21 | Calgary Scientific Inc. | Remote control of an application using dynamic-linked library (DLL) injection |
CN103116715A (zh) * | 2013-03-01 | 2013-05-22 | 中标软件有限公司 | Windows平台可执行文件API延迟导入保护方法 |
CN105045605B (zh) * | 2015-08-28 | 2019-05-24 | 成都卫士通信息产业股份有限公司 | 一种将dll注入目标进程的方法和*** |
CN107479874A (zh) * | 2017-07-11 | 2017-12-15 | 北京明朝万达科技股份有限公司 | 一种基于Windows平台的DLL注入方法及*** |
Non-Patent Citations (1)
Title |
---|
Windows***的dll注入;J坚持C;《https://www.cnblogs.com/wf751620780/p/10730013.html》;20190418;第1-17页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111475229A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6363499B1 (en) | Method and system for restoring a computer to its original state after an unsuccessful installation attempt | |
US7631249B2 (en) | Dynamically determining a buffer-stack overrun | |
US6438749B1 (en) | Method and system for restoring a computer to its original state after an unsuccessful patch installation attempt | |
KR101122787B1 (ko) | 보안관련 프로그래밍 인터페이스 | |
US8239947B1 (en) | Method using kernel mode assistance for the detection and removal of threats which are actively preventing detection and removal from a running system | |
US20160357958A1 (en) | Computer System Security | |
US20160378458A1 (en) | Method and device for system application installation package, and terminal | |
US20080148399A1 (en) | Protection against stack buffer overrun exploitation | |
US7814471B2 (en) | Method and apparatus for providing DLL compatibility | |
CN111240892B (zh) | 数据备份方法及装置 | |
CN102819469A (zh) | 操作***恢复方法及*** | |
CN111522577A (zh) | 一种依赖包版本管理方法、装置、设备和存储介质 | |
CN112579202B (zh) | Windows***的服务性程序编辑方法、装置、设备及存储介质 | |
EP2241987B1 (en) | Method and system for safely deleting information from a computer | |
US8788884B2 (en) | Automatic correction of program logic | |
CN111475229B (zh) | 一种Windows平台下的dll注入方法及*** | |
CN107479874B (zh) | 一种基于Windows平台的DLL注入方法及*** | |
CN101510157B (zh) | 一种输入法安装方法及装置 | |
CN112668008A (zh) | 一种基于lsm来实现动态的***调用劫持的方法 | |
US20060031265A1 (en) | Save method for HTML documents | |
CN106295371B (zh) | 应用运行方法、文件加固方法和装置 | |
US8689206B2 (en) | Isolating operating system in-memory modules using error injection | |
CN108959915B (zh) | 一种rootkit检测方法、装置及服务器 | |
CN111460436B (zh) | 一种基于区块链的非结构化数据操作方法和*** | |
US8788845B1 (en) | Data access security |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Method and System for DLL Injection on Windows Platform Effective date of registration: 20230515 Granted publication date: 20210115 Pledgee: Bank of China Limited by Share Ltd. Guangzhou Tianhe branch Pledgor: GUANGZHOU JEESEEN NETWORK TECHNOLOGIES Co.,Ltd. Registration number: Y2023980040584 |