回复:伪造小程序第二弹(程序托盘)(3月7日更新)
//对楼主的程序做了改动,不过不知道这个修改是否造成程序上的漏洞
//而且不知道怎么联系楼主,所以就贴在这里了.
//如果我理解没有错误的话,.inf文件中,前面是CONTROLDATA数据,后面是40个
//EXEPATH数据(我是按照我这个理解来写的)
//将原来的ControlData 和 EXEPath更改到FileInfo 中来,然后设立一个全局的FileInfo指针.
//air.h
struct FileInfo
{
CONTROLDATA ControlData_;
EXEPATH EXEPath_[5][8];
};
FileInfo* fileInfo;
//air.cpp
//添加2个宏,来防止对原程序作出改动:
#define EXEPath (fileInfo->EXEPath_)
#define ControlData (fileInfo->ControlData_)
//然后将原NoteRW进行修改.(需要C++编译器的支持)
//利用内存文件映射
//这样,就不需要单独的从文件中读取和写入操作,直接在内存中完成.
//看看,是不是少了好多行代码啊.
void NoteRW(HWND hWnd, int Mode)
{
class NoteRM_C
{
public:
NoteRM_C(void)
{
static char ConfigFileName[] = "AIR_Launcher_config.ini";
int ConfigFilePathLength = 2000;
char *ConfigFileNamePart;
GetFullPathName(ConfigFileName,
ConfigFilePathLength,
ControlData1.ConfigFilePath,
&ConfigFileNamePart);
HANDLE hFile =
CreateFile(ConfigFileName,
GENERIC_READ | GENERIC_WRITE,
0, 0,
OPEN_ALWAYS,
FILE_FLAG_RANDOM_ACCESS,0);
size_t fsize = sizeof(FileInfo);
fileMap_s_ =
CreateFileMapping(hFile,
0,
PAGE_READWRITE,
0,
fsize,
0);
CloseHandle(hFile);
fileInfo = (FileInfo*)MapViewOfFile(fileMap_s_,FILE_MAP_ALL_ACCESS,0,0,fsize);
}
~NoteRM_C(void)
{
UnmapViewOfFile(fileInfo);
CloseHandle(fileMap_s_);
}
private:
HANDLE fileMap_s_;
};
static NoteRM_C file;
}
//air.cpp文件末尾
#undef EXEPath
#undef ControlData
//有其它意见我也会继续提出的.呵呵