12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
三国霸业 战车-珍宝-觉醒-攻城掠地SF-全新玩法 免费玩新区 攻城掠地私服 进入游戏
手游私服盒子 各类免费游戏 0.1折送海量资源 各类手游私服 进入游戏
皇家MU2 《奇迹 2:传奇》韩国网禅公司《奇迹》正统续作。 3D锁视角Mmrpg 暗黑3+传奇+流放之路+奇迹 进入游戏
查看: 295|回复: 0

[原创] CE基础-CALL找法:帝国时代2之转化CALL

[复制链接]
发表于 2021-5-7 19:54:09 | 显示全部楼层 |阅读模式
导言
  直入主题,通过找转化CALL谈一些找CALL本领@永恒岁月


工具预备
[Asm] 纯文本检察 复制代码内存工具:CE7.0游戏本体:AOE II:HD过程分析
  分两步,第一步根据游戏内某动作举行逻辑分析,第二步根据逻辑分析举行CE分析
  # 逻辑分析
    任务:主要是根据游戏动作与CALL的相干性(这一点可以在CE中的Ultimap功能展现),通过拆分游戏动作步骤而找出直接或间接相干数据,从而可以利用CE举行分析
    对AOE II:HD的逻辑分析
      首先,在游戏中执行僧侣施放转化这个技能的完整动作,通过分析,可以得出一个相近的逻辑过程:选中某僧侣 -> 选中转化技能 -> 选中某敌人 -> 查抄转化条件 -> 吟唱过程 -> 吟唱(转化)完成 -> 信念值镌汰
      其次,对这些步骤举行分析,找出蕴含的直接或间接相干的数据,好比选中某敌人,可能选中ID(某敌人数据结构的标识)这个数据会改变,也可能选中地址(某敌人数据结构的基址)也会改变,甚至选中/未选中这个标识(某敌人数据结构的状态)也会改变
      最后,开始对目标CALL举行正向(找前一个CALL)或逆向(找后一个CALL)的筛选(见总结更详细分析原因),这里我们找的是转化CALL(即要对转化完成过程举行分析),就可以正向对吟唱过程举行分析,或者逆向对信念值镌汰过程举行分
