鱼C论坛

 找回密码
 立即注册
查看: 6299|回复: 13

[技术交流] 游戏内存修改器

[复制链接]
发表于 2011-11-16 15:12:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <Windows.h>
#include <TlHelp32.h> //声明快照函数的头文件
#include <stdio.h>
BOOL FindFirst(DWORD dwValue); //在目标进程空间中进行第一次搜索
BOOL FindNext(DWORD dwValue); //在目标进程空间进行第二三四次搜索
DWORD g_arList[1024]; //地址列表
int g_nListCnt; //有效地址的个数
HANDLE g_hProcess; //目标进程句柄
BOOL CompareAPage(DWORD dwBaseAddr,DWORD dwValue) //比较目标进程内存中一页大小的内存
{
//读取一页内存
BYTE arBytes[4096]; 
if(!ReadProcessMemory(g_hProcess,(LPVOID)dwBaseAddr,arBytes,4096,NULL));
return FALSE;//此页不可读
//在这一页内存中查找
DWORD* pdw;
for (int i=0;i<(int)4*1024-3;i++)
{
pdw=(DWORD*)&arBytes[i];
if (pdw[0]==dwValue)//等于要查找的值?
{
if(g_nListCnt>=1024)
return false;
g_arList[g_nListCnt++]=dwBaseAddr+i;//添加到全局变量中
}
}
return true;
}
BOOL FindFirst(DWORD dwValue)
{
const DWORD dwOneGB=1024*1024*1024;//1GB
const DWORD dwOnePage=4*1024;//4KB
if(g_hProcess==NULL)
return false;
//查看操作系统类型,以决定开始地址
DWORD dwBase;
OSVERSIONINFO vi={sizeof(vi)};
GetVersionEx(&vi);
if (vi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
dwBase=4*1024*1024;//windows98系列,4MB
}
else
dwBase=640*1024;//windows NT系列,64KB
//在开始地址到2GB的地址空间进行查找
for (;dwBase<2*dwOneGB;dwBase+=dwOnePage)
{
//比较一页大小的内存
CompareAPage(dwBase,dwValue);
}
return TRUE;
}
void ShowList()
{
for (int i=0;i<g_nListCnt;i++)
{
printf("%081x\n",g_arList[i]);
}
}
BOOL FindNext(DWORD dwValue)
{
//保存m_arList数组中有效地址的个数,初始化新的m_nListCnt值
int nOrgCnt=g_nListCnt;
g_nListCnt=0;
//在m_arList数组记录的地址处查找
BOOL bRet=FALSE;//假设失败
DWORD dwReadValue;
for (int i=0;i<nOrgCnt;i++)
{
if (ReadProcessMemory(g_hProcess,(LPVOID)g_arList[i],&dwReadValue,sizeof(DWORD),NULL))
{
if (dwReadValue==dwValue)
{
g_arList[g_nListCnt++]=g_arList[i];
bRet=TRUE;
}
}
}
return bRet;
}
BOOL WriteMemory(DWORD dwAddr,DWORD dwValue)
{
return WriteProcessMemory(g_hProcess,(LPVOID)dwAddr,&dwValue,sizeof(DWORD),NULL);
}
int main(int argc,char* argv[])
{
char szFileName[]="";//这里是修改内存的程序的名字
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
::CreateProcess(NULL,szFileName,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
//关闭线程句柄,既然我们不需要它
::CloseHandle(pi.hThread);
g_hProcess=pi.hProcess;
int iVal;//输入要修改的值
printf("Input val=");
scanf("%d",&iVal);
FindFirst(iVal);//进行第一次查找
ShowList();//打印出搜索的结果
while (g_nListCnt>1)
{
printf("Input val=");
scanf("%d",&iVal);//进行下次搜索
FindNext(iVal);
ShowList();//显示搜索结果
}
printf("New value=");//取得新值
scanf("%d",&iVal);
if(WriteMemory(g_arList[0],iVal))//写入新值
printf("Write data sucess\n");
CloseHandle(g_hProcess);
return 0;
}
主要代码已注释,在VC++6.0下编译通过,在Visual studio2005下编译有错,主要是Unicode和Ascii的关系转换问题。

评分

参与人数 1荣誉 +6 鱼币 +5 收起 理由
小甲鱼 + 6 + 5 GOOD, 刚想发。。。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-16 16:20:17 | 显示全部楼层
在Visual studio2005下编译有错

可以关闭Unicode的选项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-16 16:49:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-18 09:03:06 | 显示全部楼层
这个很不错啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-18 10:11:18 | 显示全部楼层
CreateProcess(NULL,szFileName,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);  CreatProcess()里竟然有这么多参数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-11-20 15:12:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-21 15:17:40 | 显示全部楼层
:$ 好啊 我留下了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-22 16:49:06 | 显示全部楼层
我发现这个win 32编程, 编程的字母 有的是全是大小,而有的是首个字母大小,看起来不舒服。 而不像C++编程字母基本是小写的,除了宏定义是大写。这样看起来很舒服的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-22 17:11:50 | 显示全部楼层
seuer126 发表于 2011-11-22 16:49
我发现这个win 32编程, 编程的字母 有的是全是大小,而有的是首个字母大小,看起来不舒服。 而不像C++编程 ...

哪个大写,哪个小写其实是很有讲究的,你接触多了就会习惯了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-23 09:01:19 | 显示全部楼层
憔悴心只为你 发表于 2011-11-22 17:11
哪个大写,哪个小写其实是很有讲究的,你接触多了就会习惯了

恩,小弟明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-12-18 11:39:28 | 显示全部楼层
赞一个。。好东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-18 12:06:01 | 显示全部楼层
不错啊,好东西。、。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 14:28:21 | 显示全部楼层
不地道,竟然还让改错,%081X是什么鬼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 14:52:22 | 显示全部楼层
支持大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 07:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表