文件保护HOOK

本文深入探讨了文件保护机制,结合HOOK技术,阐述如何在系统层面上实现对文件访问的监控与保护,同时讨论了可能遇到的安全挑战及应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  
//////////////////////////////////////////////////
// HookTermProLib.cpp文件
#include <windows.h>
#include "APIHook.h"
extern CAPIHook g_TerminateProcess;
BOOL WINAPI myDeleteFileA(LPCSTR lpFileName)
{
 int i=1;
 char num='0';
 char FNFromINI[1024]={0};//读取INI文件中的文件路径保存在此
 char skey[10]={'F','i','l','e'};//INI文件的键名
 char pos[5]={0};
 //遍历INI文件,
 do
 {
  itoa(i,&num,10);//把int型转成char型
  skey[4]=num;//键名
  skey[5]='\0';//
  //读文件
  GetPrivateProfileString(skey,"FilePathName","File0",FNFromINI,1024,"F:\\File.ini"); 
  GetPrivateProfileString(skey,"pos","File0",pos,6,"F:\\File.ini"); 
  i++;
 } while ((strcmp(FNFromINI,"File0")!=0)&&(strcmp(lpFileName,FNFromINI)!=0));
 //如果文件名相等,说明是被保护的文件
 if ((strcmp(lpFileName,FNFromINI)==0)&&('1'==pos[1]))
 {
 MessageBox(NULL,"禁止删除A","文件保护器",NULL);
 return FALSE; 
 }
 else
  return DeleteFileA(lpFileName);
}
BOOL WINAPI myDeleteFileW(LPCWSTR lpFileName)
{
 int i=1;
 char num='0';
 char FNFromINI[1024]={0};//读取INI文件中的文件路径保存在此
 char skey[10]={'F','i','l','e'};//INI文件的键名
 char DoFileName[1024]={0};//被操作的文件
  char pos[5]={0};
 //把宽字符转成char[]
 WideCharToMultiByte(CP_ACP,
  0,
  (LPCWSTR)lpFileName,   //宽字符
  -1,
  DoFileName,    //c har*
  256,            
  NULL,NULL);
 //遍历INI文件,
 do
 {
  itoa(i,&num,10);//把int型转成char型
  skey[4]=num;//键名
  skey[5]='\0';//
  //读文件
  GetPrivateProfileString(skey,"FilePathName","File0",FNFromINI,1024,"F:\\File.ini"); 
  GetPrivateProfileString(skey,"pos","File0",pos,6,"F:\\File.ini"); 
  i++;
 } while ((strcmp(FNFromINI,"File0")!=0)&&(strcmp(DoFileName,FNFromINI)!=0));
 //如果文件名相等,说明是被保护的文件
 if ((strcmp(DoFileName,FNFromINI)==0)&&('1'==pos[1]))
 {
  MessageBox(NULL,"禁止删除Wwwwwww","文件保护器",NULL);
  return FALSE; 
  }
 else
  return DeleteFileW(lpFileName);
}
BOOL WINAPI MyMoveFileA(LPCTSTR s1,LPCTSTR s2)
{
 int i=1;
 char num='0';
 char FNFromINI[1024]={0};//读取INI文件中的文件路径保存在此
 char skey[10]={'F','i','l','e'};//INI文件的键名
 char pos[5]={0};
 //遍历INI文件,
 do
 {
  itoa(i,&num,10);//把int型转成char型
  skey[4]=num;//键名
  skey[5]='\0';//
  //读文件
  GetPrivateProfileString(skey,"FilePathName","File0",FNFromINI,1024,"F:\\File.ini"); 
  GetPrivateProfileString(skey,"pos","
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值