CN111475229B - 一种Windows平台下的dll注入方法及*** - Google Patents

一种Windows平台下的dll注入方法及*** Download PDF

Info

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
Application number
CN202010273193.3A
Other languages
English (en)
Other versions
CN111475229A (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.)
Guangzhou Jeeseen Network Technologies Co Ltd
Original Assignee
Guangzhou Jeeseen Network 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 Guangzhou Jeeseen Network Technologies Co Ltd filed Critical Guangzhou Jeeseen Network Technologies Co Ltd
Priority to CN202010273193.3A priority Critical patent/CN111475229B/zh
Publication of CN111475229A publication Critical patent/CN111475229A/zh
Application granted granted Critical
Publication of CN111475229B publication Critical patent/CN111475229B/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic 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注入方法及***
技术领域
本发明涉及数据安全技术领域,具体的说是一种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程序执行完毕后,恢复至目标进程的原本运行进度。
CN202010273193.3A 2020-04-09 2020-04-09 一种Windows平台下的dll注入方法及*** Active CN111475229B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434863B (zh) * 2021-06-25 2023-11-24 上海观安信息技术股份有限公司 一种基于pe文件结构实现主机远程控制方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
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注入目标进程的方法和***

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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