01介绍
顾名思义,所谓的U盘小偷程序不就是在背地里偷偷的考取U盘内容的程序吗?
但是本文志不在此,而是一起去研究核心中的技术,因为这涉及到违法犯罪,所以各位看官一定不要去实战
02代码分析
如何知道U盘插入的?
string FindDriver() {
int len = GetLogicalDriveStringsA(0, 0);
std::string dri;
dri.resize(len);
GetLogicalDriveStringsA(len, (LPSTR)dri.c_str());
for (int i = 0; i < len - 1; i++) {
if (dri[i] == '\0' && dri[i + 1] == '\0') break; //到结尾,退出
if (dri[i] != '\0') continue; //不为盘符名分界,继续下一次循环
i += 1;
if (GetDriveTypeA(&dri[i]) == DRIVE_REMOVABLE) {
return &dri[i];
}
}
return string();
}
GetLogicalDriveStringsA方法:获取当前系统中所有的盘符,放在第二个参数指示的缓冲区中,第一个参数指示缓冲区的大小
因为一开始不知道要都多大的缓冲区,所以第一次先传入0来获取大小,然后在申请对应大小的缓冲区
GetDriveTypeA方法:用于检测对应的盘符属性,如果等于 DRIVE_REMOVABLE ,则说明这个盘符为U盘。
随后通过快捷键进行启动程序
bool RegisterGlobalKey() {
bool ret = RegisterHotKey(NULL, 'l', MOD_CONTROL, VK_CONTROL); //单击Ctrl开启运行
if (!ret) return ret;
return ret;
}
void UnRegistreGlobalKey() {
UnregisterHotKey(NULL, 'l');
}
随后在启动程序之后进行内容的拷贝等一系列的操作
03注意事项
有些朋友在复制代码进去之后开始运行会报错,那是因为没有使用C++17标准!
当你出现
错误(活动) E0725 名称必须是命名空间名
错误的时候,请右击你的项目名然后选择属性->C++语言标准更改为C++17即可
04代码的获取
关注微信公众号:seeCode 回复C++ 即可无套路获取!