他的例子有一个函数
BOOL CompareAPage(DWORD dwBaseAddr, short dwValue)
{
// 读取1页内存
BYTE arBytes[4096];
if(!::ReadProcessMemory(g_hProcess, (LPVOID)dwBaseAddr, arBytes, 4096, NULL))
return FALSE; // 此页不可读 // 在这1页内存中查找
short* pdw;
for(int i=0; i<(int)4*1024 - 3; i++) {
pdw = (short*)&arBytes[i];
if(pdw[0] == dwValue) // 等于要查找的值?
{
if(g_nListCnt >= 1024)
return FALSE;
// 添加到全局变量中
g_arList[g_nListCnt++] = dwBaseAddr + i;
}
} return TRUE;
}红色字体for循环条件中i<(int)4*1024 - 3,为什么要减3了,请大侠帮忙!!!
BOOL CompareAPage(DWORD dwBaseAddr, short dwValue)
{
// 读取1页内存
BYTE arBytes[4096];
if(!::ReadProcessMemory(g_hProcess, (LPVOID)dwBaseAddr, arBytes, 4096, NULL))
return FALSE; // 此页不可读 // 在这1页内存中查找
short* pdw;
for(int i=0; i<(int)4*1024 - 3; i++) {
pdw = (short*)&arBytes[i];
if(pdw[0] == dwValue) // 等于要查找的值?
{
if(g_nListCnt >= 1024)
return FALSE;
// 添加到全局变量中
g_arList[g_nListCnt++] = dwBaseAddr + i;
}
} return TRUE;
}红色字体for循环条件中i<(int)4*1024 - 3,为什么要减3了,请大侠帮忙!!!
BOOL CompareAPage(DWORD dwBaseAddr, short dwValue)
{
// 读取1页内存
BYTE arBytes[4096];
if(!::ReadProcessMemory(g_hProcess, (LPVOID)dwBaseAddr, arBytes, 4096, NULL))
return FALSE; // 此页不可读 // 在这1页内存中查找
short* pdw;
for(int i=0; i<(int)4*1024 - 3; i++) {
pdw = (short*)&arBytes[i];
if(pdw[0] == dwValue) // 等于要查找的值?
{
if(g_nListCnt >= 1024)
return FALSE;
// 添加到全局变量中
g_arList[g_nListCnt++] = dwBaseAddr + i;
}
} return TRUE;
}
BOOL CompareAPage(DWORD dwBaseAddr, short dwValue)
{
// 读取1页内存
BYTE arBytes[4096];
if(!::ReadProcessMemory(g_hProcess, (LPVOID)dwBaseAddr, arBytes, 4096, NULL))
return FALSE; // 此页不可读 // 在这1页内存中查找
short* pdw;
for(int i=0; i<(int)4*1024 - 3; i++)
{
pdw = (short*)&arBytes[i];
if(pdw[0] == dwValue) // 等于要查找的值?
{
if(g_nListCnt >= 1024)
return FALSE;
// 添加到全局变量中
g_arList[g_nListCnt++] = dwBaseAddr + i;
}
} return TRUE;
}