1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| DWORD MappingFile(LPSTR lpcFile){ HANDLE hFile; HANDLE hMapFile; LPVOID lpAddr; hFile = CreateFileA( lpcFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hFile == INVALID_HANDLE_VALUE) { printf("CreateFile 失败:%lx \n",GetLastError()); return 0; } hMapFile = CreateFileMappingA( hFile, NULL, PAGE_READWRITE, 0, 0, NULL); if (hMapFile == NULL) { printf("CreateFileMapping 失败:%lx \n",GetLastError()); CloseHandle(hFile); return 0; } lpAddr = MapViewOfFile( hMapFile, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); if (lpAddr == NULL) { printf("MapViewOfFile 失败:%lx \n",GetLastError()); CloseHandle(hMapFile); CloseHandle(hFile); return 0; } DWORD dwTest1 = *(PDWORD) lpAddr; DWORD dwTest2 = *((PDWORD)lpAddr+0x188fc); printf("%lx %lx\n",dwTest1,dwTest2);
*(PDWORD)lpAddr = 0x12345678; printf("写入: %lx\n",*(PDWORD)lpAddr); FlushViewOfFile(lpAddr,4);
UnmapViewOfFile(lpAddr); CloseHandle(hMapFile); CloseHandle(hFile);
return 0; }
|