内存管理例程错误
Memory management routine error
我试图使用FP例程,但它不起作用…为什么?这是我的代码:
int output = FindPattern(0x0042A000, 0x2000, "x68x00x00x00x00xFFx76x08x89x46x44", "x????xxxxxx");
if (output > -1) {
ReadProcessMemory(hProcHandle, (PVOID)address, &value2, sizeof(value2), NULL);
}
Function:
int FindPattern(int start_offset, int size, const char * pattern, const char * mask)
{
int pos = 0;
for (int retAddress = start_offset; retAddress < start_offset + size; retAddress++)
{
if (*(const char*)retAddress == pattern[pos] || mask[pos] == '?')
{
if (mask[pos+1] == ' ')
return retAddress+1;
pos++;
}
else
pos = 0;
}
return -1;
}
我也试过:
DWORD output = FindPattern(hProcHandle, "x68x00x00x00x00xFFx76x08x89x46x44", "x????xxxxxx");
bool VerifyAddress(HANDLE hwnd, DWORD dwAddress, char *bMask, char *szMask )
{
PBYTE *pTemp = { 0 };
for ( int i = 0; *szMask; ++szMask, ++bMask, ++i )
{
if ( !ReadProcessMemory( hwnd, reinterpret_cast<LPCVOID>(dwAddress + i), &pTemp, sizeof(pTemp), 0 ) ){
return false;
}
if ( *szMask == 'x' && (char)pTemp != *bMask){
return false;
}
}
return true;
}
DWORD FindPattern(HANDLE hwnd, char* bMask, char *szMask )
{
for ( DWORD dwCurrentAddress = 0x4FFFFFF; dwCurrentAddress < 0x7FFFFFF; dwCurrentAddress++ ){
if ( VerifyAddress( hwnd, dwCurrentAddress, bMask, szMask )) {
return dwCurrentAddress;
}
}
但是这些代码总是
Program.exe中0x01034BB1的未处理异常:0xC0000005: Access违规读取位置0x02343DA2.
代码:
int output = FindPattern(0x0042A000, 0x2000,
表明您正在使用进程本地地址0x0042A000,因此您正在迭代进程中的一些随机地址,这些地址为未定义行为并以异常结束。
ReadProcessMemory将指定的内存从其他进程复制到您的进程,并将其存储在您在此函数调用中提供的内存缓冲区中,作为lpBuffer参数。
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- c++类声明时,相同的例程,不同的成员变量类型
- C++为线程工作动态地分割例程
- 子例程,不使用 pow,并带有参数和返回
- 直接在RcppArmadillo中调用LAPACK例程
- 如何将C++子例程链接到 x86 程序集程序?
- PX 转换例程编译问题
- 成功完成TLS握手后,服务器关闭时出现错误的SSL例程:SSL3_GET_RECORD:错误的版本号
- 只允许授权代码调用库中的例程
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- 调用子例程时类型不匹配
- 如何在新的 C++17 并行算法中管理线程?
- C++ 提升示例:创建和管理线程(编译错误)
- 我是使用插入例程(pin)得到了错误的ebp,还是这里遗漏了什么
- Pthread_create()错误的启动例程参数传递
- 如果在例程中,Gdb 会在错误时中断
- KD树构建例程中的讨厌错误
- 内存管理例程错误
- 如何在Objective C模块中使用c++内存管理例程
- CUDA:使用 CUSPARSE csrmv() 例程的映射错误