读书人

软件批改内存的实现原理

发布时间: 2012-07-20 10:38:30 作者: rapoo

软件修改内存的实现原理
类似于金山游侠那样的游戏修改软件可以修改内存中的数据来动作单击游戏中的人物属性,如血液,攻击力,子弹数量等。
一:这样的软件是用什么语言编写的啊?
二:用c++,或MFC怎样写可以实现这样的功能啊,具体的源代码写一下啊?
三:此软件好像只能修改单击游戏的游戏属性,对于网络游戏他为什么不能修改呢?
四:网络游戏比如说一年前的CF中很多G都能实现子弹无限,零秒还子弹,子弹加速,人物飞天,等变态的功能,这些功 能G是如何实现的啊?现在为什么没这样的G啦啊?
五:谁类似于金山游侠这样修改内存数据,但比金山游侠功能更强大的软件介绍一个,或者发到邮箱里 :1097676950@qq.com谁可以发一个另外奖赏100分!
六:金山游戏中搜索然然后修该的数据是不是都是电脑RAM正在处于运行中的数据啊,如果这样我电脑在只有运行比如血战缅甸这个单机游戏时,用金山游侠搜索我游戏上的子弹数值时,为什么0—2000中的任意一个数字经常在内存中搜索到好几百个呢?
谢谢帮助啊?我最多只能给100分啊,回答得很我定额外追加他数百份!

[解决办法]
ReadProcessMemory / WriteProcessMemory
[解决办法]
建议楼主上网下个郁金香视频,学习一个关于QQ连连看外挂的制作方法,当然这只是入门的而已,但可以给你个大概的了解.下面是读的

HWND gamehwnd=::FindWindow(NULL,"QQ游戏 - 连连看角色版");

if(gamehwnd==NULL)
{
AfxMessageBox("请打开QQ游戏 - 连连看角色版");
return;
}

DWORD processid;
::GetWindowThreadProcessId(gamehwnd,&processid);
HANDLE processH;
processH=::OpenProcess(PROCESS_ALL_ACCESS,false,processid);
//读指定进程 内存数据
DWORD byread;
byte chessdata[11][19]; //存放字节的数组
LPCVOID pbase=(LPCVOID)0x0012A480; //棋盘数据基址
LPVOID nbuffer=(LPVOID)&chessdata; //存放棋盘数据
::ReadProcessMemory(processH,pbase,nbuffer,11*19,&byread);

[解决办法]
单机游戏都是某些内存数据等,所以ReadProcessMemory/WriteProcessMemory等来修改
而联网游戏,数据都在服务器,你不能修改服务器上的数据。
[解决办法]
一,c/c++都可以写得出来
二,开玩笑,具体的源代码至少都有几百行,具体游戏具体分析,你还要找到数据放到内存的具体位置,是否能够修改等等哪可能在这写得出来。
三,涉及到内存的数据,网络的他放在服务器里或者服务器的数据库里,你怎么可能修改得到!
四,cf的那些变态功能是从服务器上发来的包,通过抓取,然后分析,然后发回服务器通过达到开G功能,但是后面CF知道了,就在服务器限制或者判断发回来的包是否有效包,当然,透视另算!
五,你可以放弃!除非你在baidu上搜。
六,废话,0-2000内的数字当然会有好多个啊,你以为你整个程序就只有个子弹数啊!比如距离等等!本身就是个常数,当然可以代表任何东西,你要找子弹数,如果实在不会怎么找,教你一个很笨的方法,先开一枪,就只剩1999,就寻找只有这个数的内存,然后再开一枪1998,再寻找,就一直这么找到最后一个内存·
[解决办法]
LZ 你这是本地游戏的内存修改. 比如单机游戏.我实现过.把游戏里的数值锁定.比如锁血. 换枪.

主要就WriteProcessMemory
配合CE 或金山啥的找到内存地址. 如果地址是变化的,那更麻烦.
[解决办法]
想用外挂呀, CE 比金山游侠好用,百度下载一个,CE 自带教程。

读书人网 >VC/MFC

热点推荐