I've recently downloaded the table offered here viewtopic.php?t=553
and tried to understand how the scripts were working. I'm currently stuck on the Infinite Moneys script from Steve Andrew
Code: Select all
//Assassin's Creed 4: Black Flag
//Infinite Money, wood, metal, cloth, rum, sugar, etc...
//Steve Andrew
[enable]
alloc(InfiniteMoneyEtc,1024)
aobscan(MoneyEtcAddress,cc cc cc cc cc cc cc cc cc cc 8b 41 0c c3 cc cc cc cc cc cc cc cc cc cc cc cc 56 57 8b c1 be)
label(SetMoney)
...
label(Exit)
registersymbol(InfiniteMoneyEtc)
registersymbol(MoneyEtcAddress)
InfiniteMoneyEtc+200:
readmem(MoneyEtcAddress+0a,5)
InfiniteMoneyEtc:
push ebx
mov ebx,InfiniteMoneyEtc
movzx ebx,byte [ebx+202]
cmp esi,1 //money
je SetMoney
cmp esi,23//Sleeping Darts
je SetDarts
cmp esi,24//Berserk Darts
je SetDarts
...
cmp esi,29
jb Exit
cmp esi,31
ja Exit
//wood, metal, cloth, rum, sugar, unknown, heavy shot ammo,
//mortar shot ammo, & fire barrels!! :D
mov eax,#9999
mov [ecx+ebx],eax
pop ebx
ret
Exit:
mov eax,[ecx+ebx]
pop ebx
ret
SetMoney:
mov eax,#999999999
mov [ecx+ebx],eax
pop ebx
ret
...
MoneyEtcAddress+0a:
jmp InfiniteMoneyEtc
[disable]
MoneyEtcAddress+0a:
readmem(InfiniteMoneyEtc+200,5)
//db 8b 41 0c c3 cc
//mov eax,[ecx+0c]
//ret
//int 3
dealloc(InfiniteMoneyEtc)
unregistersymbol(InfiniteMoneyEtc)
unregistersymbol(MoneyEtcAddress)
However I must admit I understand less than half of what is done here...
Could someone please tell me what mean those lines ?
InfiniteMoneyEtc+200:
readmem(MoneyEtcAddress+0a,5)
InfiniteMoneyEtc:
push ebx
mov ebx,InfiniteMoneyEtc
movzx ebx,byte [ebx+202]
What is esi in
cmp esi,1 ?
And does anyone can guess how was the value determined for money (-> 1), dart (-> 23), ... ? When I check in the assembler what '8b 41 0c c3' access, I get different memory addresses that indeed point to money, ... but I don't get on what this comparison is made, or how the value was found (for finding darts, I just tried every values until I got to 23, which is not really efficient).
Thx a lot !