CN103559450B - 一种基于内核驱动钩子技术的电子标签数据保护方法 - Google Patents

一种基于内核驱动钩子技术的电子标签数据保护方法 Download PDF

Info

Publication number
CN103559450B
CN103559450B CN201310472008.3A CN201310472008A CN103559450B CN 103559450 B CN103559450 B CN 103559450B CN 201310472008 A CN201310472008 A CN 201310472008A CN 103559450 B CN103559450 B CN 103559450B
Authority
CN
China
Prior art keywords
card reader
program
hook
function
electronic tag
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.)
Expired - Fee Related
Application number
CN201310472008.3A
Other languages
English (en)
Other versions
CN103559450A (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.)
Nanjing Post and Telecommunication University
Original Assignee
Nanjing Post and Telecommunication University
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 Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201310472008.3A priority Critical patent/CN103559450B/zh
Publication of CN103559450A publication Critical patent/CN103559450A/zh
Application granted granted Critical
Publication of CN103559450B publication Critical patent/CN103559450B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/0008General problems related to the reading of electronic memory record carriers, independent of its reading method, e.g. power transfer

Abstract

一种基于内核驱动钩子技术的电子标签数据保护方法,是一种使用Windows内核驱动钩子技术来实现从电子标签(RFID)系统的底层直接截取电子标签读卡器的读卡数据,使得读卡数据跳过在传输层的多次驻留与转换,从而保护电子标签数据的方法。通过直接从电子标签系统底层获取电子标签数据,跳过在传输过程中可能出现的数据篡改情况,从而保护标签数据不被篡改。与传统的保护电子标签本身的方法不同,本方法从读卡器的内核驱动着手,使用内核驱动钩子技术在电子标签底层获取电子标签数据。通过本发明提出的方法可以达到在电子标签系统底层截取电子标签读卡器读出的电子标签数据,从而达到对电子标签数据进行保护的目的。

Description

