Manji wrote: ↑Tue Apr 28, 2020 9:39 pm
...
Manji, someone reported the DLL crashed for them on Steam. So I dunno, try it out and please confirm. Just make sure you're at least at main menu when you run the injector, please. Anytime before that the crash will surely happen
Vovics wrote: ↑Mon Apr 27, 2020 5:43 pm
...
I took a look at the original table from the BL3 Discord and wanted to see how much is his work, how much the original author's. I must say all that Lua code is nice to inspect and figure out how it works
If this is your work alone, then kudos to you,
Vovics! This is when you'll see something unusual
I would like to kindly request permission to use/reuse some of the Lua logic (functions, adapted) in there for other games or projects of mine, as I start appreciating Lua more and more for what it's capable of doing.
So, Vovics, would you mind if I reuse some of the Lua stuff in the future?
EDIT: Some more tips
You may use them if you like:
Code: Select all
local ptr2=tonumber('0x'..ptr1[0])
local z=readBytes(ptr2+7,4, true)
local z2=byteTableToDword(z)
to
Code: Select all
local ptr2=tonumber(ptr1[0], 16) + 0x4 -- to offset to where you want to read the FNamesArray pointer
--[[
Borderlands3.exe+15E3FB0 - 48 83 EC 28 - sub rsp,28 // 4 bytes here
Borderlands3.exe+15E3FB4 - 48 8B 05 AD853A05 - mov rax,[Borderlands3.exe+698C568]
]]
local z2=ptr2 + readInteger( ptr2 + 0x3, true ) + 0x7 -- this gives you the computed address directly, without the need to do readBytes + byteTableToDword
-- formula is dest = rip + readInteger( rip + offset_to_dw, signed ) + size_of_operand
-- rip = Borderlands3.exe+15E3FB4 (that's why we do "ptr2=tonumber(ptr1[0], 16) + 0x4")
-- offset_to_dw = 3 (48 8B 05 xx xx xx xx ); 48 is at offset 0, 8B is at offset 1, 05 is at offset 2, first byte in the dword at offset 3
-- signed = true, cuz we want this, as unsigned causes issues with ASLR
-- size_of_operand = 7 (48 8B 05 xx xx xx xx = 7 bytes)