游戏内存修改原理

本人在用游戏修改工具进行游戏修改的时候,往往遇到一些常见的问题,现在把我遇到的情况向各位反映一下,并给出我的一些解决办法:  
   
  一般修改器的修改原理:  
  使用   OpenProcess   等类似的   api   以适当的权限打开游戏进程,找出数据  
  段范围,然后使用   ReadProcessMemory   和   WriteProcessMemory   对该进程的地址范围进行扫描和修改,并以类似定时器的的方法实现内存  
  内容的锁定。  
   
   
  1。浮点数的修改  
  现象:在对浮点数的修改时常会发现无法锁定,或者锁定之后其数值反复来回  
            跳跃等于没有修改的现象。经常发生在即时战略的游戏上面,比如  
          《横扫千军》,《红色警报》等。  
  原因推断:可能是修改器对浮点数的修改支持不好。  
  尝试解决:更换修改工具。  
   
   
  2。数值长度判断不正确  
  现象:有些数值往往找到并且锁定了,但是修改后好像根本没有反映。  
  原因推断:对数值长度判断失误,有的模拟器   rom,比如   nes(fc)自身  
                      机能的原因往往一些数值只有8位长度,可是我们在修改时将  
      其当作16或者32位数来修改,结果就是无法真正修改成功。  
      比如   一些   fc   rom   的修改。  
  尝试解决:正确选择数值长度并在拿不准时反复尝试。  
   
   
  3。没有具体数值的表示  
  现象:像   街头霸王   之类的格斗游戏,人物的体力是以血槽来表示而不是  
              以具体数字来表示,这就造成好像无从下手的感觉。  
  尝试解决:某些修改器具有模糊修改的功能,可以先全局扫描然后动态  
                      的依据某一条件来缩小范围,最终找到真正的数值。比如修  
      改器   GameExpert(GE)    
   
   
  4。一些模拟器环境中的值无法修改  
  现象:在一些   fc,md,gba   等的一些模拟器环境中的数值往往找不到(甚  
              至使用模糊搜索法),或是找到之后修改没有反映。比如   gba  
              口袋妖怪   绿宝石   中文dump版。  
  原因推断:可能是模拟器使用了特殊的实现方法,造成对主存和虚存的特殊  
                      使用造成的。  
  尝试解决:a.使用程序自带的金手指修改  
                      b.使用模拟器自带的反汇编器或修改器修改  
      c.使用专用修改器修改  
      d.更换其他模拟器进行模拟  
       
   
  5。有一些数值普通方法根本无法修改  
  现象及原因推断:像一些游戏自身进行了特殊处理,拒绝普通的来自外部  
                                  的强行修改,比如   魔兽争霸3   ,除非通过动态调试搞清  
  楚保护机制,否则修改是无效的。  
  尝试解决:a.使用游戏中自带的作弊码以达到间接修改的目的  
                      b.使用专用修改器进行修改  
       
   
  6。网络游戏的修改  
  现象及原因推断:对于一些网络游戏,他的游戏数值是存放在网络的服务器  
  上的,在本地修改根本行不通,这是由网络游戏的性质造  
  成的。  
  尝试解决:a.使用外挂修改  
                      b.入侵服务器修改  
      c.用网络嗅包工具分析数据包内容,然后非法发送进行修改。  
   
   
  以上是本人在修改时遇到的一些问题和尝试解决方法,希望各位能讲讲  
  自己在修改过程中遇到的其他问题或更好的处理方法以便共同学习,多谢了。

你可能感兴趣的:(编程相关其它知识)