一.基本介绍

CE的全称为Cheat Engine,是一款内存修改编辑工具,其官网是http://www.cheatengine.org,可以在其官网下载到最新的CE工具,目前最新版本是Cheat Engine6.5。CE同时也是一款开源的工具,使用者可以在git中下载源代码: https://github.com/cheat-engine/cheat-engine。

CE的功能包括有16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大的反汇编功能及调试功能,可以附加到游戏中进行调试,所以是分析游戏的工具之一。

二.CE内存搜索功能的使用

1. 精确搜索:

CE的主界面如下图所示,使用CE搜索游戏数据,首先需要将CE附加到游戏进程中。

点击左上角菜单下发的绿色方框的按钮,打开进程列表对话框。

选择相应的游戏并点击打开,此时,就可以在数值搜索框中输入需要搜索的数据。比如搜索游戏中显示角色血量值的存放地址:

如上图血量所示,在CE的搜索数值输入框中输入“生命值”12393,选择扫描类型为“精确数值”,点击“新的扫描”开始第一次扫描。

搜索出的匹配值有98个,由于结果较多,这个时候不能确定正确的存放地址,需要再次搜索。

这个时候被怪打一下(使血量变化),输入新的生命值,点击“再次搜索”,此时的搜索值可以缩小到3个。

此时经过测试就可以发现第一个地址就是存放游戏界面中血量显示的地址。

2. 模糊搜索

如果搜索数值不确定的话,就需要使用模糊搜索的方法。使用模糊搜索的情况主要有具体数值不显示在游戏界面上,比如血量用百分比表示。模糊搜索的类型比较多,如下图所示:

同样以搜索生命值为例,首次扫描时选择“未知的初始值”

点击“首次扫描”,这个时候会出现非常多的扫描结果。这个时候去被怪物打一下减少血量后,由于此时数值是减小的,所以在扫描类型中选择“减少的数值”,然后点击再次扫描:

重复多次扫描后,即可找到存放的生命值的地址。

三.代码跟踪

代码跟踪比较常见的用途是找基址,游戏中任何数据都在内存中存在,比如角色的血,蓝,等级等数据,这些数值存放的方式一般是对象+偏移,在C++就是以指针的方式表示,如果需要知道对象在内存中的存放地址,就需要找到对象的基址。

需要知道对象的地址或数据的偏移,常见的方法就是找到访问或改变这个值的指令,可以使用Cheat Engine的反汇编及调试功能。

如上例的数据搜索找到的生命值存放的地址,将其放到CE最下方地址列表中,右键点击列表中的地址项,如下图所示,“找出是什么访问了这个地址”和“找出是什么改下了这个地址”分别可以跟踪生命值在代码的什么地方被读取和改写。

例如需要找到在血量被改写的地方,先在地址列表中右键点击“找出是什么改写了这个地址”,此时CE会附加到其内置的调试器,并自动列入对生命值进行写入的代码。

此时,ecx=0x22B96D34是对象的地址,血量通过eax赋值到+41Ch的地址漂移处。如上图所示,所以一级指针ecx的偏移+41Ch地址处。Ecx的赋值为上一条指令mov ecx, [esi+10],其二级指针是esi的偏移+10h地址处,再往上一条指令mov esi, [esi+4FA0],可以确定三级指针为esi,偏移为+4FA0h,以此类推,就可以找到血量存放的基址。

*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

