 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
Game Hacking Dojo Master Cheater
Reputation: 1
Joined: 17 Sep 2023 Posts: 250
|
Posted: Sun Jun 16, 2024 9:51 am Post subject: Adding an Array of Addresses |
|
|
Whenever I come across an array I have to either add it manually or make something in C++ to aid me with the burden.
Is there a way I could add addresses starting from the selected address, ending after the defined number of addresses and separated by given bytes?
Basically, a for loop that will add an address after the last added address until the count of addresses is reached.
Thank you
|
|
| Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 37
Joined: 16 Feb 2017 Posts: 1528
|
Posted: Sun Jun 16, 2024 1:34 pm Post subject: |
|
|
Here's an example to get you started.
Sometimes ideas are explained better with code examples.
| Code: | function aobSrc(search,cn1,b1,b2,b3)
local resTbl = {"Code not found!"}
fHex = function(s) return string.format("%02X", s) end
local aobs1=AOBScan(search)
if aobs1~=nil then
print("0 "..aobs1[0]) -- first address..
for i=0, aobs1.count -1 do
if i==cn1 then
resTbl[1] = aobs1[i]
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b3)
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b2)
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b3)
end
end
aobs1.Destroy()
end
return resTbl
end
src1 = "E8 03 00 00 ?? ?? 00 00"
findTbl = aobSrc(src1,8,8,8,8)
-- result
for l,n in pairs(findTbl) do
print(l,n)
end |
result:
0 0063DDB6 --> first address..
1 02548E90
2 02548E90+08
3 02548E90+08
4 02548E90+08
_________________
|
|
| Back to top |
|
 |
Game Hacking Dojo Master Cheater
Reputation: 1
Joined: 17 Sep 2023 Posts: 250
|
Posted: Sun Jun 16, 2024 3:51 pm Post subject: |
|
|
I'm so sorry it means I did a terrible job explaining my issue.
Imagine an address in my cheat table that points to the beginning of the array of items in my inventory. The inventory size can go as much as 200 items (200*(address_size) bytes).
I want to add this much of addresses (entries) to my cheat table starting from the beginning of the array
I think I'm going to use
| Code: | getAddressList().getSelectedRecord()
getAddressList().createMemoryRecord() |
I'm asking because I'm not sure if that's possible size changing the entries properties requires the use of the GUI
Not sure if there is another way
| Quote: | doDescriptionChange() : Will show the GUI window to change the description of the selected entry
doAddressChange() : Will show the GUI window to change the address of the selected entry
doTypeChange() : Will show the GUI window to change the type of the selected entries
doValueChange() : Will show the GUI window to change the value of the selected entries |
|
|
| Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 37
Joined: 16 Feb 2017 Posts: 1528
|
Posted: Sun Jun 16, 2024 5:54 pm Post subject: |
|
|
Get what you need from the code.
Or let's continue the solution through approximate codes.
| Code: | --------------------------------------------------
function getByteString(address, bytecount)
local bytes = readBytes(address, bytecount, true)
if bytes then
local result = ""
for i = 1, #bytes do
if #result > 0 then result = result .. "" end
result = result .. string.format("%02X", bytes[i]) end
return result end
end
function stringFromHex(aobs)
local fmttext = ""
for wrd in aobs:gmatch("%x%x") do
num = tonumber(wrd,16)
--print("\nFormat byte:\n"..wrd.." to "..num)
if num~=0 then
fmttext = fmttext..string.char(tonumber(num))
else
fmttext = fmttext..""
end
end
return fmttext
end
---------------------------------------------------
local alst = getAddressList()
function addAddres1(adrr,val,desc)
local memRec = alst.createMemoryRecord()
--memRec.CustomTypeName = "Float Big Endian"
memRec.Type = 6 --vtString=6, vtByteArray=8, vtDword=2
--memRec.ShowAsHex = true -- array of byte
memRec.Description = desc
memRec.Address = adrr
memRec.Value = val
end
---------------------------------------------------
function aobSrc(search,cn1,b1,b2,b3)
local resTbl = {"Code not found!"}
fHex = function(s) return string.format("%02X", s) end
local aobs1=AOBScan(search)
if aobs1~=nil then
print("0 "..aobs1[0]) -- first address..
for i=0, aobs1.count -1 do
if i==cn1 then
resTbl[1] = aobs1[i]
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b3)
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b2)
resTbl[#resTbl + 1] = aobs1[i].."+"..fHex(b3)
end
end
aobs1.Destroy()
end
return resTbl
end
src1 = "4D 65 6D 73 63 61 6E"
findTbl = aobSrc(src1,8,4,8,12)
-- result
for l,n in pairs(findTbl) do
addr1 = n
desc = "desc"..l
val = readString(addr1)
addAddres1(addr1,val,desc)
end |
_________________
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|