- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 113
- Reaction score
- 7
Boys, finally got around to parsing the latest build for The Seven Deadly Sins: Origin. With the game running on Unreal 5 and protected by Easy Anti-Cheat (EAC), these memory tweaks are useless unless you have a solid bypass running first. Don't go crying about a ban if you are injecting this without handling the EAC handles.
Managed to snag the updated pointers for the current shipping exe. Tested these on a burner, but keep it on the low-down.
Updated Offsets:
Key Pointers:
Automation Scripts:
For the lazy ones, here is the Lua logic for teleportation, enemy freezing, and full flight mode. Remember, the Fly Mode timer is set to 10ms intervals, so if your game stutters, check your background CPU usage.
Notes for the devs: The freeze enemy script will make the animations look jagged as hell because you're forcing float values on global/player pointers. It's expected behavior for an engine like UE5.
Has anyone found a cleaner way to bypass the movement clamping? I'm hitting a hard cap around 3000 on the speed pointer before the server-side correction kicks in. If you've found a way to patch the velocity check, drop your findings below.
Managed to snag the updated pointers for the current shipping exe. Tested these on a burner, but keep it on the low-down.
Updated Offsets:
Code:
GWorld: 0xBC45848
GNames: 0xB9E38C0
GObjects: 0xBAC7070
Key Pointers:
- Player Speed: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+68]
- Global Speed: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+20]+2A8]+3E0
- Gravity: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+188
- Jump Height: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+190
- No Clip: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+5D (Value type: 1 byte, set to -1 to enable)
- Movement Speed: [[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+280
Automation Scripts:
For the lazy ones, here is the Lua logic for teleportation, enemy freezing, and full flight mode. Remember, the Fly Mode timer is set to 10ms intervals, so if your game stutters, check your background CPU usage.
Code:
{$lua}
if syntaxcheck then return end
[ENABLE]
local script = {}
table.insert(script, "{$lua}")
table.insert(script, "[ENABLE]")
table.insert(script, "")
XCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+1F4"
YCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+1FC"
ZCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+204"
X = "writeFloat('"..XCoord.."',"..(readFloat(""..XCoord.."")..")")
table.insert(script, X)
Y = "writeFloat('"..YCoord.."',"..(readFloat(""..YCoord.."")..")")
table.insert(script, Y)
Z = "writeFloat('"..ZCoord.."',"..(readFloat(""..ZCoord.."")..")")
table.insert(script, Z)
table.insert(script, "")
table.insert(script, [[if not syntaxcheck then
synchronize(function()
local t = createTimer()
t.Interval,t.OnTimer = 500,function(tm)
tm.Destroy()
memrec.Active = false
end
end)
end]])
table.insert(script, "")
table.insert(script, "[DISABLE]")
MRLoc = AddressList.getMemoryRecordByDescription('Save This Location')
local mr = AddressList.createMemoryRecord()
mr.Type = vtAutoAssembler
mr.appendToEntry(MRLoc)
mr.Description = 'Load/Teleport (Name_this_location)'
mr.Script = table.concat(script, '\n')
if not syntaxcheck then
synchronize(function()
local t = createTimer()
t.Interval,t.OnTimer = 500,function(tm)
tm.Destroy()
memrec.Active = false
end
end)
end
[DISABLE]
Code:
{$lua}
if syntaxcheck then return end
-- ===== POINTERS (UPDATED) =====
local gravityPtr = '[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+188'
local movementPtr = '[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+221'
local speedPtr = '[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+274'
local playerZPtr = '[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+204'
[ENABLE]
local function readFloatSafe(ptr)
local a = getAddress(ptr)
if a then return readFloat(a) end
end
local function writeFloatSafe(ptr, val)
local a = getAddress(ptr)
if a then writeFloat(a, val) end
end
local function writeByteSafe(ptr, val)
local a = getAddress(ptr)
if a then writeBytes(a, val) end
end
writeFloatSafe(speedPtr, 600)
-- ===== TIMER LOOP =====
flyTimer = createTimer(nil)
flyTimer.Interval = 10
flyTimer.OnTimer = function()
-- force fly mode + no gravity
writeByteSafe(movementPtr, 5)
writeFloatSafe(gravityPtr, 0.0)
-- clamp speed (600 - 3000)
local speed = readFloatSafe(speedPtr)
if speed then
if speed < 600 then writeFloatSafe(speedPtr, 600)
elseif speed > 3000 then writeFloatSafe(speedPtr, 3000)
end
end
end
-- ===== CONTROLS =====
function increaseSpeed()
local s = readFloatSafe(speedPtr)
if s then
s = math.min(s + 200, 3000)
writeFloatSafe(speedPtr, s)
end
end
function decreaseSpeed()
local s = readFloatSafe(speedPtr)
if s then
s = math.max(s - 200, 600)
writeFloatSafe(speedPtr, s)
end
end
function increaseHeight()
local z = readFloatSafe(playerZPtr)
if z then writeFloatSafe(playerZPtr, z + 0.1) end
end
function decreaseHeight()
local z = readFloatSafe(playerZPtr)
if z then writeFloatSafe(playerZPtr, z - 0.1) end
end
-- ===== HOTKEYS =====
hkRight = createHotkey(increaseSpeed, VK_RIGHT)
hkLeft = createHotkey(decreaseSpeed, VK_LEFT)
hkUp = createHotkey(increaseHeight, VK_UP)
hkDown = createHotkey(decreaseHeight, VK_DOWN)
[DISABLE]
-- stop timer
if flyTimer then
flyTimer.destroy()
flyTimer = nil
end
-- restore
writeFloat(getAddress('[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+188'), 3.799999952)
writeBytes(getAddress('[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+221'), 1)
writeFloat(getAddress('[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+330]+274'), 200)
-- remove hotkeys
if hkRight then hkRight.destroy() end
if hkLeft then hkLeft.destroy() end
if hkUp then hkUp.destroy() end
if hkDown then hkDown.destroy() end
Code:
{$lua}
if syntaxcheck then return end
[ENABLE]
local script = {}
table.insert(script, "{$lua}")
table.insert(script, "[ENABLE]")
table.insert(script, "")
XCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+1F4"
YCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+1FC"
ZCoord = "[[[[["SevenDeadlySins_Origin-Win64-Shipping.exe"+0BDA26A8]+220]+30]+2E8]+1B8]+204"
X = "writeFloat('"..XCoord.."',"..(readFloat(""..XCoord.."")..")")
table.insert(script, X)
Y = "writeFloat('"..YCoord.."',"..(readFloat(""..YCoord.."")..")")
table.insert(script, Y)
Z = "writeFloat('"..ZCoord.."',"..(readFloat(""..ZCoord.."")..")")
table.insert(script, Z)
table.insert(script, "")
table.insert(script, [[if not syntaxcheck then
synchronize(function()
local t = createTimer()
t.Interval,t.OnTimer = 500,function(tm)
tm.Destroy()
memrec.Active = false
end
end)
end]])
table.insert(script, "")
table.insert(script, "[DISABLE]")
MRLoc = AddressList.getMemoryRecordByDescription('Save This Location')
local mr = AddressList.createMemoryRecord()
mr.Type = vtAutoAssembler
mr.appendToEntry(MRLoc)
mr.Description = 'Load/Teleport (Name_this_location)'
mr.Script = table.concat(script, '\n')
if not syntaxcheck then
synchronize(function()
local t = createTimer()
t.Interval,t.OnTimer = 500,function(tm)
tm.Destroy()
memrec.Active = false
end
end)
end
[DISABLE]
Code:
{$lua}
if syntaxcheck then return end
local base = getAddress("SevenDeadlySins_Origin-Win64-Shipping.exe")+0x0BDA26A8
[ENABLE]
if speedTimer then speedTimer.destroy() end
speedTimer = createTimer(nil, false)
speedTimer.Interval = 50 -- runs every 50ms
speedTimer.OnTimer = function()
local success, playerPtr = pcall(function()
local p = readPointer(base)
p = readPointer(p + 0x220)
p = readPointer(p + 0x30)
p = readPointer(p + 0x2E8)
return p + 0x68
end)
local success2, globalPtr = pcall(function()
local g = readPointer(base)
g = readPointer(g + 0x220)
g = readPointer(g + 0x30)
g = readPointer(g + 0x20)
g = readPointer(g + 0x2A8)
return g + 0x3E0
end)
if success and playerPtr then
writeFloat(playerPtr, 100.0)
end
if success2 and globalPtr then
writeFloat(globalPtr, 0.01)
end
end
speedTimer.Enabled = true
[DISABLE]
pcall(function()
local p = readPointer(base)
p = readPointer(p + 0x220)
p = readPointer(p + 0x30)
p = readPointer(p + 0x2E8)
writeFloat(p + 0x68, 1.0)
end)
pcall(function()
local g = readPointer(base)
g = readPointer(g + 0x220)
g = readPointer(g + 0x30)
g = readPointer(g + 0x20)
g = readPointer(g + 0x2A8)
writeFloat(g + 0x3E0, 1.0)
end)
-- destroy timer
if speedTimer then
speedTimer.destroy()
speedTimer = nil
end
Notes for the devs: The freeze enemy script will make the animations look jagged as hell because you're forcing float values on global/player pointers. It's expected behavior for an engine like UE5.
Has anyone found a cleaner way to bypass the movement clamping? I'm hitting a hard cap around 3000 on the speed pointer before the server-side correction kicks in. If you've found a way to patch the velocity check, drop your findings below.