下载地址:
有毒的:木马(Trojan) 不过不是我的
一个完整的特洛伊木马套装程序含了两部分:服务端(服务器部分)和客户端(控制器部分)。植入对方电脑的是服务端,而黑客正是利用客户端进入运行了服务端的电脑。运行了木马程序的服务端以后,会产生一个有着容易迷惑用户的名称的进程,暗中打开端口,向指定地点发送数据(如网络游戏的密码,即时通信软件密码和用户上网密码等),黑客甚至可以利用这些打开的端口进入电脑系统。 特洛伊木马程序不能自动操作, 一个特洛伊木马程序是包含或者安装一个存心不良的程序的, 它可能看起来是有用或者有趣的计划(或者至少无害)对一不怀疑的用户来说,但是实际上有害当它被运行。 特洛伊木马不会自动运行,它是暗含在某些用户感兴趣的文档中,用户下载时附带的。当用户运行文档程序时,特洛伊木马才会运行,信息或文档才会被破坏和遗失。 特洛伊木马和后门不一样,后门指隐藏在程序中的秘密功能,通常是程序设计者为了能在日后随意进入系统而设置的。 特洛伊木马有两种,universal的和transitive的,universal就是可以控制的,而transitive是不能控制,刻死的操作。
希望能帮助到你!
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 DLL注入在黑客技术中也叫做进城插入技术,一些木马、盗号插件、破坏性病毒为了能够随系统启动或者伪装为系统进程,会插入系统的DLL文件并调用其中封装的函数,例如键盘截取就利用了DLL注入并且调用了HOOK钩子机制 详细例子: hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 PROCESS_VM_OPERATION | //允许远程VM操作 PROCESS_VM_WRITE, //允许远程VM写 FALSE, dwRemoteProcessId ) 由于我们后面需要写入远程进程的内存地址空间并建立远程线程,所以需要申请足够的权限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。 如果进程打不开,以后的操作就别想了。进程打开后,就可以建立远线程了,不过别急,先想想这个远线程的线程函数是什么?我们的目的是注入一个DLL。而且我们知道用LoadLibrary可以加载一个DLL到本进程的地址空间。于是,自然会想到如果可以在目标进程中调用LoadLibrary,不就可以把DLL加载到目标进程的地址空间了吗?对!就是这样。远线程就在这儿用了一次,建立的远线程的线程函数就是LoadLibrary,而参数就是要注入的DLL的文件名。(这里需要自己想一想,注意到了吗,线程函数ThreadProc和LoadLibrary函数非常相似,返回值,参数个数都一样) 还有一个问题,LoadLibrary这个函数的地址在哪儿?也许你会说,这个简单,GetProcAddress就可以得出。于是代码就出来了。 char *pszLibFileRemote="my.dll"; PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"); CreateRemoteThread( hRemoteProcess, NULL, 0, pfnStartAddr, pszLibFileRemote, 0, NULL); 但是不对!不要忘了,这是远线程,不是在你的进程里,而pszLibFileRemote指向的是你的进程里的数据,到了目标进程,这个指针都不知道指向哪儿去了,同样pfnStartAddr这个地址上的代码到了目标进程里也不知道是什么了,不知道是不是你想要的LoadLibraryA了。但是,问题总是可以解决的,Windows有些很强大的API函数,他们可以在目标进程里分配内存,可以将你的进程中的数据拷贝到目标进程中。因此pszLibFileRemote的问题可以解决了。 char *pszLibFileName="my.dll";//注意,这个一定要是全路径文件名,除非它在系统目录里;原因大家自己想想。 //计算DLL路径名需要的内存空间 int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(char); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名缓冲区 pszLibFileRemote = (char *) VirtualAllocEx( hRemoteProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE); //使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间 iReturnCode = WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL); OK,现在目标进程也认识pszLibFileRemote了,但是pfnStartAddr好像不好办,我怎么可能知道LoadLibraryA在目标进程中的地址呢?其实Windows为我们解决了这个问题,LoadLibraryA这个函数是在Kernel32.dll这个核心DLL里的,而这个DLL很特殊,不管对于哪个进程,Windows总是把它加载到相同的地址上去。因此你的进程中LoadLibraryA的地址和目标进程中LoadLibraryA的地址是相同的(其实,这个DLL里的所有函数都是如此)。至此,DLL注入结束了。
我试着用自己理解过后,再用自己的话来讲给你听
一般来说,我们的系统启动时是通过开启运行许多进程来达到的,又如我们能进行日常操作的桌面就是通过这个进程:explorer.exe,而我们在桌面上实现的许多操作,又如双击、复制、粘贴等等这些操作,就是通过这个进程调用系统里的dll(动态链接库文件)来实现的。
dll木马就是利用系统的这个特性来实现的,这种dll木马不开启端口、不加载服务,只是通过一段编写的API接口程序,将自身的dll文件使某个系统进程(一般为重要的系统进程)启动时将它作为正常的系统dll文件加载或调用而实现自身的启动。所以一旦系统中了这种木马,很难删除,有的甚至在安全模式下也不能清除!
不知你懂了没有。
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 DLL注入在黑客技术中也叫做进城插入技术,一些木马、盗号插件、破坏性病毒为了能够随系统启动或者伪装为系统进程,会插入系统的DLL文件并调用其中封装的函数,例如键盘截取就利用了DLL注入并且调用了HOOK钩子机制 详细例子: hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 PROCESS_VM_OPERATION | //允许远程VM操作 PROCESS_VM_WRITE, //允许远程VM写 FALSE, dwRemoteProcessId ) 由于我们后面需要写入远程进程的内存地址空间并建立远程线程,所以需要申请足够的权限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。 如果进程打不开,以后的操作就别想了。进程打开后,就可以建立远线程了,不过别急,先想想这个远线程的线程函数是什么?我们的目的是注入一个DLL。而且我们知道用LoadLibrary可以加载一个DLL到本进程的地址空间。于是,自然会想到如果可以在目标进程中调用LoadLibrary,不就可以把DLL加载到目标进程的地址空间了吗?对!就是这样。远线程就在这儿用了一次,建立的远线程的线程函数就是LoadLibrary,而参数就是要注入的DLL的文件名。(这里需要自己想一想,注意到了吗,线程函数ThreadProc和LoadLibrary函数非常相似,返回值,参数个数都一样) 还有一个问题,LoadLibrary这个函数的地址在哪儿?也许你会说,这个简单,GetProcAddress就可以得出。于是代码就出来了。 char *pszLibFileRemote="my.dll"; PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"); CreateRemoteThread( hRemoteProcess, NULL, 0, pfnStartAddr, pszLibFileRemote, 0, NULL); 但是不对!不要忘了,这是远线程,不是在你的进程里,而pszLibFileRemote指向的是你的进程里的数据,到了目标进程,这个指针都不知道指向哪儿去了,同样pfnStartAddr这个地址上的代码到了目标进程里也不知道是什么了,不知道是不是你想要的LoadLibraryA了。但是,问题总是可以解决的,Windows有些很强大的API函数,他们可以在目标进程里分配内存,可以将你的进程中的数据拷贝到目标进程中。因此pszLibFileRemote的问题可以解决了。 char *pszLibFileName="my.dll";//注意,这个一定要是全路径文件名,除非它在系统目录里;原因大家自己想想。 //计算DLL路径名需要的内存空间 int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(char); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名缓冲区 pszLibFileRemote = (char *) VirtualAllocEx( hRemoteProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE); //使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间 iReturnCode = WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL); OK,现在目标进程也认识pszLibFileRemote了,但是pfnStartAddr好像不好办,我怎么可能知道LoadLibraryA在目标进程中的地址呢?其实Windows为我们解决了这个问题,LoadLibraryA这个函数是在Kernel32.dll这个核心DLL里的,而这个DLL很特殊,不管对于哪个进程,Windows总是把它加载到相同的地址上去。因此你的进程中LoadLibraryA的地址和目标进程中LoadLibraryA的地址是相同的(其实,这个DLL里的所有函数都是如此)。至此,DLL注入结束了。
你可以用这个软件来处理试试:
按杀毒软件提供的路径,记下来
1.下载一个软件:冰刃()
这是一个绿色软件,下载解压缩后即可使用。
点击:进程 逐个右击右侧的进程--模块信息,仔细查看这个dll到底对哪些进程进行了插入(特别是那些系统进程),尝试用右侧的“强制解除”试试,能不能将这个dll文件从进程中解除出来(可能会碰上在某个进程中强制解除时机器会重启的现象,碰上这个问题的话,就麻烦多了,在这里也讲不清了)。
如果不行,请先运行regsvr32 /u 这个dll文件,将它从系统中反注册。
2.在冰刃左侧的栏里通过“文件”直接定位到这个文件所在的文件夹下,找到这个文件
3.通过按钮“创建时间”对这个文件夹下的文件进行排序,仔细查看与这个文件在创建时间是同一天的所有文件(但是不是都是与它一样是病毒文件,需要你判断)。右击它们一一删除。
4.在这个软件的界面里直接搜索注册表里这个文件的键值,删除搜索到的。
5.重启电脑,这个东西应该清除干净了。
dlephi的
**********************************************************************************
DLL文件说明:
**********************************************************************************
library Project2;
uses
SysUtils, //应用单元
Classes,
windows;
procedure Log(dwReason:DWord); //要输入的函数,参数必须要dwReason:DWord 注意:尽量不用stdcall关键字
var
i:integer;
begin
for i:=0 to 5 do begin
MessageBox(0,'已经被注入,时间5秒,'0',16);
sleep(1000);
end;
ExitProcess(0);
end;
{$R *.res}
exports //输入的函数名
Log;
begin //DLL的初始化区域内容
DllProc := @Log; //DllProc是本Dll的首地址,将要注入的函数地址赋给他
Log(DLL_PROCESS_ATTACH); //函数的参数必须是:DLL_PROCESS_ATTACH
end.
***********************************************************************************
注入线程代码函数
***********************************************************************************
//-----------------------------------------获得相应应用程序的PID---------------
procedure GetMyProcessID(const AFilename: string; const PathMatch: Boolean; var ProcessID: DWORD);
//参数:进程名,false(不继承),传入的参数(返回值的参数)
var
lppe: TProcessEntry32;
SsHandle: Thandle;
FoundAProc, FoundOK: boolean;
begin
ProcessID :=0;
{ 创建系统快照 }
SsHandle := CreateToolHelp32SnapShot(TH32CS_SnapProcess, 0);
{ 取得快照中的第一个进程 }
{ 一定要设置结构的大小,否则将返回False }
lppe.dwSize := sizeof(TProcessEntry32);
FoundAProc := Process32First(Sshandle, lppe);
while FoundAProc do
begin
{ 进行匹配 }
if PathMatch then
FoundOK := AnsiStricomp(lppe.szExefile, PChar(AFilename)) = 0
else
FoundOK := AnsiStricomp(PChar(ExtractFilename(lppe.szExefile)), PChar(ExtractFilename(AFilename))) = 0;
if FoundOK then
begin
ProcessID := lppe.th32ProcessID;
break;
end;
{ 未找到,继续下一个进程 }
FoundAProc := Process32Next(SsHandle, lppe);
end;
CloseHandle(SsHandle);
end;
//-----------------------------------------------设置打开进程权限----------------
function EnabledDebugPrivilege(const Enabled : Boolean) : Boolean;
//---------参数:true
var
hTk : THandle; { 打开令牌句柄 }
rtnTemp : Dword; { 调整权限时返回的值 }
TokenPri : TOKEN_PRIVILEGES;
const
SE_DEBUG = 'SeDebugPrivilege'; { 查询值 }
begin
Result := False;
{ 获取进程令牌句柄,设置权限 }
if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hTk)) then
begin
TokenPri.PrivilegeCount := 1;
{ 获取Luid值 }
LookupPrivilegeValue(nil,SE_DEBUG,TokenPri.Privileges[0].Luid);
if Enabled then
TokenPri.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
TokenPri.Privileges[0].Attributes := 0;
rtnTemp := 0;
{ 设置新的权限 }
AdjustTokenPrivileges(hTk,False,TokenPri,sizeof(TokenPri),nil,rtnTemp);
Result := GetLastError = ERROR_SUCCESS;
CloseHandle(hTk);
end;
end;
//-------------注入线程函数--------------------
function InjectTo(const Host, Guest: string; const PID: DWORD = 0): DWORD;
//--------参数: 进程名,DLL地址[第3参数:直接指定程序PID]
var
{ 被注入的进程句柄,进程ID}
hRemoteProcess: THandle;
dwRemoteProcessId: DWORD;
{ 写入远程进程的内容大小 }
memSize: DWORD;
{ 写入到远程进程后的地址 }
pszLibFileRemote: Pointer;
iReturnCode: Boolean;
TempVar: DWORD;
{ 指向函数LoadLibraryW的地址 }
pfnStartAddr: TFNThreadStartRoutine;
{ dll全路径,需要写到远程进程的内存中去 }
pszLibAFilename: PwideChar;
begin
Result := 0;
{ 设置权限 }
EnabledDebugPrivilege(True);
{ 为注入的dll文件路径分配内存大小,由于为WideChar,故要乘2 }
Getmem(pszLibAFilename, Length(Guest) * 2 + 1); //这里是在本地分配内存空间:一会儿要释放.因为进程与进程通信只能在内存上传数据
StringToWideChar(Guest, pszLibAFilename, Length(Guest) * 2 + 1);
{ 获取进程ID }
if PID 0 then
dwRemoteProcessID := PID //参数PID不为0,直接指定要注入的程序PID为这个
else
GetMyProcessID(Host, False, dwRemoteProcessID); //否则用函数取得PID
{打开进程:取得远程进程句柄,具有写入权限}
hRemoteProcess := OpenProcess(PROCESS_CREATE_THREAD + {允许远程创建线程}
PROCESS_VM_OPERATION + {允许远程VM操作}
PROCESS_VM_WRITE, {允许远程VM写}
FALSE, dwRemoteProcessId);
{ 用函数VirtualAllocex在远程进程分配空间,并用WriteProcessMemory中写入dll路径 }
memSize := (1 + lstrlenW(pszLibAFilename)) * sizeof(WCHAR);
pszLibFileRemote := PWIDESTRING(VirtualAllocEx(hRemoteProcess, nil, memSize, MEM_COMMIT, PAGE_READWRITE)); //分配远程进程地址空间
TempVar := 0;
iReturnCode := WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, memSize, TempVar); //写远程地址空间内容
if iReturnCode then
begin
pfnStartAddr := GetProcAddress(GetModuleHandle('Kernel32'), 'LoadLibraryW'); //在远程创建线程,只有使用远程调用LoadLibraryW()函数
TempVar := 0;
{ 在远程进程中启动dll }
Result := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, pszLibFileRemote, 0, TempVar); //创建线程
end;
{ 释放内存空间 }
Freemem(pszLibAFilename); //释放本地内存空间
end;
**************************************************************************************************
使用函数
**************************************************************************************************
procedure TForm1.Button3Click(Sender: TObject);
begin
InjectTo('AAAAA.exe', extractfilepath(paramstr(0))+'d.dll');
end;
剧情吧工夫 : 二0 一 六-0 一- 二0 0 九: 五 五:00 长帅第 一散剧情先容 小教良肇事 多多 弛做霖狠口学训 长帅弛教良兵马 平生 ,活了一百明年 ,早年正在美国夏威夷渡过 。当他远望 着这一马平川的年夜 海时,恍如看到了本身 从一个小毛孩成少为长帅的行程。 弛教...
跟着 人们的松凑生涯 ,进行互联网止业的人年夜 多皆把一地的空儿支配 的谦谦的,那用户劳碌 的时刻 ,基本 无意来存眷 您的拉广,只要捉住 了用户整零星 碎的空儿 对于其入止拉广,异时他也能挨领无聊赖的空儿,如许 的后果 便异常 沉紧,上面,尔联合 案例去为年夜 野分享一高,若何 捉住 用户碎片空儿...
Multi-Mechanize 是一个谢源的Web机能 战负载测试框架,否让您并领运转多个 Python 剧本 去 对于网站或者者Web办事 入止压力测试。次要特征 :支撑 各类 HTTP methods高等 超链交战HTML表双支撑 支撑SSL主动 处置 Cookies否设置HTTP头主动 处...
远期要为 二0 一 六年应届熟制造 经营圆里的训练资料 ,正在进修 服装论坛t.vhao.net列位 年夜 神的文章后,深有感想 ,经营的世界让人入神 战神往,但也有让人捉摸没有透之处,是以 尔正在起笔制造 训练资料 的时刻 ,准则是让每个应届卒业 熟能普通 难懂地舆 解经营的观点 战常识 系统...
一、带去流质网站的流质。二、否以提下原站的无名度。三、提下各年夜 搜刮 引擎 对于原站的权重。以上 三点是胜利 的友情链交否以到达 的后果 。作甚 胜利 ,作甚 掉 败呢?1、链交的网站取原站内容出有所有接洽 ,起到感化 也便没有年夜 。2、链交的网站未被搜刮 引擎增除了,则 对于原站会有很年夜 的...
正在盘算 开辟 一个网站时,抉择甚么说话 ,是起首 须要 面临 的答题。今朝 支流的WEB开辟 说话 有ASP.NET、PHP、JSP; 做为MS上世纪宿将 ASP,便没有再说起 ,假如 是由于 保护 圆里的缘故原由 而必需 运用,否斟酌 进级 到ASP.NET,而做为新开辟 一个说话 ,其实 找没...