|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
Drivium Advanced Cheater Reputation: 0
Joined: 16 Apr 2013 Posts: 97
|
Posted: Tue May 24, 2022 11:39 pm Post subject: |
|
|
So, there's one small issue I realized - the address it stops on is not actually the address that allows me to change the game item (which is the whole point). I'm very careful to not click Yes until I see the object change in game, but it's still the wrong address. Not sure what's going on. It's like it changes the right address, then blow's past the address. It's like the prompt is behind by one and doesn't match the address shown. I'll add a video shortly.
Edit: https://streamable.com/eg639q
I know for a fact that the target address always ends in 0, but it never seems to display before or after changing it's value. Is there a way to ensure the last character of an address is 0? That would weed out a lot of bad results. |
|
Back to top |
|
|
ParkourPenguin I post too much Reputation: 140
Joined: 06 Jul 2014 Posts: 4299
|
Posted: Wed May 25, 2022 11:30 am Post subject: |
|
|
Have you considered using a pointer and/or code injection? aobscans for mutable data has always been bad IMO.
Anyway, if you read the documentation, aobscan has fastscan options:
Quote: | AOBScan("aobstring", protectionflags OPTIONAL, alignmenttype OPTIONAL, alignmentparam HALFOPTIONAL) | If the last digit is always 0, it should be something like:
Code: | AOBScan('12 34 AB CD', '+W-X-C', fsmLastDigits, '0') | fsmLastDigits, '0' means the last digit should be 0. fsmAligned means it should be aligned to a certain amount (e.g. '4' would be last digits 0, 4, 8, or C).
The address that's checked is the start of the pattern, so you might need to add some padding wildcards to align it properly. _________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
|
AylinCE Grandmaster Cheater Supreme Reputation: 32
Joined: 16 Feb 2017 Posts: 1259
|
Posted: Wed May 25, 2022 11:45 am Post subject: |
|
|
Drivium wrote: | So, there's one small issue I realized - the address it stops on is not actually the address that allows me to change the game item (which is the whole point). |
That's what I was wondering.
Manually find the correct address and expand your scan aob code until it is unique.
In this way, you will have pinpointed the correct address without a query.
Extend your aob code to include before and after with wildcards (??). _________________
|
|
Back to top |
|
|
Drivium Advanced Cheater Reputation: 0
Joined: 16 Apr 2013 Posts: 97
|
Posted: Wed May 25, 2022 3:19 pm Post subject: |
|
|
I did try the aob thing first. I searched on either side of my target value 25000 bytes. Only thing unique is my target value. Also, I can't get the pointer scan to return anything in Bluestacks (android emu) and hooking instructions also does not work. So, I'm trying to get creative. |
|
Back to top |
|
|
AylinCE Grandmaster Cheater Supreme Reputation: 32
Joined: 16 Feb 2017 Posts: 1259
|
Posted: Thu May 26, 2022 4:29 am Post subject: |
|
|
Aob not unique if there are 90 results.
Ok, if we order the symbols you assigned from 1-10, will making 10 deactivated symbols solve the problem?
Code: | unregistersymbol(block1)
unregistersymbol(block2) |
EDIT:
We added the symbols to a table and completed the deactivation code with the symbols added to the table.
You should test it.
Code: | [ENABLE]
{$lua}
if syntaxcheck then return end
local aobTbl = {}
local SymTbl = {} --symbol table
local check = 0
local findChnge = 0
if checkTimer then checkTimer.Destroy() checkTimer=nil end
checkTimer=createTimer(MainForm) checkTimer.Interval=1000
checkTimer.Enabled=false
function aob_register(sym)
checkTimer.Enabled=false
aa = tonumber(findChnge) + 10
if aa < #aobTbl then
for i = 1, 10 do
addy1 = tostring(aobTbl[tonumber(findChnge)])
--instr.destroy()
addy = tonumber(addy1, 16)
local findsym = sym..i
SymTbl[i] = findsym --> add symbol
unregisterSymbol(findsym)
registerSymbol(findsym, addy)
writeInteger(sym,"3868")
findChnge=tonumber(findChnge) + 1
if i==10 then
local answer= messageDialog('did it change?',mtWarning, mbYes,mbNo)
if answer == mrYes then
checkTimer.Enabled=false
else --If "mrNo" the loop will repeat to change 10 more addresses.
checkTimer.Enabled=true
end
end
end
else --The addresses listed in the table are sold out!
showMessage("Ops! Something went wrong!\nCode not found!")
end
end
function resTbl(aob)
checkTimer.Enabled=false
instr = AOBScan(aob, "+r+w")
if instr ~= nil then
for i=0,stringlist_getCount(instr) -1 do
aobTbl[i+1] = instr[i]
end
check = 1
aob_register("block")
end
end
--aob_register("block","e0 0e 00 00 ?? 00 ?? 00 ?? ?? ?? ?? ?? 00")
checkTimer.OnTimer=function()
if check==0 then
resTbl("e0 0e 00 00 ?? 00 ?? 00 ?? ?? ?? ?? ?? 00")
else
aob_register("block")
end
end
checkTimer.Enabled=true
{$asm}
[DISABLE]
{$lua}
for i,k in pairs(SymTbl) do
unregistersymbol(SymTbl[i])
end |
----------------------------->>>
I also recommend Nox Player over Bluestacks (BS).
To compare;
1) Requires additional settings in BS CE (DBK). Nox does not require additional settings, it is user-friendly.
2) BS memory scan is very slow. Nox gives faster results.
3) BS is based on system operation like "Psicial Memory". Nox is always easily connected to CE in the "NoxVMHandle.exe" process.
Just a recommendation. _________________
|
|
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
|
|