Death Stranding | Cheat Engine Table v1.0

Upload your cheat tables here (No requests)
Danger_D
Cheater
Cheater
Posts: 32
Joined: Mon Mar 06, 2017 2:29 pm
Reputation: 1

Re: Death Stranding | Cheat Engine Table v1.0

Post by Danger_D »

Any Update here? New Game Update 1.03 is out...

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

User avatar
kay0
Fearless Donors
Fearless Donors
Posts: 57
Joined: Sat Apr 20, 2019 11:33 pm
Reputation: 25

Re: Death Stranding | Cheat Engine Table v1.0

Post by kay0 »

SunBeam wrote:
Tue Aug 04, 2020 8:08 pm
stanko11 wrote:
Tue Aug 04, 2020 8:01 pm
I'm nearing the end of this wonderful game, and I urge everyone to enjoy it and explore yourself first.
I'm urging everyone to do the same. The game is simply beautiful. Fucking ignore all the marketed crap, all the shit you've known about Kojima, Metal Gear Solid and other crap. This is a TOTALLY different experience. After finishing the game I feel like I've read a long-3-volume novel and I keep wanting more. Here's to hoping for more games from the new Konami-free Kojima :)
Hey SunBeam,
Just wanted to ask if you stopped working on this particular table or if there is still hope for a release in the near future :wub:

User avatar
QuarryTen
Fearless Donors
Fearless Donors
Posts: 23
Joined: Wed Sep 25, 2019 1:21 am
Reputation: 10

Re: Death Stranding | Cheat Engine Table v1.0

Post by QuarryTen »

SunBeam, please.

User avatar
SunBeam
Administration
Administration
Posts: 3155
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2321

Re: Death Stranding | Cheat Engine Table v1.0

Post by SunBeam »

Am out this next week, will post something starting with the 21st.

User avatar
QuarryTen
Fearless Donors
Fearless Donors
Posts: 23
Joined: Wed Sep 25, 2019 1:21 am
Reputation: 10

Re: Death Stranding | Cheat Engine Table v1.0

Post by QuarryTen »

Awesome!

Can someone help me think of a way to find the flags for infinite battery for the exo and vehicles? I assume they're floats and jumping in and out of energy zones while scanning for changed and unchanged values is the route to go, but I seem to be finding incorrect addresses. Does anyone have the direct address or opcode that accesses the battery for the current version of the game?

User avatar
kay0
Fearless Donors
Fearless Donors
Posts: 57
Joined: Sat Apr 20, 2019 11:33 pm
Reputation: 25

Re: Death Stranding | Cheat Engine Table v1.0

Post by kay0 »

QuarryTen wrote:
Sat Sep 12, 2020 8:20 am
Awesome!