一种基于内核驱动钩子技术的电子标签数据保护方法
技术领域
本发明是一种使用Windows内核驱动钩子技术来实现从电子标签(RFID)系统的底层直接截取电子标签读卡器的读卡数据,使得读卡数据跳过在传输层的多次驻留与转换,从而保护电子标签数据的方法。属于物联网与信息安全的交叉领域。
背景技术
目前,物联网(TheInternetofThings)被人们广泛应用,它可以将人们和身边无数物品联系起来,使物品成为网络中用户的一分子,给人们带来诸多便利。作为物联网核心基础之一的电子标签(RFID)技术因其具有防水防磁、读取距离远、读取速度快、存储容量大、可重复使用等优点,已被广泛应用于交通、物流、医疗、食品安全、零售、制造、海关、安检、机场等领域。可见,电子标签安全直接关系到物联网安全和应用的推广。因此,电子标签技术一直是研究的热点问题。
最基本的电子标签系统主要由作为数据载体的电子标签、读写电子标签数据的读卡器、用于存储、处理电子标签数据的后台数据库三个部分组成。一般情况下,读卡器和后台数据库之间的通信被认为是安全可靠的。关键是电子标签、读卡器的安全。因此,我们把电子标签系统安全问题分为:物理安全、通信安全、数据安全三个方面:
(1)电子标签物理安全:包括电子标签读卡器伪造、电子标签伪造、电子标签冲突问题等。
(2)电子标签通信安全:电子标签使用的是无线通信信道,这就给非法用户的攻击带来了方便。攻击者可以非法截取通信数据;可以通过发射干扰信号来堵塞通信链路,使得读卡器过载,无法接收正常的标签数据,制造DoS攻击;可以冒名顶替向电子标签发送数据,篡改或伪造数据。
(3)电子标签数据安全:电子标签系统中最主要的安全风险是“数据保密性”。信息泄露是指暴露标签发送信息,这个信息包括标签用户或识别对象的相关信息。包括窃取电子标签数据、篡改电子标签数据、往电子标签植入病毒、泄露电子标签数据格式。
Rootkit是安全领域的一个术语,来自root和kit两个单词的组合,其中root是Unix系统中超级用户的名称,拥有系统的最高权限;kit则是工具套件的意思。维基百科中关于Rootkit的定义如下:“Rootkit是攻击者在入侵系统后用来保持对系统的超级用户访问权限,创建后门和隐藏攻击痕迹等常采用的一种技术。Rootkit存在于Linux、Solaris和Windows等各种操作系统上。”钩子技术是Rootkit的一个核心内容。
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其它进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理Windows消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。一般来说有三种常见的钩子技术:
(1)内联钩子(InlineHook):InlineHook通过硬编码的方式向内核API函数的内存空间(通常是开始的一段字节,但理论上可以在任何位置)写入跳转语句,从而对函数执行流程进行修改,达到控制函数过滤操作的目的,之后只要该API函数被调用,程序就会跳转运行我们的函数。
(2)Ring3下钩子(IATHook):IAT即导入地址表。IATHook就是通过修改IAT表中的函数地址而达到API截获的方法。每个被调用的API函数地址都保存在IAT表中。程序中每个被调用的API函数的CALL指令所使用的地址都是相应函数登记在IAT表的地址。所以为了截获API函数,我们只需将IAT表中的地址换成用户自己的API函数地址即可。
(3)Ring0下钩子(SSDTHook):SSDT的全称系统服务描述符表,就是一个把Ring3的Win32API和Ring0的内核API联系起来的表。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。通过修改此表的函数地址可以对常用Windows函数及API进行挂钩,从而实现对一些关心的系统动作进行过滤、监控的目的。因此,修改在SSDT这个数组中保存的系统服务的地址,就可以将这个地址对应保存的服务地址替换掉,将我们自己的钩子处理函数的地址来替换掉原来的地址,这样当每次调用这个地址时就会调用我们自己的这个钩子处理函数了。
发明内容
技术问题:本发明的目的是提供一种基于内核驱动钩子技术的电子标签数据保护方法,通过直接从电子标签系统底层获取电子标签数据,跳过在传输过程中可能出现的数据篡改情况,从而保护标签数据不被篡改。与传统的保护电子标签本身的方法不同,本方法从读卡器的内核驱动着手,使用内核驱动钩子技术在电子标签底层获取电子标签数据。通过本发明提出的方法可以达到在电子标签系统底层截取电子标签读卡器读出的电子标签数据,从而达到对电子标签数据进行保护的目的。
技术方案:本发明的方法是一种使用传统PC技术应用于新型物联网环境的方法,通过Rootkit中钩子技术对读卡器驱动进行处理,然后达到预计效果。其目标是提出一种电子标签数据的安全隐患,通过本方法验证并提供安全方案。
本发明的基于内核驱动钩子技术的电子标签数据保护方法采用Windows内核驱动钩子技术从电子标签系统的底层直接获取电子标签数据,从而达到保护电子标签数据的目的,具体是使用Windows内核驱动钩子技术对读卡器驱动程序进行处理,即通过定位钩子位置、编写钩子DLL程序并通过钩子注入器将钩子DLL程序注入到读卡程序中来获取电子标签数据;该方法所包含的步骤为:
步骤1).用户使用电子标签读卡器读取电子标签的数据,如果能正常读取,则转步骤2),如果不能正常读取,转步骤6);
步骤2).用户运行钩子注入器;
步骤3).用户使用步骤2)中的钩子注入器将钩子DLL程序注入到读卡程序中,如不能成功注入则转步骤6);
步骤4).等待钩子DLL程序注入成功提示,然后重新使用读卡器对电子标签进行读卡操作;
步骤5).等待读卡程序显示出读取的电子标签数据,如果显示的数据与步骤1)中正常读取的数据相同,则电子标签数据保护成功;否则,转步骤6);
步骤6).检查出错原因,然后回步骤1)执行。
所述的钩子DLL程序,使用内联钩子技术,通过解析原读卡函数的头五个字节,把它们复制到数组保存起来,然后用守护读卡函数的地址替换掉它们,达到一旦用户执行原读卡函数,就会跳转执行守护读卡函数的目的;钩子DLL程序所包含的步骤为:
步骤1)定位原读卡函数的头五个字节,然后修改原读卡函数的内存属性,改为“可读可写”;
步骤2)将原读卡函数的头五个字节保存到临时数组中,并使用0xE9+守护读卡函数的地址替换掉原读卡函数的头五个字节;
步骤3)程序执行守护读卡函数,守护读卡函数用来获取电子标签的数据;
步骤4)程序将保存在临时数组中的原读卡函数的头五个字节取出并恢复;
步骤5)程序恢复到原读卡程序正常的执行流程。
所述的钩子注入器,使用DLL注入技术中的远线程注入技术,通过在读卡程序进程中创建远线程的方法进入到读卡程序进程的内存地址空间,并通过该远线程将钩子DLL程序注入到读卡程序进程的地址空间中,从而达到在读卡程序进程中注入钩子DLL程序的目的;钩子注入器所包含的步骤为:
步骤1)使用OpenProcess函数得到读卡程序进程的句柄;
步骤2)在读卡程序进程中为钩子DLL程序分配内存,然后把钩子DLL程序的文件路径写到分配的内存中;
步骤3)使用CreateRemoteThread和LoadLibrary函数把钩子DLL程序映射到读卡程序进程中;
步骤4)等待远线程结束,然后释放步骤2)中分配的内存;
步骤5)用CreateRemoteThread和FreeLibrary把钩子DLL程序从读卡程序进程中卸载。
有益效果:本发明方法提出了一种基于内核驱动钩子技术的电子标签数据保护新方法,主要用于保护电子标签的数据安全。本发明具有以下一些特殊优点和有益成果:
(1)使用较少的资源:当多个程序使用同一个函数库时,DLL形式的钩子程序可以减少在磁盘和物理内存中加载的代码的重复量。这能影响到在前台运行的程序,而且可以影响其他在Windows操作系统上运行的程序。
(2)模块式体系结构:DLL形式的钩子程序有助于模块式程序的开发。这可以帮助开发多个语言版本的模块式体系结构的程序。方便版本更新,新功能加入以及代码修改等。
(3)简化部署和安装:当DLL中的函数需要更新或修复时,部署和安装DLL不要求重新建立程序与该DLL的链接。此外,如果多个程序使用同一个DLL,那么多个程序都将从该更新或修复中获益。
(4)应用广泛:钩子技术涵盖了从用户层的IAT钩子到内核层的SSDT钩子、IDT钩子等方方面面,应用广泛。
(5)可扩展性强:在本发明方法的基础上,只需根据特定的技术要求而改变钩子编程的内容,就能实现特定要求的电子标签数据处理方法,可扩展性强。
附图说明
图1是内联钩子技术的流程示意图。图中比较了钩子前后的程序执行流程。
图2是本发明的结构示意图。图中包括:电子标签读卡器、电子标签、显示器、后台数据库以及守护用户。
图3是电子标签数据的流向图。表示本发明方法示例的电子标签数据流向情况。其中,实心线代表原程序电子标签数据流向;空心线代表执行本发明方法后的电子标签数据流向。
图4是本发明的技术体系框图。图中分三个层次说明了本发明的体系结构。
具体实施方式
本发明主要分为三大部分:
(1)定位钩子位置部分:该部分技术方案主要用到反汇编(Disassembly)技术。反汇编技术就是把目标代码转为汇编代码的过程,也可说是把机器语言转为汇编语言代码的过程。反汇编分为静态反汇编和动态反汇编。静态反汇编是从反汇编出来的程序清单上分析,从提示信息入手进行分析。常用的静态分析工具是W32DASM、PEiD、FileInfo、HexRaysIda和HIEW等。动态反汇编即在程序运行中进行反汇编处理以及调试工作,常用的动态分析工具有OD、IDAPro、DEBUG、C32等。本发明使用反汇编技术动态分析读卡程序,通过断点与调试来定位读卡函数的位置,并通过会汇编代码的阅读,确定读卡函数的入口地址。读卡函数即本发明的钩子点。
钩子DLL编程部分:该部分技术方案核心技术为内联钩子(InlineHook)技术。内联钩子就是对函数执行流程进行修改,达到控制函数过滤操作的目的。内联钩子通过解析函数钩子点的几条指令,把它们复制到数组保存起来,然后用一个调用我们的函数的几条指令来替换,如果要执行原函数,则在我们函数处理完毕,再执行我们保存起来的钩子点的几条指令,然后调回我们取指令之后的地址执行。理论上我们可以在函数任何地方把原来指令替换成我们的跳转指令。常见的内联钩子点位置通常有三种:
a.将目标函数开头部分代码修改为跳转语句:这样钩子函数在目标函数执行前获得执行权,它调用真正的目标函数。该方法的优点是容易定位修改点,操作简单。本发明采取此种方法。
b.将目标函数中间部分指令修改为跳转语句:在目标函数执行到一定步骤时,钩子函数获得执行权,对目标函数内部数据进行修改。该方法的优点是不易检测,缺点是较难定位插入点和目标数据的位置。
c.修改目标函数某处call或jump指令的目标地址:该方法与方法b类似,其缺点是通用性能差,不容易找到合适的call或jmp指令。
本发明采取a方法,本发明的内联钩子(InlineHook)流程图用图1来解释。相关步骤如下:
步骤1)通过反汇编定位到钩子点函数的头五个字节,本发明实例中为读卡函数的字节0x55,0x8B,0xEC,0x6A,0xFF。
步骤2)修改Api函数的内存属性,改为“可读可写”。
步骤3)将头五个字节保存到ResumeFunction函数中。ResumeFunction函数用于恢复操作,该函数运行完这五个字节后,跳转到原函数第六字节指令所在地址。
步骤4)将头五个字节改成0xE9+MyFunction函数的地址(4个字节)。0xE9代表汇编指令JMP。MyFunction函数用于完成截取数据操作。
步骤5)MyFunction函数首先执行处理函数,即完成在底层截取标签数据的功能,然后跳转到ResumeFunction函数中。
步骤6)ResumeFunction函数执行之后,就恢复到原程序正常的执行流程。
为了方便注入,本发明钩子编程的最终结果以DLL(动态链接库)的形式出现。DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。
DLL有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。使用DLL还有助于促进代码的模块化、代码重用、内存的有效使用和减少所占用的磁盘空间。因此,操作系统和程序能够更快地加载和运行,并且在计算机中占用较少的磁盘空间。一旦DLL的文件映像被映射到进程的地址空间中,DLL函数就可以供进程中运行的所有线程使用。
钩子注入器部分:该部分技术方案主要用到DLL注入(DLLInjection)技术。常用的DLL注入技术有三种。
a.用Windows钩子把DLL映射到进程中:Windows钩子的主要作用就是监视某个线程的消息流动。如果被挂钩(监视)的线程属于别的进程,此时你的钩子过程必须放在一个动态连接库(DLL)中。当钩子设置成功,调用SetWindowHookEx时,系统会自动映射这个DLL到被挂钩的线程,但并不是立即映射。因为所有的Windows钩子都是基于消息的,直到一个适当的事件发生后这个DLL才被映射。
b.创建远线程注入:指通过在另一个进程中创建远程线程的方法进入目标进程的内存地址空间。在进程中可以通过CreateThread函数创建线程,被创建的新线程与主线程共享地址空间以及其他的资源。同样,通过CreateRemoteThread函数可以在其他进程内创建新线程,新创建的远程线程可以共享远程进程的地址空间。因此可以使用插入到目标进程中的远程线程将DLL插入到目标进程的地址空间,即利用该线程通过调用WindowsAPILoadLibrary函数来注入DLL。
c.利用注册表注入:在WindowsNT/2000/XP/2003中,有一个注册表键值HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsHKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs。当某个进程加载User32.DLL时,这里面列出的所有的DLL都将利用LoadLibrary函数加载到该进程空间中。我们可以把自己的DLL加入该键值,这样就可以注入到进程中了。
本发明采取的是b方法,即使用远线程注入技术来实现DLL注入。相关步骤如下:
步骤1)得到远程进程的HANDLE(使用OpenProcess)。
步骤2)在远程进程中为DLL文件名分配内存(VirtualAllocEx)。
步骤3)把DLL的文件名(全路径)写到分配的内存中(WriteProcessMemory)
步骤4)使用CreateRemoteThread和LoadLibrary把DLL映射近远程进程。
步骤5)等待远程线程结束(WaitForSingleObject),即等待LoadLibrary返回。也就是说当DLLMain(是以DLL_PROCESS_ATTACH为参数调用的)返回时远程线程就立即结束了。
步骤6)取回远程线程的结束码(GetExitCodeThtread),即LoadLibrary的返回值,也就是DLL加载后的基地址(HMODULE)。
步骤7)释放步骤2)分配的内存(VirtualFreeEx)。
步骤8)用CreateRemoteThread和FreeLibrary把DLL从远程进程中卸载。调用时传递步骤6)取得的HMODULE给FreeLibrary(通过CreateRemoteThread的lpParameter参数)。
步骤9)等待线程的结束(WaitSingleObject)。
为了方便描述,我们假定有如下应用实例:
一个守护用户(用A表示)要保护电子标签读卡器(用B表示)读出的电子标签(用C表示)数据。为方便描述,假设读卡函数为F,守护读卡函数为MyF。则其具体实施方式为:
(1)首先描述正常情况下。正常用户使用读卡器读取电子标签数据为正确的卡序列号,记为R。字符串R初始值为一长串二进制数字,经程序转换成8位16进制数值。正常读卡流程即通过读卡器驱动将电子标签C的序列号R读取出来,然后读卡程序对R进行转换处理后在显示器上显示处理。
(2)守护用户A进入该环境。守护用户A使用钩子注入器将钩子DLL程序注入到读卡程序中。钩子DLL程序的具体编写步骤如下:
步骤1)在DLL注入时触发守护读卡函数
使用DLLMain函数实现触发守护函数代码块。DLLMain函数声明如下:DLLMain(HINSTANCEhmodule,DWORDreason,LPVOIDlpreserved)
{
if(reason==DLL_PROCESS_ATTACH)
…………//此处实现守护函数
if(reason==DLL_PROCESS_DETACH)
…………此处实现卸载钩子函数
}
即在reason==DLL_PROCESS_ATTACH时触发守护函数代码块,在reason==DLL_PROCESS_DETACH时触发卸载钩子代码块。
步骤2)获取读卡函数F的地址
使用GetModuleHandle函数获取读卡函数所在DLL的模块句柄。使用GetProcAddress函数获取读卡函数的地址。
步骤3)声明一个伪造的读卡函数MyF,即守护读卡函数
使用WINAPI函数声明守护读卡函数MyF,保证MyF函数与F函数所有参数及返回值都相同,不然程序会报错。
步骤4)构造守护读卡函数MyF的地址来代替读卡函数F
通过字节的形式来代表MyF的地址,保存到变量tem里面。地址计算公式为:MyF函数地址的4个字节=MyF函数地址-(F函数地址+5)
步骤5)构造跳转函数
跳转函数用来将执行F函数的地址跳转到执行MyF。首先声明一个字节数组_data,字节长度为5。其中_data[0]=0xE9,0xE9代表汇编指令JMP。然后使用VirtualProtect函数来修改内存属性,否则内存地址是无法跳转的。最后使用memcpy函数来修改内存。至此,跳转函数完成,执行到这一步的时候,钩子DLL程序所要完成的功能已经编写完成。
步骤6)在DLL卸载时卸载钩子DLL程序
使用memcpy函数,通过字节数组的形式把F函数原地址的前五个字节(本发明实例中为8B,FF,55,8B,EC),写入F函数地址,用来恢复原函数执行流程。达到卸载钩子的目的。
(3)使用本发明实例编写的钩子注入器将钩子DLL程序注入到读卡程序之后,显示器将直接显示从电子标签系统底层获取的电子标签数据,避免电子标签数据在传输层出现数据篡改的情况,从而保护电子标签数据。
(4)守护读卡函数完成后,将钩子DLL程序卸载掉,然后退出钩子注入器。本发明方法实施方式到此结束。

