当前位置: 首页 > news >正文

CS420 课程笔记 P5 - 内存编辑 数据类型

文章目录

    • Introduction
    • Data types
      • Booleans
      • Negative numbers (Signed integers)
      • Floating-point numbers (fractional numbers)
    • Unknown value scans
      • Health finding
      • Float finding (Player position hack / Teleport hack)
    • Additional things

Introduction

这节课将结束数据类型并涵盖更高级的 game hacking 技巧,特别是学习如何编辑我们看不到的数字,例如玩家的 XYZ 坐标或者没有显示数字的血条,这被称为 未知值扫描,因此数据类型只是计算机上存储信息的方式,我们已经学到了很多比如 ASCII 和 Unicode,当然我们还有负数和浮点小数还没涉及

Data types

我们已经学到的数据类型总结:

  • byte = UInt8 1byte 最大255
  • unsigned short = UInt16 2bytes 最大65535
  • unsigned integer = UInt32 4bytes 最大42亿
  • unsigned long = UInt64 8bytes
  • string (variable)
  • char 1byte 最大255

接下来介绍更多数据类型,日后他们将在课程中统称为 Data 数据!

Booleans

在游戏中,很多情况下我们需要将值表示为 true 或 false,比如:

  • 怪物是否活着 isAlive = true or false
  • 火把是否打开 isOn = true or false

当我们在计算机中存储数据时,我们使用 1 表示 true,0 表示 false,你可能会想计算机只需要 1bit 即可保存一个 bool 类型的数据,很不幸,计算机使用了整个 byte 来保存一个 bool 值,这就是使用 8个bit 作为一个 byte 分组的副作用

有些游戏可能会用 bit flag 技术来优化,比如黑暗之魂3,但这实际上很少见,为了应对这个情况,已经是一种非常先进的 game hacking 技术了

值得一提的是,有些编程语言还会浪费更多,甚至使用 4bytes 也就是一个 int32 的空间来存储 bool,通常 C 和 C++ 占用 1byte,C# 占用 4bytes,而 Java 要占用 8bytes

Negative numbers (Signed integers)

到目前为止我们只了解正数,让我们来介绍一下负数:

  • 第一位 Sign bit 作为符号位,0 为正,1 为负
  • 后面作为数字的值存储

这里涉及一个负数补码反码系统,视频作者在这里跳过,这个系统介绍起来足够消耗一个小时甚至更多

对于笔记作者来说,一个简单的补码记忆方式是:如果第一位是0,那么就当正常的二进制数
否则如果第一位是1,那么就减去一个特殊的数字即可,比如 1000 0000,等于 0 - 128,或者 1111 等于 7 - 8 = -1
7 - 8 里面的 7 是后三位的和,8 是第一位的权值

Floating-point numbers (fractional numbers)

有两种实现的方法,一种是浮点,一种是双精度,这两种数据类型几乎相同,但有细微的差别

  • 第一位 Sign bit 作为符号位,0 为正,1 为负
  • 后面 8 位作为 exponent 指数位
  • 最后 23 位作为 mantissa(fraction)

而双精度 double 作为科学用,一般很少在游戏中出现,但实际上是差不多的,float 同样需要 4bytes 存储

  • 10.5f 浮点数后面一般加 f 作为标志
  • 10.5 double 后面一般没有 f

Unknown value scans

现在我们将上面学到的应用到真正的 game hacking 技术中,我们尝试找到一个没有血条数值的怪物的生命值

Health finding

我们可能可以猜测怪物的生命值是100,但往往不正确,所以我们:

  1. 先收集所有数值
  2. 在游戏中想办法改变怪物的生命值,比如让怪物受到一次攻击
  3. 查找所有减少或者改变了的数值

这就使得数值范围得到了缩小,最终找到生命值!

Float finding (Player position hack / Teleport hack)

位置通常使用浮点数存储,我们先用 CE 查找未知的数值,类型选择 FLOAT

