PS3的C ++内存写作

时间:2015-11-06 02:56:10

标签: c++ c

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

*(char*)0x1786418 = 0x40;

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

在尝试进行逆向工程之前,您应该考虑先了解编程语言的基础知识。这绝对是一个您不想用作入门方式的高级主题。它会给你带来不必要的困难。

  

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

除非反向设计软件的人员出现在这里并对其进行解释,否则这个人可能会告诉您这一点。

  

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

这是一种获取地址并将解释的方法作为指向字节的指针(C中的char s是1字节的内存)然后是外部的{{1}取消引用指针以允许修改指针引用的值,在本例中,设置为值*

  

0x40如何打开超级速度?

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

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

答案 1 :(得分: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));

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