合购VIP资源论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

魔鬼作坊全套软件编程VIP教材[更新到最新]
重楼C++辅助是如何炼成的教材
独立团编程培训系列教材全套
九尾狐EZ按键脚本VIP系列教程
VC++传奇三逆向研究三部曲 打包
江中游VIP系列按键精灵培训班
播布客新概念C语言视频教程
小生我怕怕中级班破解培训教材[价值2000元]
紫猫VIP按键精灵培训教程
2013饭客大型职业入侵渗透特训班
蓝丝雨TC《商业辅助是怎样炼成的》
老A淘宝打造爆款系列教材[更新至第九期]
上百G电脑维修硬件维修手机维修教程
菜鸟腾飞MetaSploit渗透测试平台之应用
甲壳虫VIP绝版SEO优化系列教程
半斤八两VIP初级破解班1-27官方售价500元
半斤八两中级破解教程价值1000元
天都吧全站教程高清无密更新完毕
暗月渗透系列教程第一套更新完毕
暗月渗透系列教程第二套更新完毕
DIY商业辅助学院201VIP教程[基础实战LUA篇]
老王Python培训视频教程(价值500元)
2014年小七免杀论坛VIP系列第三季 (美女讲师)
一洋2014淘宝培训最新教程16个模块(价值2980元)
大猛网赚编程系列教程(价值699元)
C++ Primer视频教程(初级,中级,高级全套)
轩辕IT培训 Linux C++ 远程全科班[价值500元]
C++实地培训教程[持续更新中]
魔域辅助系列教程(价值300元)
burpsuite系列视频教程高清无KEY 
 侠客C#营销软件开发特训(价值880元)[高清版]
滴水网络初级逆向培训视频(价值800元)逆向必备
某米网价值2399元钻石VIP会员视频
价值上万元淘宝大学电子商务培训教材
敬伟PS教程/PS5 6视频教材书/平面 广告设计淘宝美工自学全套高清
安全渗透测试实践高级系列课程[价值1500元]
AGP驱动高级班VIP零基础游戏反驱动保护教程
7000元AGP论坛远程VIP培训班
梦幻西游2辅助系列视频教程
龙之谷辅助系列视频教程
世恒百集易语言教程全套100集更新完毕
广告位置招租150/月 联系QQ:1595000430
Hadoop七天培训[更新完毕] JAVA上海培训基础就业班 达内C++ 2014 培训第一期视频教程
Windows程序设计第五版视频教程[价值1700]
SEO培训史上最强SEO培训(价值4980元)[高清完整版]
老男孩python高级运维开发课程(高清完整版)
老男孩OpenStack企业私有云实战培训课程(价值800元)
Java 编程思想系列教程[初级中级高级]
在线开通VIP会员联系QQ:1595000430点击这里给我发消息
在线开通VIP会员联系QQ:1595000430点击这里给我发消息 
上千G精品VIP教程目录请点击这里 加入VIP会员全站无限制下载 免费获取VIP会员说明详细点击
永久电影资源采集网
超级资源采集网--用心创造快乐

OK资源网无水印高清资源

速播资源-更新快速度保证也不卡
广告位招租联系QQ:1595000430
永久电影资源采集网
永久电影资源采集网
8k资源网超清资源国内百G带宽
广告位招租联系QQ:1595000430
查看: 145|回复: 0

[脚本语言] 通过调试游戏,让我们来了解64位汇编指令(二)

[复制链接]
  • TA的每日心情
    开心
    前天 01:30
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    9

    主题

    32

    帖子

    68

    合购币

    ○小试身手●

    UID
    277002
    积分
    100
    合购币
    68 枚
    注册时间
    2019-5-23
    最后登录
    2020-2-17
    发表于 2020-1-15 16:41:37 | 显示全部楼层 |阅读模式
    本帖最后由 任鸟飞 于 2020-1-17 12:32 编辑

    之前我们在分析游戏的内息值时得到了一个CALL的返回值,那么接下来我们到CALL去寻找一下这个返回值的来源,并对遇到的汇编指令进行讲解(如图)(什么?你不知道是哪个CALL?请将上一篇的帖子看一遍~~~)


    1.png
    在CALL的位置下F2断点,我们发现这里不需要修改内息,游戏直接就会断下。于是我们在+178偏移和CALL的返回处分别下F2断点,看一下eax的值是否相同(如图)(如图)


    2.png
    3.png

    通过两幅图对比,发现之前的r12和返回的eax是相同的。有人会说,这不是多此一举么,直接去CALL里分析好了。其实这么做是为了防止CALL内部出现遍历代码,而附近有有其他的对象被频繁访问,导致返回的eax并不是我们要分析的角色对象r12。
    接下来我们在返回处重新下F2断点,并多次点击F9,我们发现大部分的情况下都是返回的角色对象,只有个别的情况会返回其他的数值,这也就说明了这里是有遍历的,但是角色本身会被大量访问(由于周围的对象过少,想断到非角色对象很难,所以就不截图了)

    接下来我们在CALL下F2断点,并点击F7进入CALL的内部继续分析来源(如图)

    4.png
    这里是CALL内部的头部,我们继续点击F8,走到CALL的retn处(如图)

    5.png
    我们需要从这里继续向上分析rax的来源。点击减号来逐步后退,这样可以原路返回去分析来源,防止跳转过多影响我们的分析过程。
    首先可以得到mov rax, qword ptr [rcx + 8]
    这里传递的是qword,得到一个+8偏移,继续点减号来分析rcx的来源。可以得到mov rcx, qword ptr [rcx]。而在上面又可以得到lea rcx, [rsp]。lea相当于传递地址而不是读指针,所以这两条的结果就变成了mov rcx,[rsp]。[rsp]是要作为一个整体去分析的,而[rsp]是在lea rcx, [rsp]的下一条被rax进行赋值的(如图)

    6.png
    这里的分析可能有一些绕,有32位基础的能够看得懂,如果看不懂的在后面的堆栈文章中我们会重新的进行讲解。
    继续向上分析rax可以得到mov rax, qword ptr [r10 + rdx*8],这是一个标准的64位数组的代码,r10是数组的起始地址,而每一个数组元素都占用8字节(如图)

    7.png
    这说明我们来到了一个遍历代码中,这里不只有数组,如果仔细观察还能够发现在下面还存在一个链表(如图)

    8.png
    由于遇到了遍历代码,所以我们就不继续讲解这个分析过程了,在后面的文章中会重点讲解64位下的数据结构。
    那么我们的分析结束了么?当然没有。由于角色是在游戏中是一个特殊的存在,他被访问的也是最频繁的,所以大部分游戏的角色对象都会单独存放在一个基地址中。所以我们尝试用CE去对之前的r12进行扫描(如图)

    9.png
    得到了一个绿色的地址,为了验证它是否是一个可用的基地址,我们在OD中查找常量(如图)

    10.png
    还没有搜索完就得到了很多的结果,说明这是一个可用的基地址(如图)

    11.png
    这样我们就得到了角色内息的公式[[0x496c540]+0x178] xor 0xa59cf5b6
    通过这两篇文章,我们发现在整数范围内的64位汇编指令和32位大致是相同的,分析方法也是相同的,只是寄存器看起来要麻烦一些,其实也只是不习惯罢了。我们会在后面的数据分析中对这些知识进行更加深入的学习和理解。


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|合购VIP资源论坛 |网站地图

    GMT+8, 2020-2-19 00:06 , Processed in 0.125000 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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