在这里插入图片描述
在这里插入图片描述
然后在游戏中移动,我们不知道移动了多少,只知道移动了,在 CE 中继续扫描,通过选择:

  • Unchanged value
  • Changed value
  • Increased value
  • Decreased value

最终可以缩小范围找到你需要的值!

在这里插入图片描述
最后你会发现很多棘手的事情,比如玩家可能旁边有宠物,这就需要你自行针对游戏的特性想一些办法了~

现在我们留下了这些数据,把他们放到下面去

在这里插入图片描述
然后选中所有,按下空格来冻结住!程序很有可能会崩溃,因为你冻结了一些指针或者天知道是什么的东西,通过这样来缩小范围最终找到正确的值!

在这里插入图片描述
当你找到了 X 地址,你可以简单地加4,来找到玩家的 Y 地址,因为 FLOAT 占用 4bytes,游戏会彼此相邻地存储坐标,因为这就是程序员制作游戏的方式

Additional things

当你退出游戏重新进入并修改那个地址的数值时,有时你会发现数值有效,有的则锁定在了 0,这是因为一种叫做静态和动态的东西,现在你只需要记得有些 game hacking 会在您重新启动游戏时再次起作用,而大多数则不会!

相关文章:

CS420 课程笔记 P5 - 内存编辑 数据类型

文章目录 IntroductionData typesBooleansNegative numbers (Signed integers)Floating-point numbers (fractional numbers) Unknown value scansHealth findingFloat finding (Player position hack / Teleport hack) Additional things Introduction 这节课将结束数据类型并…...

oracle报错 ORA-02290: 违反检查约束条件问题

保存数据库信息时,提示违反检查约束条件,如图: org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02290: 违反检查约束条件 (MXUSER…...

Prometheus + grafana 的监控平台部署

一、Prometheus安装 tar -zxvf prometheus-2.44.0.linux-amd64.tar.gz -C /opt/module/ sudo chown -R bigdata:bigdata /opt/module/prometheus-2.44.0.linux-amd64 mv /opt/module/prometheus-2.44.0.linux-amd64 /opt/module/prometheus-2.44.0 ln -s /opt/module/promethe…...

npm、yarn、pnpm

一、简介 CommonJS 的出现,使 node 环境下的 JS 代码可以用模块更加细粒度的划分。一个类、一个函数、一个对象、一个配置等等均可以作为模块,这种细粒度的划分,是开发大型应用的基石。 为了解决在开发过程中遇到的常见问题,比如…...

力扣|两数相加

先放题目: 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c…...

prometheus通过blackbox-exporter监控web站点证书

1 概述 线上站点普遍是https,因此监控https web站点的证书的过期时间,是一个基础性需求。例如,证书过期会导致tls握手失败,进而导致用户无法正常访问web站点。 blackbox-expoter是一个web服务,它暴露了一个接口&#…...

CentOS7 Hadoop3.3.0 安装与配置

一、安装JDK 1、创建文件夹tools和training用于存放压缩包和解压使用,tools存放压缩包,training用于解压后安装jdk和hadoop的路径。 1)回到路径为 / 的位置 cd /2) 创建 tools 和 training mkdir toolsmkdir training3) 进入tools文件夹 …...

2023年9月CDGA/CDGP数据治理认证考试报名,当然弘博创新

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…...

Re45:读论文 GPT-1 Improving Language Understanding by Generative Pre-Training

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名:Improving Language Understanding by Generative Pre-Training 论文下载地址:https://www.mikecaptain.com/resources/pdf/GPT-1.pdf 本文是2018年OpenAI的工作&#xff0c…...

VB.NET 如何将某个Excel的工作表中复制到另一个的Excel中的工作表中https://bbs.csdn.net/topics/392861034

参考http://share.freesion.com/306372/可以实现直接拷贝指定表 Private Sub Excel复制工作簿()Dim myExcelApp As New Microsoft.Office.Interop.Excel.ApplicationmyExcelApp.Workbooks.Open(System.Environment.CurrentDirectory "\\测试用例.xlsx", Type.Missin…...

