AOB Scan Autoit

04/06/2014 03:41 golle12#1
Guten Abend liebe Community

und zwar habe ich folgende Frage ich habe in cheat engine folgenden Code welcher mit Autoassembler leicht zu machen ist nun möchte ich diesen aber in Autoit implemenitieren hoffe ihr könnt mir helfen wie ich es schaffe das er das script in Autoit genauso so in den prozess injected wie in Cheat Engine.:handsdown:

Hier der Code:
PHP Code:
[ENABLE]
alloc(newmem,2048//2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
alloc(name_change,1337)
AOBscan(addy,?? ?? ?? ?? ?? ?? ?? ?? ??)
registersymbol(name_change)

newmem//this is allocated memory, you have read,write,execute access
mov eax,name_change
jmp 
exit

originalcode:
mov eax,00000000

exit:
jmp returnhere

addy
:
db 90 90
jmp newmem
returnhere
:

name_change:
db 78 44 6f 6e 75 74 2d
[DISABLE
04/06/2014 11:37 Paraly#2
Ich hab mich noch nicht mit Assembler in Autoit beschäftigt aber villeicht hilft dir das [Only registered and activated users can see links. Click Here To Register...] hier das sieht recht gut aus.
04/06/2014 12:40 alpines#3
Kannst du nicht mittels Detours eine Stelle wo du das haben willst detouren, den Code reinschreiben und wieder Detour zurück auf die vorherige Stelle + 1 machen? Dann hätteste das ja praktisch injiziert.
04/06/2014 12:54 golle12#4
Aber eine Detour mit Autoit ? Ich denke das geht nur mit C++. Wie soll das gehen ?

Und wie ist die Umsetztung mit C++ dem Code oben, denn im Zielprozessbefindet sich das noch nicht erst wenn der code injected wird erscheint die Adresse wie lässt sich die in C++ realieieren :)
04/06/2014 14:22 -SoulCr4ck-#5
Was du dort hast ist ein namechanger ..hab dieses Script selber..es hookt eine Funktion fürn namechanger player to player..
Hab des schon in autoit, c++ und vb.net umgesetzt aber ich würde dir raten erstmal richtig Assembler zu lernen ..dann verstehst du es ein wenig besser und kannst es selber mit der nomadmemory und ein paar dllcall umsetzen :p
04/06/2014 14:25 golle12#6
Quote:
Originally Posted by x[Deadline View Post
Was du dort hast ist ein namechanger ..hab dieses Script selber..es hookt eine Funktion fürn namechanger player to player..
Hab des schon in autoit, c++ und vb.net umgesetzt aber ich würde dir raten erstmal richtig Assembler zu lernen ..dann verstehst du es ein wenig besser und kannst es selber mit der nomadmemory und ein paar dllcall umsetzen :p
Ich sage ja nicht das ich dies nicht verstehe aber wenn ich versuche nach den aob zu scannen findet Autoit dies nicht. selbst mit einer Pointer suche wird das nichts ...
04/06/2014 14:28 -SoulCr4ck-#7
Quote:
Originally Posted by golle12 View Post
Ich sage ja nicht das ich dies nicht verstehe aber wenn ich versuche nach den aob zu scannen findet Autoit dies nicht. selbst mit einer Pointer suche wird das nichts ...
Achso welchen Bereich scannst du denn ?:o
Von wo bis wo ..genug rechte ?;o
Wäre hilfreich wenn du deine source adden bzw. Privat zuschicken würdest.
04/06/2014 14:42 alpines#8
Detours sind nichts mehr als einfache MemoryWrites. Das kriegt man mit AutoIt auch hin.
04/06/2014 19:43 golle12#9
und wie sind diese zu realisieren O.o ?
04/06/2014 19:52 alpines#10
Da gibts viele Tutorials dazu, einfach mal anschauen. Sind fast alle in C++ aber das Grundgerüst kann man ja übernehmen.
04/06/2014 21:17 golle12#11
PHP Code:
#include <NomadMemory.au3>
#RequireAdmin
SetPrivilege("SeDebugPrivilege"1)
$MemOpen _MemoryOpen(ProcessExists("S3League.exe"))
$aob _AOBScan($MemOpen"?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??")
_MemoryClose($MemOpen)
MsgBox(0""$aob)

Func _AOBScan($handle$sig)
    
$sig StringRegExpReplace($sig"[^0123456789ABCDEFabcdef.]""")
    
$start_addr 0x00000000
    $end_Addr 
0x0FFFFFFF
    
For $addr $start_addr To $end_Addr Step 51200 - (StringLen($sig) / 2)
        
StringRegExp(_MemoryRead($addr$handle"byte[51200]"), $sig12)
        If 
Not @error Then
            
Return StringFormat("0x%.8X"$addr + ((@extended StringLen($sig) - 2) / 2))
        EndIf
    
Next
    
Return 0
EndFunc 

Hier habe ich ein Script welches nach dem pattern die Adresse suchen soll aber funkt nicht :( ist mein Ansatzt falsch oder was muss ich hier machen ? Denn irgendiwe bekomme ich als Rückgabe Parameter immer eine 0 Zurück. Hoffe ihr könnt mir helfen.
04/06/2014 21:57 alpines#12
Quote:
Code:
$MemOpen = _MemoryOpen(ProcessExists("S3League.exe"))
?
04/06/2014 23:58 Wayntressierts#13
Quote:
Originally Posted by alpines View Post
?
Das ist schon korrekt was er da macht. Vielleicht mal mit ProcessHacker die prozess.exe öffnen und "Jeder" Vollzugriff geben.
Das Problem hatte ich auch mit einem anderen Spiel, da hat mir XTrap/Gameguard immer dazwischengefunkt wenn ich extern (z.B. AutoIt) drauf zugreifen wollte.

Wenn der Code direkt im Prozess ist (autoassemble oder DLL-inject) hat man die Probleme natürlich nicht.
04/06/2014 23:59 alpines#14
Wenn ein Anti-Hack da ist, dann muss der wahrscheinlich erst bypassed werden, aber heißt das nicht S4League.exe statt S3League.exe
04/07/2014 01:13 golle12#15
S4Client.exe ist es sogar aber funktioniert trotztdem nicht :( der wert ist und bleibt 0. Aber wie mache das ich den Code wie bei Cheat Engine in meinen Ziel Prozess injected ?! Aus irgendeinem Grund findet nur cheat engine dieses patten aber andere Programme nicht :(