析,固然也可以直接对 转化完成过程举行分析,这里对转化完成过程分析并假设敌我存在某种标识来决定转化完成,敌人可以参加我方,以是只需要根据这种标识变化,进程CE分析并找到关键代码
  # CE分析
    任务:主要是根据逻辑分析阶段找出的相干数据,通过CE工具来查找并找出关键代码,再通过关键代码找出关键CALL
    对AOE II:HD的CE分析
      第一步,通过查找某敌人血量,来找到某敌人结构的动态内存区域,这里血量偏移是esi+30,esi即为某敌人结构的基址 - 附加阐明:这里所说的基址是相对于动态内存块的开始地址,一样寻常是相对于结构而言,好比人物结构,它包含+4处的ID,+30处的血量等


      

      第二步,通过执行转化动作并监视某敌人结构的动态内存区域,可以看到esi+8处8字节数据发生改变,再找到另一敌人结构的动态内存区域,把esi+8处的8字节数据复制到被转化敌人结构的esi+8处,可以发现esi+8即为某敌人结构的敌我标识

      


      

      

     第三步,通过执行转化动作并查找什么改变了esi+8处的值,可以得到关键代码 - 附加阐明:我只对esi+0c处举行了分析,发现结果符合,如有兴趣,可以对esi+08举行分析

      

      第四步,现在开始使用“向上跟踪法”(见我另一篇贴:
向上跟踪法)找关键赋值代码,可以得到关键数据来源这个CALL(函数)的第一个参数

      

     这里esp(即栈顶)往低地址移动共5个位+1个位(eip),而esp+18表示第7个位,以是可以获得此CALL存在一个传入参数

      

      第五步,知道关键数据是CALL前push的参数后,我们返回这个CALL,来到调用CALL的层,可以看到CALL前明显的push,对它举行下断点分析,可以分别得到参数寄义,这时转化CALL初步找到 - 附加阐明:这里ecx通过与找edi来源时一起分析

      

      第六步,转化CALL找到了,但是这还只是程序的代码段,而我们需要把它变成我们的代码段并对它举行一些操控,因此这里我们需要分析参数的指针来源 - 附加阐明:这里主要对ecx指针来源举行分析,其它参数稳定
      通过对ecx找指针(直接搜索ecx值并选择第1个找什么读取了它),可以发现代码 mov eax,[ecx+edx*4] 中的edx的值类似人物ID,因此我们需要继续找选择ID指针(怎么找?每次选择一个敌人施法技能,选择ID就会改变)

      
      

      第七步,如许我们就可以控制人物的敌我标识了,脚本如下[Asm] 纯文本检察 复制代码[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code here// 首先得到目标ID指针push edipush ebxmov edi,["AoK HD.exe"+527378]mov edi,[edi+70]mov edi,[edi+34]// 其次得到基址指针mov ebx,["AoK HD.exe"+5264DC]mov ebx,[ebx+edi*4]// 最后赋给ecxmov ecx,ebxmov eax,[esi+08]mov eax,[eax+0C]mov edx,[edx+4C]pop ebxpop edipush eaxcall edxjmp "AoK HD.exe"+1413Boriginalcode://mov eax,[esi+08]//mov eax,[eax+0C]jmp newmemexit:jmp returnhere"AoK HD.exe"+1412F:jmp newmemnopreturnhere:  [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"AoK HD.exe"+1412F:mov eax,[esi+08]mov eax,[eax+0C]mov edx,[edx+4C]push eaxcall edx//Alt: db 8B 46 08 8B 40 0C

总结
# 对找CALL的理解
  找CALL的本质还是归根于游戏动作与CALL的相干性,这里前面已经说过,CE中Ultimap就是一个典型,但Ultimap功能有限很多游戏不能附加,以是还是得回归CE工具的本质-数据分析
因此,我们在游戏动作与CALL之间,通过数据分析来毗连它们。这里分析游戏中转化技能得施放动作,可以得到相干数据,接着通过分析相干数据,可以得到关键CALL
# 对找CALL的方法总结
  方法无非两种,一种是找直接变化的数据,这个类似找什么写入(我称之为主相干);另一种是找间接访问的数据,类似找什么访问(我称之为副相干)
  我们对逻辑过程:[选中某僧侣 -> 选中转化技能 -> 选中某敌人 -> 查抄转化条件 -> 吟唱过程 -> 吟唱(转化)完成 -> 信念值镌汰]举行分析
     1. 主相干举例
       过程:此篇找转化CALL就是如此,先找敌我标识,然后得到关键代码,接着得到关键CALL,最后转化为可控制脚本
       阐明:这里转化结束会修改敌我标识
     2. 副相干举例
       过程:先找到信念值数据,然后在信念值未满的情况,使用技能,这时我们可以得到查抄条件的关键代码,继续顺藤摸瓜,可以找到其他查抄条件:科技树查抄、英雄查抄、转化查抄等
       阐明:这里查抄条件的关键代码会访问信念值,只有当信念值 >= 100才气成功

# 对正推与逆推的筛选的阐明
  正推:一样寻常是分析所找CALL的步骤的前一步骤,固然实在无奈再前一步骤也行
  逆推:一样寻常是分析所找CALL的步骤的后一步骤,固然实在无奈再后一步骤大概
  实用情况:正推、逆推都是在当对所找CALL无头绪时,对前后步骤分析,可以向所找CALL逼近,而且对无参CALL(全局参数传入情况)特别有效,且对无知有参CALL(对参数不明的情况)也有效
# 对数据的捕捉总结
  我把它分为两种:动态数据以及固定数据。动态数据是随游戏某动作而改变的,而固定数据从游戏加载就不会发生改变(这里与静态数据差异),但是它会被访问(不被访问就是“废数据”了)
  动态数据常见有
    1. 开关式(好比选中/未选中),一样寻常搜0/1
    2. 数值式(常见的),按数据类型搜
    3. 循环式(在某个自定义范围内增减,而不是数据类型的范围内),只能搜变化数值
    4. 特别式(在几个特别值之间来回变化),对于有规律情况可以搜增减,对于极度情况只能搜变化数值
    5. 共有指针(点击差异的人物出现差异的值,包括各级指针值),这个暂时没有好的办法去寻找

    6. 相干式(好比:植物大战僵尸的香蒲攻击方式,先遍历,再获取坐标,最后子弹跟踪。这个时间只改子弹跟踪的跳是会崩的),需要找到全部相干值并一起修改
    其它待补充......

  固定数据常见有
    1. 初始化值,好比植物大战僵尸的植物攻击力/攻击隔断/攻击范围等,固定数据的修改只能依靠与它相干的动态数据,并找到它的初始化关键代码
    2. 独有指针,好比根据某个动态数据独有的关键代码,找到的指针,它的各级指针是不会变化的(也存在某级指针存在几个值得情况)

    3. 静态区域,好比基址的存放处,全局变量的存放处等,可以被间接访问
    其它待补充......
  以上阐明只是某种做法,可以随差异情况而变,但其本质稳定......

End
  有问题的欢迎在帖子下留言,我会找时间帮助解答;也欢迎其它交流

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-11-24 20:34 , Processed in 0.078125 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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