数据分析之CE找数据大法的更多相关文章

  1. 使用Python一步一步地来进行数据分析总结

    原文链接:Step by step approach to perform data analysis using Python译文链接:使用Python一步一步地来进行数据分析--By Michae ...

  2. python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)

    python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...

  3. 基于Python的数据分析(1):配置安装环境

    数据分析是一个历史久远的东西,但是直到近代微型计算机的普及,数据分析的价值才得到大家的重视.到了今天,数据分析已经成为企业生产运维的一个核心组成部分. 据我自己做数据分析的经验来看,目前数据分析按照使 ...

  4. 数据分析之---Python可视化工具

    1. 数据分析基本流程 作为非专业的数据分析人员,在平时的工作中也会遇到一些任务:需要对大量进行分析,然后得出结果,解决问题. 所以了解基本的数据分析流程,数据分析手段对于提高工作效率还是非常有帮助的 ...

  5. 使用docker搭建数据分析环境

    注:早在学习<云计算>这门课之前就已经知道docker,学习这门课时老师还鼓励我们自己尝试一下:但是直到去年年底才有机会尝试,用过之后感觉确实很好用.最近需要部署几个shiny应用,又回顾 ...

  6. 数据分析侠A的成长故事

    数据分析侠A的成长故事 面包君  同学A:22岁,男,大四准备实习,计算机专业,迷茫期 作为一个很普通的即将迈入职场的他来说,看到周边的同学都找了技术开发的岗位,顿觉自己很迷茫,因为自己不是那么喜欢钻 ...

  7. 简易数据分析 09 | Web Scraper 自动控制抓取数量 & Web Scraper 父子选择器

    这是简易数据分析系列的第 9 篇文章. 今天我们说说 Web Scraper 的一些小功能:自动控制 Web Scraper 抓取数量和 Web Scraper 的父子选择器. 如何只抓取前 100 ...

  8. mysql 数据分析如何实现日报、周报、月报和年报?

    以天为统计周期,是常见需求.周报.月报更是常见需求.长周期项目,甚至有年报需求.我已经掌握了mysql中按天统计,如何实现按年.按月.按周统计呢? 1.已掌握的技能:按天统计 实现以天为统计周期很简单 ...

  9. 小白学 Python 数据分析(7):Pandas (六)数据导入

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

随机推荐

  1. 第三章——供机器读取的数据(CSV与JSON)

    本书使用的文件.代码:https://github.com/huangtao36/data_wrangling 机器可读(machine readable)文件格式: 1.逗号分隔值(Comma-Se ...

  2. udf.dll 源码

    一点关于UDF的发散思路 Author:mer4en7y Team:90sec 声明:UDF源码作者langouster 相信各位牛对UDF都不会陌生,看论坛叶总共享了一份UDF源码,以前一直没看过, ...

  3. week12 201621044079 流与文件

    作业12-流与文件 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车 ...

  4. QWidget一生,从创建到销毁事件流

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流     本文地址:http://techieliang ...

  5. codesandbox

    codesandbox https://codesandbox.io https://codesandbox.io/dashboard https://codesandbox.io/dashboard ...

  6. BZOJ4869 六省联考2017相逢是问候(线段树+欧拉函数)

    由扩展欧拉定理,a^(a^(a^(……^x)))%p中x作为指数的模数应该是φ(φ(φ(φ(……p)))),而p取log次φ就会变为1,也即每个位置一旦被修改一定次数后就会变为定值.线段树维护区间剩余 ...

  7. NOI1997

    T1 竞赛排名 分析:模拟 超级大模拟,太弱了,写个模拟都要2个小时..写的又难看又麻烦..还需努力 var n,i,j,k:longint; t1:real; x,y:..,..] of real; ...

  8. P3986 斐波那契数列

    题目描述 定义一个数列: f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2) 其中 a,b均为正整数,n≥2 . 问有多少种 (a,b),使得 k 出现在这个数列里,且不是前两项. 由于 ...

  9. FPGA学习记录_设计一个计数器

    此处设计一个数器,使 学习板上 的 LED 状态每 500ms翻转一次. 学习板上晶振为50MHz,也就是说时钟周期为 20ns , 这样可以计算得出 500ms = 500_000_000ns/20 ...

  10. android eclipse ndk使用记录

    为方便开发jni程序,android提供了ndk包来简化开发过程,避免开发人员下载完整的平台代码,并且可以在windows环境下集成到eclipse里面,大大加快了开发速度.这里记录下一个简单例子. ...