Can someone help me think of a way to find the flags for infinite battery for the exo and vehicles? I assume they're floats and jumping in and out of energy zones while scanning for changed and unchanged values is the route to go, but I seem to be finding incorrect addresses. Does anyone have the direct address or opcode that accesses the battery for the current version of the game?
There are numerous trainers(fling, fearlessrevolution's, etc.) that have that feature if it might help you

User avatar
SunBeam
Administration
Administration
Posts: 3155
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2321

Re: Death Stranding | Cheat Engine Table v1.0

Post by SunBeam »

^ Which is pretty much why I'm not interested in posting an updated table and have moved to other games. What would the point be?.. No one is keen to know how shit works; you all want is to hack the game, but instead of using trainers, to use tables. Cuz they're less fuss. So there's no actual gain for my time invested in cleaning up and updating the table. Reverting to "I'll think about it".

User avatar
QuarryTen
Fearless Donors
Fearless Donors
Posts: 23
Joined: Wed Sep 25, 2019 1:21 am
Reputation: 10

Re: Death Stranding | Cheat Engine Table v1.0

Post by QuarryTen »

SunBeam wrote:
Sun Sep 13, 2020 10:02 am
^ Which is pretty much why I'm not interested in posting an updated table and have moved to other games. What would the point be?.. No one is keen to know how shit works; you all want is to hack the game, but instead of using trainers, to use tables. Cuz they're less fuss. So there's no actual gain for my time invested in cleaning up and updating the table. Reverting to "I'll think about it".
Personally, I prefer cheat tables because I can dissect the code and see how the author accomplished what they did. If it's something that I can't follow, I simply move on to the next game but if I can follow the logic, I take mental notes of what they did, how they did it, and apply to the next game I want to cheat on.

I understand that you have a hook for which you have documented and made public knowledge on acquiring, but I was curious in seeing what else you've done with your knowledge and if possible, maybe I can add on to it or at the very least learn from it. There are a few things I'd like to add to my own table but I have no idea of how to go about it -- maybe your table might have those ideas fleshed out and ready to go, maybe not, doesn't hurt to ask for it, however.

There's also the fact that it's a game that I'm currently interested in so, it'll make the learning process much more interesting. Regardless, if you post your table or not, I'm satisfied with what you've shared and I appreciate all that you do.

User avatar
Ownsin
Fearless Donors
Fearless Donors
Posts: 20
Joined: Wed Aug 15, 2018 4:36 pm
Reputation: 7

Re: Death Stranding | Cheat Engine Table v1.0

Post by Ownsin »

SunBeam wrote:
Sun Sep 13, 2020 10:02 am
^ Which is pretty much why I'm not interested in posting an updated table and have moved to other games. What would the point be?.. No one is keen to know how shit works; you all want is to hack the game, but instead of using trainers, to use tables. Cuz they're less fuss. So there's no actual gain for my time invested in cleaning up and updating the table. Reverting to "I'll think about it".
We would really still appreciate if you released the table. We have been waiting for you to post it for some time now, it would be quite unfortunate if gave up on releasing it :(

User avatar
QuarryTen
Fearless Donors
Fearless Donors
Posts: 23
Joined: Wed Sep 25, 2019 1:21 am
Reputation: 10

Re: Death Stranding | Cheat Engine Table v1.0

Post by QuarryTen »

For those who are interested, I've made a couple of scripts for infinite vehicle battery and exoskeleton battery for the current version of the game as of 9/22/2020. I couldn't find the flags that I wanted but the scripts get the job done nonetheless.

My next mission is infinite boots, gloves, and vehicle durability.
Attachments
DSVehAndExoBattery.CT
(4.72 KiB) Downloaded 311 times

User avatar
Ownsin
Fearless Donors
Fearless Donors
Posts: 20
Joined: Wed Aug 15, 2018 4:36 pm
Reputation: 7

Re: Death Stranding | Cheat Engine Table v1.0

Post by Ownsin »

Since It's obvious at this point that Sunbeam won't be posting his table. Can anyone share a table that has proper teleportation? It would be greatly appreciated!

SenorPlebeian
Fearless Donors
Fearless Donors
Posts: 21
Joined: Thu Jun 08, 2017 8:01 am
Reputation: 37

Re: Death Stranding | Cheat Engine Table v1.0

Post by SenorPlebeian »

My method is not exactly "proper" but the way I've been handling teleportation is via a few AOB scripts that grab the player's coordinate, the last vehicle to have stopped (which is the only time in which the teleportation seems to work), and the last waypoint they placed. The waypoint script needs to be activated in conjunction with whichever other coordinate script is running for this to work. The way I'm doing vehicle teleportation is janky as fuck though and this has a lot of shortcomings.
Essentially it's set up via 4 hotkeys.
Numpad 1 teleports the player to the last placement of their waypoint
Numpad 2 activates my really crappy lua script to teleport the vehicle as "safely" as possible whilst the player is inside to the last placement of their waypoint via sinking the vehicle down to the target z coordinate and then teleporting them to the destination (It'll be pretty much instant if the z coordinate is equal or higher). It'll only ever actually work if the vehicle is not in motion
Numpad 3 teleports the vehicle directly by copying over the value of the waypoints. The teleport won't happen unless the vehicle is not in motion.
Numpad 4 is for the last attached Floating Carrier given that script is enabled (Will only really work after you detach it IIRC)

The reason for numpad 2's script is because changing the vehicle's coordinates via the values I found more or less calculates it as a "next coordinate the vehicle will go" from my understanding. The issue from that is it means that if the waypoint's coordinate is lower than the z coordinate, the game will register that as fall damage. I did a very small look to see if I can disable the fall damage but I haven't really found any good results. Instead, my workaround is that it will bring the player's vehicle down to the target z coordinate at a rate the game doesn't consider falling, and then teleport the vehicle to the coordinate. Note that you should only use this if you're not in the map.

Easier solution is just to exit the vehicle, place a waypoint, use numpad 3, place another waypoint next to the vehicle, and then teleport yourself to said waypoint with numpad 1, as the fall damage physics are only determined while you're actually inside the vehicle. If you ever use numpad 4, I recommend doing both that and numpad 1 from within the map. Finally, I have no safeguards in place for numpad 1, 3, and 4 in terms of if you deleted all waypoints. So be careful not to use it in such a case as it will teleport you to the coordinate 0,0,0.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>586</ID>
      <Description>"COORDINATES"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>602</ID>
          <Description>"No Cargo Fall Damage"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : ds.exe
  Version: 
  Date   : 2020-08-20
  Author : SenorPlebeian

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(NOFALLDAMAGE,ds.exe,C4 C1 7A 11 4E 34 * * * * 75) // should be unique
alloc(newmem,$1000,"ds.exe"+293D37A)

label(code)
label(return)

newmem:

code:
  jmp return

NOFALLDAMAGE:
  jmp newmem
  nop
return:
registersymbol(NOFALLDAMAGE)

[DISABLE]

NOFALLDAMAGE:
  db C4 C1 7A 11 4E 34

unregistersymbol(NOFALLDAMAGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "ds.exe"+293D37A

"ds.exe"+293D347: C4 41 7A 10 5E 34        -  vmovss xmm11,[r14+34]
"ds.exe"+293D34D: C4 41 78 2F D8           -  vcomiss xmm11,xmm0,xmm8
"ds.exe"+293D352: C4 C1 78 28 FA           -  vmovaps xmm7,xmm10
"ds.exe"+293D357: 0F 86 2D 0B 00 00        -  jbe ds.exe+293DE8A
"ds.exe"+293D35D: C4 41 78 2F D0           -  vcomiss xmm10,xmm0,xmm8
"ds.exe"+293D362: 0F 86 22 0B 00 00        -  jbe ds.exe+293DE8A
"ds.exe"+293D368: 41 80 7E 20 05           -  cmp byte ptr [r14+20],05
"ds.exe"+293D36D: 41 B7 01                 -  mov r15l,01
"ds.exe"+293D370: C4 C1 22 5C C2           -  vsubss xmm0,xmm11,xmm10
"ds.exe"+293D375: C4 C1 7A 5F C8           -  vmaxss xmm1,xmm0,xmm8
// ---------- INJECTING HERE ----------
"ds.exe"+293D37A: C4 C1 7A 11 4E 34        -  vmovss [r14+34],xmm1
// ---------- DONE INJECTING  ----------
"ds.exe"+293D380: C5 A2 5C F9              -  vsubss xmm7,xmm11,xmm1
"ds.exe"+293D384: 75 0D                    -  jne ds.exe+293D393
"ds.exe"+293D386: 44 8B F9                 -  mov r15d,ecx
"ds.exe"+293D389: 41 C1 EF 10              -  shr r15d,10
"ds.exe"+293D38D: 41 80 E7 01              -  and r15l,01
"ds.exe"+293D391: EB 69                    -  jmp ds.exe+293D3FC
"ds.exe"+293D393: 49 8B 46 28              -  mov rax,[r14+28]
"ds.exe"+293D397: 80 78 3B 0A              -  cmp byte ptr [rax+3B],0A
"ds.exe"+293D39B: 75 0A                    -  jne ds.exe+293D3A7
"ds.exe"+293D39D: 41 80 BE 80 00 00 00 0F  -  cmp byte ptr [r14+00000080],0F
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>959</ID>
              <Description>"TELEPORT VEHICLE TO WAYPOINT (1.0)"</Description>
              <Options moHideChildren="1"/>
              <LastState/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{$lua}
function teleportVehicleGracefully(waypointcoordinate, vcoordinate)
  local x = readFloat(waypointcoordinate+16)
  local y = readFloat(waypointcoordinate+20)
  local z = readFloat(waypointcoordinate+24)

  local currentVehicleZ = readDouble(vcoordinate + 16)
  local rec = getAddressList().getMemoryRecordByDescription("TELEPORT VEHICLE TO WAYPOINT (1.0)")

  if thistimer == nil then
    thistimer = createTimer(nil, false)
  end
  thistimer.Interval = 250
  thistimer.OnTimer = function(timer)
    if currentVehicleZ &gt; (z + 5) and z ~= 0 then
      currentVehicleZ = currentVehicleZ - 5
      writeDouble(vcoordinate + 16, currentVehicleZ)
      writeDouble(vcoordinate - 1952, currentVehicleZ)
      -- print (currentVehicleZ)
    else
      if (z ~= 0) then
        writeDouble(vcoordinate + 16, z)
        writeDouble(vcoordinate - 1952, z)
      end
      if x ~= 0 then
        writeDouble(vcoordinate, x)
        writeDouble(vcoordinate - 1968, x)
        writeDouble(vcoordinate + 8, y)
        writeDouble(vcoordinate - 1960, y)
      end
      -- print ("Done")
      rec.Active = false
      thistimer.setEnabled(false)
    end
  end
  thistimer.setEnabled(true)

  if currentVehicleZ &lt;= (z + 5) then
    writeDouble(vcoordinate + 16, z)
    writeDouble(vcoordinate - 1952, z)
  end
end

function init()
  local waypointcoordinate = getAddressSafe("last_waypoint")
  local vcoordinate = getAddressSafe("vehcoordinates")
  waypointcoordinate = readQword(waypointcoordinate)
  vcoordinate = readQword(vcoordinate) + 2168
  teleportVehicleGracefully(waypointcoordinate, vcoordinate)
end

function initDisable()
  if thistimer ~= nil then
    thistimer.setEnabled(false)
  end
end
[ENABLE]
init()
[DISABLE]
initDisable()
</AssemblerScript>
              <Hotkeys>
                <Hotkey>
                  <Action>Toggle Activation</Action>
                  <Keys>
                    <Key>98</Key>
                  </Keys>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>552</ID>
          <Description>"GRAB PLAYER COORDINATES"</Description>
          <Options moHideChildren="1"/>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : ds.exe
  Version: 
  Date   : 2020-08-15
  Author : SenorPlebeian

  This script grabs the coordinates of the player that
  you can alter to move Sam's position
}

[ENABLE]

aobscanmodule(GRABPLAYERCOORDINATES,ds.exe,C5 FA 10 82 80 00 00 00 * * * * C4) // should be unique
alloc(newmem,$1000,"ds.exe"+19C3DA1)
alloc(coordinates, 8)
registersymbol(coordinates)
label(code)
label(return)

newmem:

code:
  mov [coordinates], rdx
  vmovss xmm0,[rdx+00000080]
  jmp return

GRABPLAYERCOORDINATES:
  jmp newmem
  nop 3
return:
registersymbol(GRABPLAYERCOORDINATES)

[DISABLE]

GRABPLAYERCOORDINATES:
  db C5 FA 10 82 80 00 00 00

unregistersymbol(GRABPLAYERCOORDINATES)
unregistersymbol(coordinates)
dealloc(coordinates)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "ds.exe"+19C3DA1

"ds.exe"+19C3D6C: C5 E8 58 C6                 -  vaddps xmm0,xmm2,xmm6
"ds.exe"+19C3D70: C5 F8 28 74 24 60           -  vmovaps xmm6,[rsp+60]
"ds.exe"+19C3D76: 49 8B C0                    -  mov rax,r8
"ds.exe"+19C3D79: C5 F8 58 E2                 -  vaddps xmm4,xmm0,xmm2
"ds.exe"+19C3D7D: C5 F2 59 15 3B FB D9 01     -  vmulss xmm2,xmm1,[ds.exe+37638C0]
"ds.exe"+19C3D85: C5 EA 58 05 07 38 DB 01     -  vaddss xmm0,xmm2,[ds.exe+3777594]
"ds.exe"+19C3D8D: C5 C2 5A D7                 -  vcvtss2sd xmm2,xmm7,xmm7
"ds.exe"+19C3D91: C5 F8 28 7C 24 50           -  vmovaps xmm7,[rsp+50]
"ds.exe"+19C3D97: C5 E0 57 DB                 -  vxorps xmm3,xmm3,xmm3
"ds.exe"+19C3D9B: C4 E3 61 21 D8 20           -  unknown avx 0F3A 21 xmm3,xmm3,xmm0,20
// ---------- INJECTING HERE ----------
"ds.exe"+19C3DA1: C5 FA 10 82 80 00 00 00     -  vmovss xmm0,[rdx+00000080]
// ---------- DONE INJECTING  ----------
"ds.exe"+19C3DA9: C5 FA 5A C0                 -  vcvtss2sd xmm0,xmm0,xmm0
"ds.exe"+19C3DAD: C4 C1 7B 58 C8              -  vaddsd xmm1,xmm0,xmm8
"ds.exe"+19C3DB2: C5 D8 58 EB                 -  vaddps xmm5,xmm4,xmm3
"ds.exe"+19C3DB6: C5 D2 5A C5                 -  vcvtss2sd xmm0,xmm5,xmm5
"ds.exe"+19C3DBA: C5 F3 5C C8                 -  vsubsd xmm1,xmm1,xmm0
"ds.exe"+19C3DBE: C4 C1 7B 11 08              -  vmovsd [r8],xmm1
"ds.exe"+19C3DC3: C5 D0 C6 C5 55              -  vshufps xmm0,xmm5,xmm5,55
"ds.exe"+19C3DC8: C4 41 39 15 C0              -  vunpckhpd xmm8,xmm8,xmm8
"ds.exe"+19C3DCD: C4 C1 6B 58 C8              -  vaddsd xmm1,xmm2,xmm8
"ds.exe"+19C3DD2: C5 78 28 44 24 40           -  vmovaps xmm8,[rsp+40]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>553</ID>
              <Description>"Coordinates"</Description>
              <Options moHideChildren="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <ShowAsHex>1</ShowAsHex>
              <VariableType>Array of byte</VariableType>
              <ByteLength>0</ByteLength>
              <Address>coordinates</Address>
              <Offsets>
                <Offset>80</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>585</ID>
                  <Description>"Player X"</Description>
                  <VariableType>Float</VariableType>
                  <Address>+0</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>97</Key>
                      </Keys>
                      <Value>(WayX)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
                <CheatEntry>
                  <ID>554</ID>
                  <Description>"Player Y"</Description>
                  <VariableType>Float</VariableType>
                  <Address>+4</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>97</Key>
                      </Keys>
                      <Value>(WayY)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
                <CheatEntry>
                  <ID>555</ID>
                  <Description>"Player Z"</Description>
                  <VariableType>Float</VariableType>
                  <Address>+8</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>97</Key>
                      </Keys>
                      <Value>(WayZ)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>939</ID>
              <Description>"Last Attached Carrier"</Description>
              <Options moHideChildren="1"/>
              <LastState/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : ds.exe
  Version: 
  Date   : 2020-08-21
  Author : SenorPlebeian

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(LASTATTACHEDCARRIER,ds.exe,C4 C1 78 10 85 C8 00 00 00 C4 E3) // should be unique
alloc(newmem,$1000,"ds.exe"+23F5661)
alloc(last_attached_carrier, 8)
registersymbol(last_attached_carrier)
label(code)
label(return)

newmem:
  mov [last_attached_carrier], r13
code:
  vmovups xmm0,[r13+000000C8]
  jmp return

LASTATTACHEDCARRIER:
  jmp newmem
  nop 4
return:
registersymbol(LASTATTACHEDCARRIER)

[DISABLE]

LASTATTACHEDCARRIER:
  db C4 C1 78 10 85 C8 00 00 00

unregistersymbol(LASTATTACHEDCARRIER)
unregistersymbol(last_attached_carrier)
dealloc(last_attached_carrier)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "ds.exe"+23F5661

"ds.exe"+23F5619: C4 E3 79 40 DC 7F                    -  vdpps xmm3,xmm0,xmm4,7F
"ds.exe"+23F561F: C5 FB 10 84 24 78 01 00 00           -  vmovsd xmm0,[rsp+00000178]
"ds.exe"+23F5628: C4 E3 79 21 84 24 80 01 00 00 20     -  unknown avx 0F3A 21 xmm0,xmm0,[rsp+00000180],20
"ds.exe"+23F5633: C4 C1 72 10 CA                       -  vmovss xmm1,xmm1,xmm10
"ds.exe"+23F5638: C5 F8 11 8C 24 00 01 00 00           -  vmovups [rsp+00000100],xmm1
"ds.exe"+23F5641: 45 33 F6                             -  xor r14d,r14d
"ds.exe"+23F5644: C7 84 24 F8 00 00 00 08 00 00 00     -  mov [rsp+000000F8],00000008
"ds.exe"+23F564F: C4 E3 79 40 C4 7F                    -  vdpps xmm0,xmm0,xmm4,7F
"ds.exe"+23F5655: C4 E3 71 40 D4 7F                    -  vdpps xmm2,xmm1,xmm4,7F
"ds.exe"+23F565B: C4 E3 79 21 CA 10                    -  unknown avx 0F3A 21 xmm1,xmm0,xmm2,10
// ---------- INJECTING HERE ----------
"ds.exe"+23F5661: C4 C1 78 10 85 C8 00 00 00           -  vmovups xmm0,[r13+000000C8]
// ---------- DONE INJECTING  ----------
"ds.exe"+23F566A: C4 E3 71 21 DB 20                    -  unknown avx 0F3A 21 xmm3,xmm1,xmm3,20
"ds.exe"+23F5670: C4 C1 7B 10 8D D8 00 00 00           -  vmovsd xmm1,[r13+000000D8]
"ds.exe"+23F5679: 48 8D 05 C8 E1 38 01                 -  lea rax,[ds.exe+3783848]
"ds.exe"+23F5680: 48 C7 84 24 FC 00 00 00 FF 00 00 00  -  mov qword ptr [rsp+000000FC],000000FF
"ds.exe"+23F568C: C4 C1 78 28 FD                       -  vmovaps xmm7,xmm13
"ds.exe"+23F5691: C5 C0 C6 FF 00                       -  vshufps xmm7,xmm7,xmm7,00
"ds.exe"+23F5696: C5 F8 11 84 24 90 00 00 00           -  vmovups [rsp+00000090],xmm0
"ds.exe"+23F569F: C5 C0 59 C4                          -  vmulps xmm0,xmm7,xmm4
"ds.exe"+23F56A3: C5 F8 11 84 24 D0 00 00 00           -  vmovups [rsp+000000D0],xmm0
"ds.exe"+23F56AC: C5 7A 11 A4 24 D8 00 00 00           -  vmovss [rsp+000000D8],xmm12
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>935</ID>
                  <Description>"Flying Carrier X pos"</Description>
                  <Options moRecursiveSetValue="1"/>
                  <VariableType>Double</VariableType>
                  <Address>last_attached_carrier</Address>
                  <Offsets>
                    <Offset>C8</Offset>
                  </Offsets>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>(Player X)</Value>
                      <ID>0</ID>
                    </Hotkey>
                    <Hotkey>
                      <Action>Increase Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>1</Value>
                      <ID>1</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
                <CheatEntry>
                  <ID>936</ID>
                  <Description>"Flying Carrier Y pos"</Description>
                  <Options moRecursiveSetValue="1"/>
                  <VariableType>Double</VariableType>
                  <Address>last_attached_carrier</Address>
                  <Offsets>
                    <Offset>D0</Offset>
                  </Offsets>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>(Player Y)</Value>
                      <ID>0</ID>
                    </Hotkey>
                    <Hotkey>
                      <Action>Increase Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>1</Value>
                      <ID>1</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
                <CheatEntry>
                  <ID>937</ID>
                  <Description>"Flying Carrier Z pos"</Description>
                  <Options moRecursiveSetValue="1"/>
                  <VariableType>Double</VariableType>
                  <Address>last_attached_carrier</Address>
                  <Offsets>
                    <Offset>D8</Offset>
                  </Offsets>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>(Player Z)</Value>
                      <ID>0</ID>
                    </Hotkey>
                    <Hotkey>
                      <Action>Increase Value</Action>
                      <Keys>
                        <Key>100</Key>
                      </Keys>
                      <Value>.2</Value>
                      <ID>1</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>581</ID>
          <Description>"Grab Last Waypoint"</Description>
          <Options moHideChildren="1"/>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : ds.exe
  Version: 
  Date   : 2020-08-18
  Author : SenorPlebeian

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(GRABWAYPOINT,ds.exe,C5 F9 7F 43 10 88) // should be unique
alloc(newmem,$1000,"ds.exe"+1B7FE048)
alloc(last_waypoint, 8)
registersymbol(last_waypoint)
label(code)
label(return)

newmem:
  mov [last_waypoint], rbx
code:
  vmovdqa [rbx+10],xmm0
  jmp return

GRABWAYPOINT:
  jmp newmem
return:
registersymbol(GRABWAYPOINT)

[DISABLE]

GRABWAYPOINT:
  db C5 F9 7F 43 10

unregistersymbol(GRABWAYPOINT)
unregistersymbol(last_waypoint)
dealloc(last_waypoint)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "ds.exe"+1B7FE048

"ds.exe"+1B7FE028: 89 4B 28                 -  mov [rbx+28],ecx
"ds.exe"+1B7FE02B: 89 C8                    -  mov eax,ecx
"ds.exe"+1B7FE02D: C1 E8 02                 -  shr eax,02
"ds.exe"+1B7FE030: A8 01                    -  test al,01
"ds.exe"+1B7FE032: 75 06                    -  jne ds.exe+1B7FE03A
"ds.exe"+1B7FE034: 83 C9 04                 -  or ecx,04
"ds.exe"+1B7FE037: 89 4B 28                 -  mov [rbx+28],ecx
"ds.exe"+1B7FE03A: C5 F8 10 07              -  vmovups xmm0,[rdi]
"ds.exe"+1B7FE03E: 0F B6 4C 24 60           -  movzx ecx,byte ptr [rsp+60]
"ds.exe"+1B7FE043: 0F B6 44 24 68           -  movzx eax,byte ptr [rsp+68]
// ---------- INJECTING HERE ----------
"ds.exe"+1B7FE048: C5 F9 7F 43 10           -  vmovdqa [rbx+10],xmm0
// ---------- DONE INJECTING  ----------
"ds.exe"+1B7FE04D: 88 43 43                 -  mov [rbx+43],al
"ds.exe"+1B7FE050: 88 4B 41                 -  mov [rbx+41],cl
"ds.exe"+1B7FE053: 88 4B 42                 -  mov [rbx+42],cl
"ds.exe"+1B7FE056: 44 88 73 4C              -  mov [rbx+4C],r14l
"ds.exe"+1B7FE05A: 44 88 7B 4D              -  mov [rbx+4D],r15l
"ds.exe"+1B7FE05E: 8B 86 F0 5E 00 00        -  mov eax,[rsi+00005EF0]
"ds.exe"+1B7FE064: 83 C8 04                 -  or eax,04
"ds.exe"+1B7FE067: 89 86 F0 5E 00 00        -  mov [rsi+00005EF0],eax
"ds.exe"+1B7FE06D: 84 C9                    -  test cl,cl
"ds.exe"+1B7FE06F: 74 0A                    -  je ds.exe+1B7FE07B
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>582</ID>
              <Description>"WayX"</Description>
              <VariableType>Float</VariableType>
              <Address>last_waypoint</Address>
              <Offsets>
                <Offset>10</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>583</ID>
              <Description>"WayY"</Description>
              <VariableType>Float</VariableType>
              <Address>last_waypoint</Address>
              <Offsets>
                <Offset>14</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>584</ID>
              <Description>"WayZ"</Description>
              <VariableType>Float</VariableType>
              <Address>last_waypoint</Address>
              <Offsets>
                <Offset>18</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>565</ID>
          <Description>"GRAB VEHICLE COORDINATES"</Description>
          <Options moHideChildren="1"/>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : ds.exe
  Version: 
  Date   : 2020-08-15
  Author : SenorPlebeian

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(GRAB_VEHICLE_COORDS,ds.exe,1F * * * * C8 00 00 00 C5 F8 11 87 78 08 00 00) // should be unique
alloc(newmem,$1000,"ds.exe"+2BF86A6)
alloc(vehcoordinates, 8)
registersymbol(vehcoordinates)
label(code)
label(return)

newmem:
  mov [vehcoordinates], rdi
code:
  vmovups [rdi+00000878],xmm0
  jmp return

GRAB_VEHICLE_COORDS+09:
  jmp newmem
  nop 3
return:
registersymbol(GRAB_VEHICLE_COORDS)

[DISABLE]

GRAB_VEHICLE_COORDS+09:
  db C5 F8 11 87 78 08 00 00

unregistersymbol(GRAB_VEHICLE_COORDS)
unregistersymbol(vehcoordinates)
dealloc(vehcoordinates)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "ds.exe"+2BF86A6

"ds.exe"+2BF8669: 48 8D 8F 90 08 00 00     -  lea rcx,[rdi+00000890]
"ds.exe"+2BF8670: C5 F8 28 74 24 30        -  vmovaps xmm6,[rsp+30]
"ds.exe"+2BF8676: 48 8B 5C 24 50           -  mov rbx,[rsp+50]
"ds.exe"+2BF867B: 74 21                    -  je ds.exe+2BF869E
"ds.exe"+2BF867D: C5 F8 10 87 F8 08 00 00  -  vmovups xmm0,[rdi+000008F8]
"ds.exe"+2BF8685: C5 F8 11 87 78 08 00 00  -  vmovups [rdi+00000878],xmm0
"ds.exe"+2BF868D: C5 FB 10 8F 08 09 00 00  -  vmovsd xmm1,[rdi+00000908]
"ds.exe"+2BF8695: 48 8D 87 10 09 00 00     -  lea rax,[rdi+00000910]
"ds.exe"+2BF869C: EB 1F                    -  jmp ds.exe+2BF86BD
"ds.exe"+2BF869E: C5 F8 10 87 C8 00 00 00  -  vmovups xmm0,[rdi+000000C8]
// ---------- INJECTING HERE ----------
"ds.exe"+2BF86A6: C5 F8 11 87 78 08 00 00  -  vmovups [rdi+00000878],xmm0
// ---------- DONE INJECTING  ----------
"ds.exe"+2BF86AE: C5 FB 10 8F D8 00 00 00  -  vmovsd xmm1,[rdi+000000D8]
"ds.exe"+2BF86B6: 48 8D 87 E0 00 00 00     -  lea rax,[rdi+000000E0]
"ds.exe"+2BF86BD: C5 FB 11 8F 88 08 00 00  -  vmovsd [rdi+00000888],xmm1
"ds.exe"+2BF86C5: 48 3B C8                 -  cmp rcx,rax
"ds.exe"+2BF86C8: 74 0E                    -  je ds.exe+2BF86D8
"ds.exe"+2BF86CA: C5 FC 10 00              -  vmovups ymm0,[rax]
"ds.exe"+2BF86CE: C5 FC 11 01              -  vmovups [rcx],ymm0
"ds.exe"+2BF86D2: 8B 40 20                 -  mov eax,[rax+20]
"ds.exe"+2BF86D5: 89 41 20                 -  mov [rcx+20],eax
"ds.exe"+2BF86D8: 83 8F 38 05 00 00 04     -  or dword ptr [rdi+00000538],04
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>566</ID>
              <Description>"Veh X"</Description>
              <Options moRecursiveSetValue="1"/>
              <VariableType>Double</VariableType>
              <Address>vehcoordinates</Address>
              <Offsets>
                <Offset>878</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>99</Key>
                  </Keys>
                  <Value>(WayX)</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
              <CheatEntries>
                <CheatEntry>
                  <ID>575</ID>
                  <Description>"Secondary Veh X"</Description>
                  <VariableType>Double</VariableType>
                  <Address>-7B0</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>99</Key>
                      </Keys>
                      <Value>(WayX)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>573</ID>
              <Description>"Veh Y"</Description>
              <Options moRecursiveSetValue="1"/>
              <VariableType>Double</VariableType>
              <Address>vehcoordinates</Address>
              <Offsets>
                <Offset>880</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>99</Key>
                  </Keys>
                  <Value>(WayY)</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
              <CheatEntries>
                <CheatEntry>
                  <ID>576</ID>
                  <Description>"Secondary Veh Y"</Description>
                  <VariableType>Double</VariableType>
                  <Address>-7B0</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>99</Key>
                      </Keys>
                      <Value>(WayY)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>574</ID>
              <Description>"Veh Z"</Description>
              <Options moRecursiveSetValue="1"/>
              <VariableType>Double</VariableType>
              <Address>vehcoordinates</Address>
              <Offsets>
                <Offset>888</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>99</Key>
                  </Keys>
                  <Value>(WayZ)</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
              <CheatEntries>
                <CheatEntry>
                  <ID>577</ID>
                  <Description>"Secondary Veh Z"</Description>
                  <VariableType>Double</VariableType>
                  <Address>-7B0</Address>
                  <Hotkeys>
                    <Hotkey>
                      <Action>Set Value</Action>
                      <Keys>
                        <Key>99</Key>
                      </Keys>
                      <Value>(WayZ)</Value>
                      <ID>0</ID>
                    </Hotkey>
                  </Hotkeys>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
I'm hoping to come back to these at some point and make them less shitty, but I'm swamped at work, so hopefully someone else can get some use out of these. At the very least, a guard clause against non existing waypoints would go a long way, or hopefully a way to actually disable the impact of falling, I've been using the fall damage script I have up there in tandem with a vehicle invulnerability script, but it still shoves Sam out of the vehicle which is just annoying.

On a side note, I've been noticing cheat engine complains about stuff like this:
vcomiss xmm0,xmm0,[rdx+34]

Which I've only been getting around by just straight up putting it as the bytes like so:
db C5 F8 2F 42 34

Is that the best way to go about it or is there a way to not pop out an error message in such cases?

AEBus
What is cheating?
What is cheating?
Posts: 4
Joined: Sat Feb 10, 2018 9:29 am
Reputation: 0

Re: Death Stranding | Cheat Engine Table v1.0

Post by AEBus »

SenorPlebeian, any way to add some coordinates to dropdown list in your script?

User avatar
SunBeam
Administration
Administration
Posts: 3155
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2321

Re: Death Stranding | Cheat Engine Table v1.0

Post by SunBeam »

Oh joy.. another update.. Guess I live another day by not rushing to post stuff :D

User avatar
QuarryTen
Fearless Donors
Fearless Donors
Posts: 23
Joined: Wed Sep 25, 2019 1:21 am
Reputation: 10

Re: Death Stranding | Cheat Engine Table v1.0

Post by QuarryTen »

I've added a few more scripts to my table.
Here is a list of them:
  • Infinite Exo Battery
  • Infinite Vehicle Battery
  • Infinite Boot Durability
  • Infinite Vehicle Durability (vehicle will still collect rust but the durability meter stays full)
  • 0% Backpack Luggage Damage (kind of buggy, may crash game/doesn't work on equipment)
  • 0% Backpack Luggage Container Damage (kind of buggy, may crash game/doesn't work on equipment)
  • Disable Urgent Mission Timers
Attachments
DSScripts.CT
(16.1 KiB) Downloaded 848 times

Post Reply