| View previous topic :: View next topic |
| Author |
Message |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
Posted: Sat Jun 16, 2012 8:45 am Post subject: Auto-Assembly vs multiple AoBs |
|
|
When i use
| Code: |
[ENABLE]
Aobscan(_place,27 61 95 20)
label(place)
registersymbol(place)
_place:
place:
db 26 61 95 20
[DISABLE]
place:
db 27 61 95 20 |
it only changes 1 out of 3 AoBs. Any way to change all 3 in 1 script?
|
|
| Back to top |
|
 |
mgr.inz.Player I post too much
Reputation: 223
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Sat Jun 16, 2012 8:57 am Post subject: |
|
|
Question.
Write down addresses of those arrays. Try few times (restart target exe process).
If address2 - address1 is constant
and
address3 - address1 is constant
you can try this:
| Code: | [ENABLE]
Aobscan(_place,27 61 95 20)
label(place)
registersymbol(place)
_place: // points to address1
place:
db 26 61 95 20
_place+constant1: // points to address2
db 26 61 95 20
_place+constant2: // points to address3
db 26 61 95 20
[DISABLE]
place:
db 27 61 95 20
place+constant1: // points to address2
db 27 61 95 20
place+constant2: // points to address3
db 27 61 95 20 |
of course you use hex values instead "constantX".
_________________
|
|
| Back to top |
|
 |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
Posted: Sat Jun 16, 2012 9:05 am Post subject: |
|
|
| Adresses are not costant. Its a flash game.
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 475
Joined: 09 May 2003 Posts: 25982 Location: The netherlands
|
Posted: Sat Jun 16, 2012 9:46 am Post subject: |
|
|
the lua variant of aobscan returns all addresses
_________________
Tools give you results. Knowledge gives you control.
Like my help? Join me on Patreon so i can keep helping |
|
| Back to top |
|
 |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
Posted: Sat Jun 16, 2012 11:08 am Post subject: |
|
|
I did a little workaround it since even though the addresses change every time, difference between them is always constant. It works here but for 50+ found addresses it will suck ;p Tried to use your multiple AoBscan lua, but tutorial is not working and i dont really know how to use it
| Code: | [ENABLE]
Aobscan(_place,27 61 95 20)
label(place)
registersymbol(place)
_place:
place:
db 26 61 95 20
_place:
place+63:
db 26 61 95 20
_place:
place+73:
db 26 61 95 20
[DISABLE]
place:
db 27 61 95 20
place+63:
db 27 61 95 20
place+73:
db 27 61 95 20 |
I dont know why i have to use _place: in ENABLE every time, but i dont have to in DISABLE :/ Nvm it doesnt work ... crashes the Flash Plugin. But only with combination with other plugis. When i run this one alone it works. Running it with this for example cause flash to crash:
| Code: | [ENABLE]
Aobscan(_place1,24 01 d0 66 ae 08 66 6c 66 dd 07 60 6d 66 e2 1b)
label(place1)
registersymbol(place1)
_place1:
place1:
db 24 64 d0 66 ae 08 66 6c 66 dd 07 60 6d 66 e2 1b
[DISABLE]
place1:
db 24 01 d0 66 ae 08 66 6c 66 dd 07 60 6d 66 e2 1b |
EDIT2: When i kicked out labels and registersumbols from scripts it suddenly works ... Im not as smart as i thought i am -_-
|
|
| Back to top |
|
 |
