PS3的C ++内存写作

问题描述 投票:1回答:2

我正在学习如何破解PS3游戏,我需要编辑存储在某些内存地址的内容。以下是我看到人们为实现这一目标所做的一个例子:

*(char*)0x1786418 = 0x40;

这行代码为COD Black Ops II打开超高速。

我不是100%肯定这里发生了什么。我知道0x1786418是地址,0x40设置该地址的值。但我不太确定*(char*)的作用以及0x40如何打开超高速?

这种语法的解释以及它如何打开超高速将非常感激。

谢谢!

c++ c
2个回答
2
投票

在尝试进行逆向工程之前,您应该考虑理解编程语言的基础知识。这绝对是一个高级主题,您不想将其用作入门方式。它会让你的事情变得更加困难。

我不是100%肯定这里发生了什么。我知道0x1786418是地址,0x40设置该地址的值。

除非逆向工程软件的人员出现在这里并对其进行解释,否则这就像这里的任何人都可以告诉你的那样。

但我不太确定*(char*)会做什么

这是一种获取地址并将其解释为指向字节的指针的方法(C中的chars是1字节的内存)然后外部*取消引用指针以允许修改指针引用的值,在这种情况下,设置为值0x40

0x40如何打开超高速?

这非常特定于游戏本身。有人必须弄清楚玩家移动速度的数据存储在内存中的位置(特别是PS3)并以这种方式更新。

这样的事情很容易被一个简单的补丁打破,因为代码更改可能会使某些事情最终落在不同的地址,需要额外的逆向工程。


0
投票

如果有人看到这个,并想知道如何设置声望或启用红色框或什么不生病解释如何(MW3将是我的例子)

所以对于一个声望,它会像*(char*)0x01C1947C = 20;设置声望20,如果你不理解20你可以做20或0x14也等于声望20说你想要声望12你可以做12或0xC如果你不知道如何搜索你想要的声望然后在十六进制:)

现在对于像红盒子这样的东西(假设你知道bools / if语句和空白我不会只覆盖它们如何设置它)

现在你会做红盒子(启用)ps。 bytesOn可以被调用

char bytesOn[] = { 0x60, 0x00, 0x00, 0x00 };
write_process(0x65D14, bytesOn, sizeof(bytesOn));
whateverYourBoolIsCalled = true;

现在把它关闭工作相同,除了你必须得到其他字节:)

如果要在sprx中设置名称,请添加另外1个示例

char name[] = { "name here" }; write_process(0x01BBBC2C, name, sizeof(name));

这样做有更短的方法,但我认为这是理解这样做的最佳方式:)所以你这是我的tut :)

© www.soinside.com 2019 - 2024. All rights reserved.