Claims (1)

1.一种基于内核驱动钩子技术的电子标签数据保护方法,其特征在于采用Windows内核驱动钩子技术从电子标签系统的底层直接获取电子标签数据,从而达到保护电子标签数据的目的,具体是使用Windows内核驱动钩子技术对读卡器驱动程序进行处理,即通过定位钩子位置、编写钩子DLL程序并通过钩子注入器将钩子DLL程序注入到读卡程序中来获取电子标签数据;该方法所包含的步骤为:
步骤1).用户使用电子标签读卡器读取电子标签的数据,如果能正常读取,则转步骤2),如果不能正常读取,转步骤6);
步骤2).用户运行钩子注入器;
步骤3).用户使用步骤2)中的钩子注入器将钩子DLL程序注入到读卡程序中,如不能成功注入则转步骤6);
步骤4).等待钩子DLL程序注入成功提示,然后重新使用读卡器对电子标签进行读卡操作;
步骤5).等待读卡程序显示出读取的电子标签数据,如果显示的数据与步骤1)中正常读取的数据相同,则电子标签数据保护成功;否则,转步骤6);
步骤6).检查出错原因,然后回步骤1)执行;
其中:
所述的钩子DLL程序,使用内联钩子技术,通过解析原读卡函数的头五个字节,把它们复制到数组保存起来,然后用守护读卡函数的地址替换掉它们,达到一旦用户执行原读卡函数,就会跳转执行守护读卡函数的目的;钩子DLL程序所包含的步骤为:
步骤a)定位原读卡函数的头五个字节,然后修改原读卡函数的内存属性,改为“可读可写”;
步骤b)将原读卡函数的头五个字节保存到临时数组中,并使用0xE9+守护读卡函数的地址替换掉原读卡函数的头五个字节;
步骤c)程序执行守护读卡函数,守护读卡函数用来获取电子标签的数据;
步骤d)程序将保存在临时数组中的原读卡函数的头五个字节取出并恢复;
步骤e)程序恢复到原读卡程序正常的执行流程;
所述的钩子注入器,使用DLL注入技术中的远线程注入技术,通过在读卡程序进程中创建远线程的方法进入到读卡程序进程的内存地址空间,并通过该远线程将钩子DLL程序注入到读卡程序进程的地址空间中,从而达到在读卡程序进程中注入钩子DLL程序的目的;钩子注入器所包含的步骤为:
步骤f)使用OpenProcess函数得到读卡程序进程的句柄;
步骤g)在读卡程序进程中为钩子DLL程序分配内存,然后把钩子DLL程序的文件路径写到分配的内存中;
步骤h)使用CreateRemoteThread和LoadLibrary函数把钩子DLL程序映射到读卡程序进程中;
步骤i)等待远线程结束,然后释放步骤g)中分配的内存;
步骤j)用CreateRemoteThread和FreeLibrary把钩子DLL程序从读卡程序进程中卸载。
CN201310472008.3A 2013-10-11 2013-10-11 一种基于内核驱动钩子技术的电子标签数据保护方法 Expired - Fee Related CN103559450B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310472008.3A CN103559450B (zh) 2013-10-11 2013-10-11 一种基于内核驱动钩子技术的电子标签数据保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310472008.3A CN103559450B (zh) 2013-10-11 2013-10-11 一种基于内核驱动钩子技术的电子标签数据保护方法