mgr.inz.Player I post too much
Reputation: 223
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Sat Jun 16, 2012 1:24 pm Post subject: |
|
|
| oLaudix wrote: | | Adresses are not costant. Its a flash game. |
When I wrote:
if address2 - address1 is constant
(...)
I meant: address2 minus address1
which is: difference/distance between addresses.
| Code: | [ENABLE]
Aobscan(placeaob,27 61 95 20)
label(place1)
label(place2)
label(place3)
registersymbol(place1)
registersymbol(place2)
registersymbol(place3)
placeaob: // points to address1
place1:
db 26 61 95 20
placeaob+63:
place2: // points to address2
db 26 61 95 20
placeaob+73:
place3: // points to address3
db 26 61 95 20
[DISABLE]
place1: // points to address2
db 27 61 95 20
place2: // points to address2
db 27 61 95 20
place3: // points to address3
db 27 61 95 20
unregistersymbol(place1)
unregistersymbol(place2)
unregistersymbol(place3) |
@DB
Why this do not work: (?)
| Code: | [ENABLE]
aobscan(mycodeaob,75 06 C7 00 04 03 02 01)
label(mycode)
registersymbol(mycode)
mycodeaob:
mycode:
db 90 90
mycodeaob+30:
db 90 90
[DISABLE]
mycode:
db 75 06
mycode+30:
db 75 06 |
It only works when I comment "mycode+30:" thing, save table as file.ct , edit that file with notepad. It has something to do with "auto assemble edit" window.
_________________
|
|
| Back to top |
|
 |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
Posted: Sat Jun 16, 2012 3:22 pm Post subject: |
|
|
Now Im really really confused. This code works
| Code: | [ENABLE]
Aobscan(_place,27 61 95 20)
label(place)
registersymbol(place)
_place:
place:
db 26 61 95 20
place+63:
db 26 61 95 20
place+73:
db 26 61 95 20
[DISABLE]
place:
db 27 61 95 20
place+63:
db 27 61 95 20
place+73:
db 27 61 95 20 |
And this, that is based on the first one doest. WHAT THE HELL! They are never used at the same time since they are for different games. Why this doesnt work if its practically same :/
| Code: | [ENABLE]
Aobscan(_place,66 c6 05 24 15 66 f9 0e 24 01 a0)
label(place)
registersymbol(place)
_place:
place:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+A247:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
[DISABLE]
place:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A247:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 01 a0 |
When i tried to change all place and _place to place5 and _place5 i was getting error This addres specifier is not valid. After restarting of CE it not only didnt throw up error, but also works in game. MIND BLOWN
|
|
| Back to top |
|
 |
mgr.inz.Player I post too much
Reputation: 223
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Mon Jun 18, 2012 8:08 am Post subject: |
|
|
When we use aobscan we have to use registersymbol (when we want a quick disable functionality).
You messed your cheattable with userdefined symbols. You didn't use unregistersymbol
My advise: open CT file (cheat table), press ctrl+m, then ctrl+u. Delete all userdefined symbols.
Anyway, working script
| Code: |
[ENABLE]
Aobscan(_place,66 c6 05 24 15 66 f9 0e 24 01 a0)
label(place)
registersymbol(place)
_place:
place:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
_place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
_place+A247:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
_place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
_place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
[DISABLE]
place:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A247:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
unregistersymbol(place) |
It can't be written in "auto assemble edit" window. But you can place // string for all place+XXXXXX: in DISABLE section.
Save that cheattable. Open just saved ct file in notepad, and uncomment previously commented lines.
Alternative, use other aobscan in DISABLE section:
| Code: |
[ENABLE]
Aobscan(place,66 c6 05 24 15 66 f9 0e 24 01 a0)
place:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+A247:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 00 a0
[DISABLE]
Aobscan(place,66 c6 05 24 15 66 f9 0e 24 00 a0)
place:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A0AC:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+A247:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+14C05:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
place+2DD8B:
db 66 c6 05 24 15 66 f9 0e 24 01 a0
|
_________________
Last edited by mgr.inz.Player on Tue Jun 19, 2012 5:34 am; edited 1 time in total |
|
| Back to top |
|
 |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
|
| Back to top |
|
 |
mgr.inz.Player I post too much
Reputation: 223
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Tue Jun 19, 2012 5:47 am Post subject: |
|
|
"i would really like to use it."
It is a simple script and cheat table is easy to recreate.
_________________
|
|
| Back to top |
|
 |
