看过梁肇新新书中关于游戏修改器的朋友进来,帮个忙

gatesxie 2003-11-27 06:10:21
SuspendThread(pi.hThread);
for(lAdd = 4*1024*1024;lAdd < 2*1024*1024*1024;lAdd += (4*1024))
{
Ret = CompareMemony((void *)lAdd,iVal);
if(Ret == FALSE) lAdd += (1*1024*1024)-(4*1024);
}

ResumeThread(pi.hThread);

其中if(Ret == FALSE) lAdd += (1*1024*1024)-(4*1024);这个能起到什么作用呢?
我知道这是为了加快检索速度可是为什么要+上1*1024*1024)-(4*1024
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovenoend 2003-11-30
  • 打赏
  • 举报
回复
我想如果失败,就代表本段内存不可读写,这说明了游戏数据就不会在里面
,因为游戏数据需要不停的读写,因此可以跳过当前1M的内存。同样为了加快速度
对了,系统里某些内存就是不可读写的
lygfqy 2003-11-28
  • 打赏
  • 举报
回复
我想这应该是window页分配大小造成的
因为默认的分配都是以4k为单位的
timepalette 2003-11-28
  • 打赏
  • 举报
回复
相当于这样:::

SuspendThread(pi.hThread);
for(lAdd = 4*1024*1024; lAdd < 2*1024*1024*1024; /*这里空的*/)
{
Ret = CompareMemony((void *)lAdd,iVal);
if(Ret == FALSE) lAdd += (1*1024*1024);
if(Ret == TRUE) lAdd += 4*1024;
}
ResumeThread(pi.hThread);
gatesxie 2003-11-28
  • 打赏
  • 举报
回复
up一下
021850524 2003-11-28
  • 打赏
  • 举报
回复
哪本书啊?
gatesxie 2003-11-28
  • 打赏
  • 举报
回复
我想大家误会我的问题了,CompareMemony((void *)lAdd,iVal);的作用是调用ReadProcessMemory()4k,4k的读取内存如果读取当前4k失败就返回False可是如果失败就可以跳过当前1M的内存吗?
gatesxie 2003-11-27
  • 打赏
  • 举报
回复
谢谢你回答了我的问题,不过我想你是误会我的意思了,为什么要加上1044480这个数呢?
这一段内存可以跳过吗?
timepalette 2003-11-27
  • 打赏
  • 举报
回复
可读性。

无论怎么写编译器都会给它优化成一个立即数(1044480)。
索性就让它更可读一些。

如果程序写 lAdd += 1044480,你知道是怎么来的吗???

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