Publications (2)

Publication Number Publication Date
CN103559450A CN103559450A (zh) 2014-02-05
CN103559450B true CN103559450B (zh) 2016-01-13

Family

ID=50013695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310472008.3A Expired - Fee Related CN103559450B (zh) 2013-10-11 2013-10-11 一种基于内核驱动钩子技术的电子标签数据保护方法

Country Status (1)

Country Link
CN (1) CN103559450B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107180189A (zh) * 2016-03-11 2017-09-19 无锡天脉聚源传媒科技有限公司 一种隐藏程序进程的方法及装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919458B (zh) * 2015-12-25 2020-09-01 腾讯科技(深圳)有限公司 Hook目标内核函数的方法及装置
CN105653980B (zh) * 2015-12-30 2019-06-11 福建联迪商用设备有限公司 一种虚拟内存数据的保护方法及其系统
CN107741862A (zh) * 2016-08-24 2018-02-27 长沙博为软件技术股份有限公司 一种桌面应用程序跨进程的数据抓取方法
CN107967203B (zh) * 2016-10-20 2020-07-28 腾讯科技(深圳)有限公司 基于可执行文件的函数判定方法及装置
CN108932407B (zh) * 2018-05-22 2022-01-25 北京奇虎科技有限公司 一种程序安全保护方法及装置
CN109344028B (zh) * 2018-09-13 2020-09-15 西安交通大学 一种免超级用户权限的进程行为监控装置与方法
CN111767119B (zh) * 2020-06-30 2023-05-23 云袭网络技术河北有限公司 一种不触发系统保护的内核挂钩方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
CN102254124A (zh) * 2011-07-21 2011-11-23 周亮 一种移动终端信息安全防护系统和方法
US8255931B2 (en) * 2008-02-11 2012-08-28 Blue Coat Systems, Inc. Method for implementing ejection-safe API interception

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
US8255931B2 (en) * 2008-02-11 2012-08-28 Blue Coat Systems, Inc. Method for implementing ejection-safe API interception
CN102254124A (zh) * 2011-07-21 2011-11-23 周亮 一种移动终端信息安全防护系统和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
远程线程注入DLL的检测与卸载方法研究;王佩红,等;《计算机与数字工程》;20100320;第38卷(第3期);论文第107页 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107180189A (zh) * 2016-03-11 2017-09-19 无锡天脉聚源传媒科技有限公司 一种隐藏程序进程的方法及装置
CN107180189B (zh) * 2016-03-11 2020-06-09 无锡天脉聚源传媒科技有限公司 一种隐藏程序进程的方法及装置

