mmc*_*ole 5 memory automation reverse-engineering
大多数游戏僵化的应用程序使用他们为特定版本的游戏客户端找到的一系列内存偏移来促进僵局.它们可能具有健康,x/y位置等的存储器偏移.每次游戏发布更新时,必须重新找到并更新机器人程序使用的各种信息的偏移量.
我有兴趣将Solitaire机器人写成宠物项目.如果你看这里,mmoglider(一个商业机器人)已经完成了这个作为他们的僵尸程序的演示(通常用于机器人魔兽世界):MMOGlider botting Vista Solitaire的YouTube视频.
准确定位各种有用的内存偏移的常用方法是什么?我怎样才能找到指向单人纸牌程序中"牌组"的记忆偏移量并使用它来确定堆叠中的牌?我从滑翔机家伙的经验中知道,一旦他们能够找到甲板本身的偏移量,他们就会说整个甲板上的每张牌值都在那里.
那么,是否有人有任何逆向工程经验和从现有程序中提取内存偏移?一旦你有了这些偏移量,如何能够从内存中的"Deck"结构中提取和读取值?
Spa*_*arr 10
通常,有两种方法可以完成这些任务.为简单起见,让我们考虑为玩家提供整数"健康"的游戏.
第一种是在程序运行时操作进程内存.这有助于找到已知值.当游戏中有100个生命值时,搜索内存空间100(最有可能是整数)并记录它找到的每个位置.然后,当您的健康状况更改为99时,交叉搜索这些相同的位置以查看哪些位置已正确更改.继续,直到缩小健康变量的精确位置.在大多数现代游戏中,您实际会发现动态分配的内存地址是结构的一部分.该结构将由程序中的指针引用,然后您必须在程序存储器中搜索可能是指向健康变量附近空间的指针的值,并在多个游戏运行中重复缩小范围,以建立指向所需数据的指针位置.这是经典PC和控制台游戏最有用的方法,特别是任何内存空间小且易于操作的游戏.
第二种方法要求您反汇编应用程序二进制文件(我使用IDA Pro),然后找到已知使用所需数据的函数.例如,假设您在屏幕上看到"Health:99".在二进制文件中搜索"Health:"字符串,然后找到对该字符串的引用(您可能会发现对sprintf或类似的调用)并查看这些相同函数引用的其他内存位置,这通常会引导您进入"健康状态"变量或包含它的结构.这是在更现代的游戏中最常见的方法,具有大量的存储空间和更高级的编程实践.
| 归档时间: | 
 | 
| 查看次数: | 5276 次 | 
| 最近记录: |