《金山游侠》搜索特点:
1、快——估计用ASM编的
2、模糊搜索——首次用?初始化数据,以后用+,-,=,>,<分析变化的数据以下是我对模糊搜索过程的理解,大家还有什么观点,请回帖。
1、初始化数据(非常快):找到数据区获得大小 ,然后申请同样大小的新内存,把内容全部复制到这个新内存中。
2、数据比较:第一次比较,建立一个地址表,把符合条件的数据记录下来,
             从第二次比较开始,从地址表中去掉不符条件的地址,直至用户终止比较

解决方案 »

  1.   

    FPE同样也有模糊搜索,但初始化数据是将数据区内容暂时存为临时文件,由于文件处理显然比内存复制慢很多,使得FPE在模糊搜索时的准确性(被测数据定时动态刷新时)得不到保障,而且第2次数据比较,同样要调用文件,相比之下,游侠的初始化方法就优越得多.另外:"算法也很重要,如采用数叉树技术等",我觉得不是太重要,因为汇编中可用1条指令就实现了.采用算法的指令执行周期可能比一条循环比较指令的周期还要长.
      

  2.   

    没有太多算法的技巧,是对游戏内存的理解产生的技巧:1,所有的PE程序,使用的内存都是有限的,用VC这样的工具开发出来的程序,数据区都是在特定的段内,而且是动态数据区内的数据才是保存与游戏角色相关属性的区域。2,以前的老的搜索算法,都是,从地址,400000向上顺序增加,有很多内存段是非法的。而游侠使用的内存段浏览方式,可用内存才搜索,也就降低了搜索目标。3,32位程序是DWORD对齐的,这样内存地址的递增可以+4的方式进行,快4倍。4,现在的CPU都太强悍了。逐一比较不是问题。只要基数小很多,就几乎是零延迟。5,对核心的比较算法,用汇编指令优化是可以提高很多的。
      

  3.   

    yuandj(袁德俊)  说得很有道理 !
    up。
      

  4.   

    《金山游侠》随随便便地访问操控属于其他程序的内存
    Window提供有相应的API函数.
    VirtualXXXX 系列.