外挂辅助技术分析任务对象基址及封装任务更新函数

来源:互联网 发布:人工智能三级推进体系 编辑:程序博客网 时间:2024/06/17 02:59
基础要求:
1、会一点C语言 
2、懂一点汇编

  学习目标:
     动态定位基址
     编写相关函数
     编写特征码定位函数ScanFeatureCode



//1把特征码转换成全大写
//2读取游戏字节数组数据
//3转换成十六进制字串
//4十六进制 字串比较  找到则返回地址 未找到返回0

DWORD ScanFeatureCode(HANDLE hProcess,//进程句柄
                      IN OUT  char* szpFeatureCode,
              DWORD ndStartAddress,
              DWORD ndEndAddress                      
                      );

作业:优化算法 提升函数速度;


//www.yjxsoft.com QQ150330575
//时间:2014.11月
//函数名:ScanFeatureCode 功能:特征定位
//1把特征码转换成全大写
//2读取游戏字节数组数据
//3转换成十六进制字串
//4十六进制 字串比较  找到则返回地址 未找到返回0

#define  PAGESIZE  0x1024  //每次读取的大小 1KB
DWORD ScanFeatureCode(HANDLE hProcess,//进程句柄
     IN OUT  char* szpFeatureCode,
     DWORD ndStartAddress,
     DWORD ndEndAddress                      
     )
{
     //如果存在小写字母 则全转大写
     HexStrToBigCase(szpFeatureCode);
     DWORD ndLenHexCode=strlen(szpFeatureCode);//0xAF
     BYTE *nbDataBuf=new BYTE[PAGESIZE+ndLenHexCode/2+2];//每次要读取的缓冲区大小
     DWORD ndByReadSize=0;//实际读取缓冲区大小
     for (DWORD ndCurAddr=ndStartAddress;ndCurAddr<ndEndAddress-ndLenHexCode/2;ndCurAddr=ndCurAddr+PAGESIZE)
     {
         ReadProcessMemory(hProcess,(LPVOID)ndCurAddr,(LPVOID)nbDataBuf,PAGESIZE+ndLenHexCode/2+2,&ndByReadSize);
         //nbDataBuf 逐字节比较数据
         for (DWORD i=0;i<PAGESIZE;i++)
         {
             char szpTempHex[256]="";
             BytesToHexStr(&nbDataBuf,ndLenHexCode/2,szpTempHex);
             if (HexStrCmp(szpFeatureCode,szpTempHex)!=FALSE)
             {
                 return ndCurAddr+i;//
             }
         }
     }

     return NULL;
}
0 0
原创粉丝点击