看流星社区

 找回密码
 注册账号
查看: 2724|回复: 4

求CE原理,打算自己写个类似搜索工具.针对关游戏的

[复制链接]

该用户从未签到

发表于 2011-4-4 10:05:26 | 显示全部楼层 |阅读模式
有大虾知道ce的原理么,主要是what write from this address的原理.写这个东西的目的是因为世面的游戏很多在用ce的时候都会自动关闭.

该用户从未签到

发表于 2011-4-4 10:05:34 | 显示全部楼层
原理嘛
先取得目标的内存最大值。比如187M
然后建立187*1024个bety的数组
然后把每个字节。从400000开始
for i:=1 to 187*1024
do
mem[ i ]:=dumem(&40000+i)
end;
这样就把内存镜像下来了
然后做加减重复查询的就是再建立个另外一个数组
for i:=1 to 187*1024
do
mem1[ i ]:=dumem(&40000+i)
end;
然后做比较。比如没有改变的查询
先清除得数数组jieguo[ i ]
for i:=1 to 187*1024
do
if mem1[ i ]:=mem[ i ] then jieguo[ i ]=mem1[ i ]
end;
得到的结果就是
400000+i就是结果的内存地址
jieguo[ i ]就是当前内存的值

当然这只是我的感觉啊。按这样做肯定也能做到。只是时间和效率上未必比人家做的好

而代码查找。 比如find out who change this mem
这样的代码就不知道怎么弄了。可能是把固定段的内存地址复制出来然后编译成汇编。再根据汇编得到指令段。再根据指令段来源。等等等。

该用户从未签到

发表于 2011-4-4 10:05:41 | 显示全部楼层
前面的分析很不错,至于找指令的部分,那性质是完全不同的,我估计应该是用调试中断吧,和OD或SI之类的调试工具的原理差不多,我的理解是,监视对内存的读写操作,如果目标地址是指定的地址,就把指令记下来。但怎样监视,这个相对要复杂些,具体原理我也没分析过。一直希望有时间的话可以好好看看CE的源代码,这样一些疑问就迎刃而解了,不过就是一直没有这样的时间,呵呵。

该用户从未签到

发表于 2011-4-4 10:05:49 | 显示全部楼层
find out who change this mem
不是断点 就是内存属性  

for i:=1 to 187*1024
do
mem[ i ]:=dumem(&40000+i)
end;  我用代码 类似语句搜索内存时候总会几秒后程序自动退出 -.- 大家有遇到过

该用户从未签到

发表于 2011-4-4 10:05:56 | 显示全部楼层
187万次循环不设sleep不死才怪哈
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-15 16:36

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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