2015-11-06 77 views
1

我在学习如何破解PS3游戏,我需要编辑存储在某些内存地址的内容。下面是我所看到的人做,以实现一个这样的例子:PS3的C++内存写入

*(char*)0x1786418 = 0x40; 

这行代码开启超高速的COD黑色行动II。

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

对此进行句法解释以及如何打开超级速度将非常感激。

谢谢!

+0

* 0x40如何打开超级速度?*找到反向工程的人。这对于CoD来说是超级特定的,可能是针对这种特定的攻击。 – chris

+0

你真的在这里深入潜水。这是一段非常简单的代码,所以如果你无法理解它,你应该通过学习基础知识来达到目的。为了给你一个基本的答案......有人反向设计了一些变量的内存地址,这些变量可能会在移动过程的每个步骤中添加到玩家的位置。如果你改变了这个变量的值(这是这条线的作用),那么每一个移动步骤现在都会将这个新值添加到玩家位置。同样,将其更改为较低的值可能会降低播放器的播放速度。 –

+0

我不认为你关于*(char *)的问题可以在简短的答案中解释。只要阅读一些关于C语言的书(可能是一本书)。而关于0x40的确切值,这是特定于游戏制作的方式。 – Paul92

回答

2

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

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

这和任何人都可以告诉你一样多,除非反向工程软件的人在这里出现并解释它。

但我不能肯定什么*(char*)确实

这是取地址和解释它作为一个指向字节的方式(char S IN C是1个字节内存),然后外部*解除引用指针以允许修改指针引用的值,在此情况下,将该值设置为值0x40

以及0x40如何打开超级速度?

这是非常具体的游戏本身。有人必须知道有关玩家移动速度的数据存储在内存中(特别是PS3),并以此方式进行更新。

像这样的东西很容易被一个简单的补丁破坏,因为代码更改可能会使某些事情在不同的地址结束,这需要额外的逆向工程工作。

+0

谢谢,这是非常有用的:) –

0

如果有人seing这一点,并想知道如何设置prestiges或启用红色方框或有什么不生病解释如何(MW3愿意做我的例子)

等了威信它会像*(char*)0x01C1947C = 20; 那会设置声望20如果你不明白20你可以做20或0x14也等于声望20说你想声望12你可以做12或0xC 如果你不知道如何只是搜索声望你想然后在十六进制:)

现在像红色盒子的东西(假设你知道关于布尔/如果语句和空白我不会只覆盖你如何设置它)

现在你会为红色框(启用)PS做。 bytesOn可以被称为什么

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

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

生病添加1个例子,如果你想在一个SPRX

设置一个名称

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

有这样做的更短的方式,但我认为它的最好的方式来理解做这种方式:) 你们也如此这一直是我的啧啧:)