深入解析Kotlin类与对象:构造、伴生、单例全面剖析

前言 本篇文章将带您了解Kotlin编程中的重要概念:类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样,我们会逐步揭开这些概念的面纱,让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者,本文都将为…...

JavaScript构造函数

1、构造函数: 是一个函数,是通过new运算符进行调用,生成一个特殊的对象并返回。 function 函数名([参数]){ this.属性名 ‘属性值’ ... this.属性名 function([参数]){ 函数体语句 } } 通常情况下,建议构造函数的首字母大写 …...

手写嵌入式操作系统(基于stm8单片机)

#include <stc8h.h> #include <intrins.h> #define MAX_TASKS 2 //简化方面,我们当前操作系统只有2个task #define MAX_TASK_DEP 32unsigned char idata task_sp[MAX_TASKS]; // 任务的堆栈指针 unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];// 每个…...

vue3.3 ~

defineModel 原本&#xff1a; // 1 defineProps({modelValue: {type: Number,required: true,default: 0} })defineProps([modelValue]) // 2 const emit defineEmits([update:modelValue])现在&#xff1a; const value defineModel<number>({ default: 0 })defin…...

滑动窗口实例4(将x减到0的最小操作数)

题目&#xff1a; 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&#xff0c;然后从 x 中减去该元素的值。请注意&#xff0c;需要 修改 数组以供接下来的操作使用。 如果可以将 x 恰好 减到 0 &#xff0c;返回 …...

数据库原理及应用(MySQL)

建议大屏观看&#xff0c;避免格式错误&#xff0c;影响观感 目录 第一章 数据库系统概述 1.数据库系统概述 1.1.信息 1.2.数据 1.3.信息和数据之间的联系 1.4.数据库&#xff08;DB&#xff09; 1.5.数据库管理系统&#xff08;DBMS&#xff09; 1.6.数据库管理系统的…...

初识Maven(一)命令行操作和idea创建maven工程

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供**构建**和**依赖**管理支持的工具。 构建过程包含的主要的环节&#xff1a;- 清理&#xff1a;删除上一次构建的结果&#xff0c;为下一次构建做好准备 - 编译&#xff1a;Java 源程序编译成 *.class 字节码文件…...

MHA高可用配置及故障切换

1&#xff0e;什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过…...

FPGA/IC秋招面试题 1(解析版)

分享个人觉得遇到还不错的题&#xff0c;后续有会继续补充。。。 以下题目均来自网络平台&#xff0c;用于学习交流如有侵权立马删除!!! 1. Verilog语言中&#xff0c;下面哪些语句不可被综合() A. #delay语句 B. initial语句 C. always语句 D. 用gen…...

华为云 异构数据迁移

数据库和应用迁移 UGO&#xff08;Database and Application Migration UGO&#xff0c;以下简称为UGO&#xff09;是专注于异构数据库结构迁移的专业服务。可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB/RDS的SQL语法&#xff0c;通过数据库评估、对象迁移两大核…...

wininet,winhttp,xmlhttprequest,各版本区别 《转》

一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP) 实现Http访问&#xff0c;微软提供了二套API&#xff1a;WinINet, WinHTTP&#xff08;分别封装于system32目录下的wininet.dll和winhttp.dll内&#xff09; 二者主要区别在于后者更为安…...

朴素,word,任何参考文献导入endnote

朴素&#xff0c;word&#xff0c;任何参考文献导入endnote 注意&#xff1a;对于以下这几种不做阐述&#xff0c;看其他帖子都有讲述&#xff1a; 这里的参考文献指的是类似于&#xff1a; [1]. Li Y, Lu Y, Huo X, et al. Bandgap tuning strategy by cations and halide io…...

数学建模--三维图像绘制的Python实现

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…...

Spring Cloud Alibaba-Feign整合Sentinel

第1步: 引入sentinel的依赖 <!--sentinel客户端--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 第2步: 在配置文件中开启Feign对Sentinel的…...

zabbix配置钉钉告警、和故障自愈