oLaudix Expert Cheater
Reputation: 3
Joined: 25 Mar 2010 Posts: 138
|
Posted: Tue Jun 19, 2012 10:02 am Post subject: |
|
|
| mgr.inz.Player wrote: | "i would really like to use it."
It is a simple script and cheat table is easy to recreate. |
Well i dont really know how to use lua scripts inside AA or other way around, so plz elaborate.
Ok i managed to work out smth like this:
| Code: | function _memrec_AuraRangev02_activating(mr)
results=AOBScan("27 61 95 20")
if (results~=nil) then
count=stringlist_getCount(results)
for i = 1, count do
address=stringlist_getString(results,i-1)
script=[[
label(aobresult_myCheat)
registersymbol(aobresult_myCheat)
]]..address..[[:
aobresult_myCheat:
db 26
]]
autoAssemble(script);
end
object_destroy(results)
results=nil
end
end |
this one works only for 27 61 95 20 AoB when i turn AuraRangev02 script on. Is it possible to somehow use searching for multiple AoBs for cpl different scripts? Also can I somehow trigger this script inside AA so itll just return addresses to use in AA script?
Too bad i cant use lua scripts same way as AA scripts
Now i found this. I think its exacly what i need as long as i can call the function from inside AA script. Yea, i dont know how to use it :/
| Code: | -- Scan for bytes and map to an address label
-- varSearch is the string to search for
-- varCount is the index of the scan to find (1 based)
-- varLabel is the label to create from the address found
function globalScanAndLabel(varSearch, varCount, varLabel)
local varResults = AOBScan( varSearch );
local bFound = false
if (varResults ~= nil) then
local varTotal = stringlist_getCount(varResults)
if (varTotal >= varCount) then
local varAddress = stringlist_getString(varResults, varCount - 1)
registerSymbol(varLabel, varAddress)
bFound = true
end
object_destroy(varResults)
varResults = nil
end
if ( bFound ) then
return varLabel
else
return nil
end
end |
EDIT2: And now i know how to use it and it works yay
|
|
| Back to top |
|
 |
jgoemat Master Cheater
Reputation: 23
Joined: 25 Sep 2011 Posts: 266
|
Posted: Wed Aug 08, 2012 3:23 am Post subject: Re: Auto-Assembly vs multiple AoBs |
|
|
Can you just increase the number of bytes you scan for until you get a single match, or are there large areas of duplicate code? You can use ?? in your scan to ignore addresses that might change:
| Code: | // 00 75 00 - add [ebp+00],dh
// 69 00 6C006400 - imul eax,[eax],ShippingPC-Bzb2Game.exe+24006C
// 46 - inc esi
// use ?? for changing address
db 00 75 00 69 00 ?? ?? ?? ?? 46 |
| Code: | //------------------------------------------------------------------------------
[ENABLE]
//------------------------------------------------------------------------------
Aobscan(AOB_1,66 c6 05 24 15 66 f9 0e 24 01 a0 c8 15 ?? ?? ?? ?? 66 c6 05 89 44 4b 17)
Aobscan(AOB_2,66 c6 05 24 15 66 f9 0e 24 01 a0 c8 15 ?? ?? ?? ?? 66 c6 04 89 44 4b 17)
label(REPLACE_1)
label(REPLACE_2)
registersymbol(REPLACE_1)
registersymbol(REPLACE_2)
AOB_1+9:
REPLACE_1:
db 00
AOB_2+9:
REPLACE_2:
db 00
//------------------------------------------------------------------------------
[DISABLE]
//------------------------------------------------------------------------------
REPLACE_1:
db 01
REPLACE_2:
db 01
unregistersymbol(REPLACE_1)
unregistersymbol(REPLACE_2) |
|
|
| Back to top |
|
 |
|