Truly,
reppin did amazing job on his fishbot(almost 2000 lines of code on autohotkey,wtf), yet after each minor update pointers become useless and you need to rescan them.
What i've found was some sort of internal event listener and i decided that i can abuse it to make myself a fishing bot without any pointers or stuff that i need to fix after each update.
Basically you need to hook this function:
Code:
8B 45 08 85 C0 74 11 8D
1)mov eax, [ebp + 0x8] (mov eax, [ebp + arg_0] on screenshot)
2)check if eax isn't empty, if it does - return to original code
3)check if eax contains pointer to string "fishing_hooked", if it doesn't - return to original code
4)if it has it - you caught the fish and can change your predefined variables/, if it doesn't - return to original code
Cheat engine's auto assembler POC code below:
Code:
[ENABLE]
aobscanmodule(INJECT,trove.exe,8B 45 08 85 C0 74 11 8D)
alloc(newmem,$1000)
label(code)
label(return)
newmem:
mov eax,[ebp+08]
test eax,eax
je code
cmp [eax],'fish'
jne code
cmp [eax+04],'ing_'
jne code
cmp [eax+08],'hook'
jne code
//this code will execute if fish has been caught, implement your own logic
push 0
push eax
push eax
push 0
call MessageBoxA
jmp code
code:
mov eax,[ebp+08]
test eax,eax
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 8B 45 08 85 C0
unregistersymbol(INJECT)
dealloc(newmem)
Atm developing internal version of fish bot based on the above concept.
Thus far it successfully fishes in all liquids, can also check if it doesn't have any bait or it's inventory full and notify user about it.