#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
DWORD banana;
LPDWORD BANANA;
BANANA=&banana;
unsigned int s=0,send=0x7FFFFFFF;
int UU;
BOOL B=0,i;
HWND apple;
DWORD C=PROCESS_ALL_ACCESS;
SIZE_T nSize;
LPVOID lpBuffer;
int database,databases;
unsigned int pp=0;
lpBuffer=&database;
PDWORD D=&C;
void* handle;
DWORD lpBaseAddress,resourceb[20],resourcee[20],pointer=0,mask=0,lmask=0;
//此行以下示code---------------------------------------------------------------
printf("PID:\n");
scanf("%u",&banana);
handle=OpenProcess(PROCESS_ALL_ACCESS,B,banana);
if(handle==0)
{
printf("WRONG\n");
goto exi;}
printf("This process HANDLE:%u\n",handle);
lpBaseAddress=0X00000000;
printf("要搜尋的數(十進位)\n");
scanf("%d",&UU);
while(s<send)
{
i=ReadProcessMemory(handle,(void*)lpBaseAddress,lpBuffer,4,0) ;
if(i!=0)
{
if(database==UU)
{pp++;databases=pp;
}
printf("值:%d---符合:%u\n",database,pp);
}
else
{mask=GetLastError();
printf("ERROR PLACE:%X...ERROR NUMBER:%u\n",lpBaseAddress,mask);}
s=s+4;
lpBaseAddress+=4;
}
printf("%u\n",pp);
exi: system("pause");
}
---------------------------------------------------------------------------------------------------
以上示我的code 在dev-c++編譯
我的用意是想要寫出像cheat engine 一樣的記憶體搜尋&修改工具
1.但示~~我發現在使用者模式的那2GB的值,讀出來有一部份可以,而另外一部分會一直示ERROR
用GERLASTERROR看過後,ERRORNUMBER示299,參考WINDOWS錯誤代碼大全
但是他寫得很籠統~~~~[Only part of a ReadProcessMemory or WriteProcessMemory request was completed.]就這樣
我一直搞不懂到底是哪裡寫錯了~~有沒有人可以指點我
還是那些為址本來就不可讀??????
2.就算部分的值可以讀出來,他的速度也慢到嚇人
(我知道PRINTF很花時間,但示就算拿掉全部的PRINTF,2GB搜一變還是要至少15分鐘),總之他的速度慢到嚇人,有沒有可以加快的方法,如果你要跟我說用組語!!,那可不可以寫給我看~~誠徵善心人士~~~
[课程]FART 脱壳王!加量不加价!FART作者讲授!