钉钉告警python脚本 cat python20 #!/usr/bin/python3 #coding:utf-8 import requests,json,sys,os,datetime # 机器人的Webhook地址 webhook"钉钉" usersys.argv[1] textsys.argv[3] data{"msgtype": "text","text": {"conten…...

Web安全测试(五):XSS攻击—存储式XSS漏洞

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部文章请访问专栏:《全栈安全测试教程(0基…...

本地PC机通过SSH方式远程Jetson

1. 检测电脑是否安装openSSH 以管理员身份运行powershell终端输入以下命令&#xff1a; Get-WindowsCapability -Online | ? Name -like OpenSSH*若没有安装OpenSSH&#xff0c;会出现如下图提示&#xff1a; 输入Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.…...

面向对象 学习黑马视频(03)

1.内存分区模型 /* 面向对象编程** 内存分区模型* 1.代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的* 2.全局区&#xff1a;存放全局变量和静态变量以及常量* 3.栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值…...

FinClip 支持创建 H5应用类小程序;PC 终端 优化升级

FinClip 的使命是使您能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型。不妨让我们看看本月产品与市场发布亮点&#xff0c;是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f447;&#x1f447; FinClip 支持创建 H5应用类小程序 近期我们…...

YOLOV8实例分割——详细记录环境配置、自定义数据处理到模型训练与部署

前言 Ultralytics YOLOv8是一种前沿的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它在前代YOLO版本的成功基础上进行了进一步的创新&#xff0c;引入了全新的特性和改进&#xff0c;以进一步提升性能和灵活性。作为一个高速、精准且易于操作的设计&#xff0c;YO…...

福州公司网站设计/热门搜索关键词

文章目录Class 文件格式字节码Class类的本质Class文件格式类加载机制加载验证准备解析初始化类加载器双亲委派机制栈桢JVM方法调用详解方法解析静态分派动态分派参考Class 文件格式 一般情况下Java代码执行流程如下图&#xff1a; 字节码 字节码文件 .class文件的产生是最关…...

网站建设合同书样本/汕头网站设计

大中型企业中&#xff0c;会设置许多组策略进行日常运维管理 &#xff0c;毕然里面也存在许多废弃的策略&#xff0c;需要我们定期清理我们的组策略信息。通常我们导出HTML报告方式来帮助我们分析组策略信息&#xff1a; #1 首先需要加载GroupPolicy模块&#xff1a; Import-Mo…...

wordpress flash加载插件/什么是搜索引擎营销

最近跟我的一些读者交流&#xff0c;有一位读者的经历让我记忆深刻&#xff1a;“有一次和大学同学聚会&#xff0c;和几个在BAT的同学聊了聊技术&#xff0c;发现自己在创业公司这几年&#xff0c;完全是吃老本的状态&#xff0c;没有什么机会精进技术&#xff0c;同样是工作了…...

手机营销型网站制作/惠州百度seo地址

Java初始化简介一般来说&#xff0c;在Java中&#xff0c;每个类产生的编译代码都存在于它自己的独立文件中&#xff0c;该文件只有在使用程序代码时才会被加载&#xff0c;也就是说&#xff0c;类的代码只有在初次使用时才加载。但是&#xff0c;如果存在static的话&#xff0…...

公司建网站多少钱/百度快速排名化

2019独角兽企业重金招聘Python工程师标准>>> 第一章 Weka命令行入门 1.1简介 在最初的实验&#xff0c;Weka所包含的图形用户界面是相当足够&#xff0c;若深入使用则建议使用命令行界面&#xff0c;因为它提供了一些功能&#xff08;这些功能在图形用户界面下不可…...

比较好的海报设计网站/青岛网站推广系统

BigDecimal常用于金额的计算&#xff0c;下面总结下这次项目中BigDecimal的用法。 1.加减乘除 2.设置精度 3.取反 加减乘除分别调用函数[java] view plaincopypublic BigDecimal add(BigDecimal value); public BigDecimal subtract(BigDecimal value); public BigDecimal mu…...