Also Published As

Publication number Publication date
CN103559450A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN103559450B (zh) 一种基于内核驱动钩子技术的电子标签数据保护方法
CN102651060B (zh) 一种漏洞检测的方法和系统
CN102609645B (zh) 一种基于网络隔离结构的网站数据防篡改方法
CN106462703B (zh) 补丁文件分析系统与分析方法
CN103959247B (zh) 虚拟化计算机程序中的安全
CN101356535B (zh) 一种检测和防止java脚本程序中不安全行为的方法和装置
CN104412232B (zh) 事务处理方法、系统、介质
CN102622536B (zh) 一种恶意代码捕获方法
CN104380246B (zh) 用于管理计算环境中的中断的方法、系统及介质
CN104598809A (zh) 程序的监控方法及其防御方法以及相关装置
CN107908958B (zh) SELinux安全标识符防篡改检测方法及系统
CN104268476B (zh) 一种运行应用程序的方法
CN104462978A (zh) 一种应用程序权限管理的方法和装置
CN103593605A (zh) 一种基于权限使用行为的安卓平台应用程序动态分析系统
CN103473501B (zh) 一种基于云安全的恶意软件追踪方法
CN105408911A (zh) 硬件和软件执行概况分析
CN103001947A (zh) 一种程序处理方法和系统
CN104268475B (zh) 一种运行应用程序的系统
TW201935306A (zh) 用於安全初始化的策略連結及/或載入之系統和方法
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
CN103631712B (zh) 一种基于内存管理的模式化软件关键行为跟踪方法
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
CN102592086A (zh) 在沙箱中浏览网页方法及装置
KR101068931B1 (ko) 패턴 탐지 기반의 웹쉘 관제 시스템 및 그 방법
CN104217162A (zh) 一种智能终端恶意软件的检测方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20140205

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000212

Denomination of invention: Electronic tag data protection method based on kernel driver hook technology

Granted publication date: 20160113

License type: Common License

Record date: 20161118

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EC01 Cancellation of recordation of patent licensing contract

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000212

Date of cancellation: 20180116

EC01 Cancellation of recordation of patent licensing contract
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160113

Termination date: 20181011

CF01 Termination of patent right due to non-payment of annual fee