Cheat Engine用来查找及修改进程内存的,比如游戏里的人物血量,不知道有没有熟悉的。最近下载了Cheat Engine5.6源代码,这里有个下载地址
http://www.vdisk.cn/down/index/5732762A4311
我想参考着自己写个类似的并集成了自己一些功能的软件,打开一看竟然是一个Delphi工程,可我学的是VC/VB。一千多个文件我都不知道从哪里看起,搞个Delphi7安装了还是发现自己没能力分析。不得以到Delphi区来求助各位。
我最感兴趣的是它是如何做到高效的搜索进程内存空间的,谁能帮我把这部分功能的流程大略的解释一下。它使用了哪些关键的API。我自己仍然在缓慢的分析,但如果那位有空的能帮忙分析下那真是太感谢了。

解决方案 »

  1.   

    高效搜索……这都是算法相关的,和API没半毛钱关系……
      

  2.   

    Delphi的源代码不是很难读啊, 用点心就读懂了.
      

  3.   

    怎么和API没关系呢,API毕竟是最终执行的地方,有什么API才能有什么算法。我所知道能用于搜索内存的API就只有ReadProcessMemory,所以不知道它有没有用什么别的意想不到的API。而我发现Cheat Engine搜索内存的效率很高就想知道它有没有动用了别的API,但是分析Delphi对于我实在有很大困难,如果能确定它用了哪些API当然自己也就能罗列一个合适的算法了。
      

  4.   

    关键是我连Delphi语法都不懂,也不知道它都是用什么库,哪些是关键字,无法知道函数、类是自定义的还是用的库里的。
    看样子只能多学门语言了,反正多学门语言也没什么坏处。
    但是我确实迫切需要参考Cheat Engine的技术,我得尽快把它移植到自己的项目里去
      

  5.   

    ReadProcessMemory也叫算法?游戏修改不用ReadProcessMemory你试试……Orz
    函数是函数,算法是算法,游戏定位算法,是你搜索整个进程的内存空间的过程,其实和算法书上讨论的顺序查找中序查找差不多,里面几乎不会用到Windows下的API,你自己看看吧,计算机还没有那么智能,给你一个API让你实现快速查找……
      

  6.   

    要的就是扫描整个进程空间,这程序并'不是'用来给'特定'游戏定位内存位置的。它可以打开任意进程搜索进程内存值,然后依值、值的变化趋势等来决定哪些区域是自己需要的。Cheat Engine只能手动一步步来由人工确定感兴趣区域,而我想把这些用机器来感知。但我发现自己用ReadProcessMemory来读取进程空间效率似乎太低了,而且经常碰到有些区域读取不了,也不知道是为什么。
      

  7.   

    都说了,机器没有那么智能……人工确定已经不错了
    如果你说的是修改器,一个修改器只能改特定内存的数据,偏移量都让你硬编码了
    自动化CE至少就目前的技术条件,不可能,你怎么知道这个值是不是你需要的?这还是需要人来判断,机器永远没法达到这一步
    举个简单的例子,查找游戏数据,你得有据可循,你通过游戏界面,知道角色攻击力100点,你可以去CE里面搜,CE怎么知道角色攻击力100点?谁能告诉他?第一步的定位都不可能,连范围都确定不了,怎么指望用机器感知呢?
      

  8.   

    有电脑有算法就有机器判断。
    如果用原版的CE搜索一个数据,点几下搜索就成。但是如果要搜索这个数据的指针,如果这个数据还是某个结构体的成员,那么搜索起来的繁琐程度简直不是人干的活。所以才要想办法要开发一直自己的类似CE的工具