memory hilfe/unterstuetzung!?!?

01/13/2010 13:36 markusbab#1
hallo liebe elitepvpers gemeinde
ich bin zwar nicht neu im forum trozdem breuchte ich die unterstuezung
von euch alteingedienten autoit pro'S

ich hab mal angefangen mir ein bot zu machen
er ist noch lange nicht fertig und fuer das spiel karos online!

ich habe bewust dieses spiel ausgesucht weil es noch in beta status ist und keine gamegurd oder sonstige sicherheit besitzt

so hier nun meine bisherige arbeit im spoiler

nun zu meiner eigentlichen frage
NomadMemory
ich denke ich habe es hier mit multi lvl pointer zu tuhn
genau das ist aber der punkt wo ich nicht mehr weiter komme diesen multilvlpointer zu verarbeiten

ich habe es versucht mit dem code aber irgentwas geht da nicht

dieser teil ist oben schon eingebaut

warum ich den memory machen will naja ganz einfach pixelsearch is mir zu ... naja ich will mich weiter entwickeln und dazulernen

gibt es den hier ein parr leute die sich auskennen
oder macht euch doch mal ein account wens den hilfreich ist

ich habe noch 2 jpg angehaengt um die ce ausgabe zu zeigen!

danke schon mal fuer jede hilfe die ihr mir geben koennt

mfg
01/13/2010 13:57 KDeluxe#2
Ich rate dir zur NomadMemory.au3

Diese enthält die Funktionen "_MemoryPointerRead" und "_MemoryPointerWrite", mit denen du besser klarkommen solltest

Die Offsets würde ich so schreiben:
PHP Code:
$Offset[3] = [00x5F80x188
01/13/2010 14:49 markusbab#3
ach ja und sinn der uebung soll es sein ein autopotter zu bauen der immer bei verlust des lebens sich ein heiltrank in den kopp haut ;)

aber is den den ansatz und der code so richtig

weil ich bekomm da immer "0" als ausgabe

und was ist mit der baseadresse also aom.exe+xxxxxxx
das versteh ich nicht ganz, schau dir bitte das bild an weil dort die richtigen adressen sind

entweder ich bin grade totall doof oder ich ueberseh was XD
01/13/2010 15:02 Timo264#4
mein tipp mach es einfach old school.

wie schon gesagt wurde benutz am besten die NomadMemory.au3
und dann einfach
PHP Code:
$PID ProcessExists("Prozess.exe") ; Prozessnameder z.B im Taskmanager angezeigt wird.
$MemOpen _MemoryOpen($PID) ; Memory wird geöffnet

Global $Offset[3] ; Array des Offsets vom Pointer
$Offset
[0] = Ist nicht von bedeutungeinfach bei 0 lassen.
$Offset[1] = 0x5F8 nimm doch Hex
$Offset
[2] = 0x188
$Staticadresse 
0x00229E84 ;nimm hier lieber die static adresse
;bishierhin dein code nur nimm lieber hexdas kannst du dann direkt verarbeiten

$add1 
_MemoryRead ($Staticadresse,$MemOpen,'dword') ;pointeradresse
$add2 
_MemoryRead ($add1 $offset[1],$MemOpen,'dword');pointer+offset
$add3 
_MemoryRead ($add2 $offset[3],$MemOpen,'dword');lvl 2 pointer

MsgBox
(0,"Test",$add3) ;  $add3 gibt den Wert zurück
;
müsste klappen probiers mal 
wäre in ner for schleife natürlich schöner aber so ist es erstmal anschaulicher
01/13/2010 15:12 markusbab#5
also wen ich das nun richtig verstanden habe
weil ich hab ja da ein bild angehaengt


ist das laut meiner ce ausgabe den so richtig?

€dit = also so gehts nicht grig ich immer 0 als rueckgabe !!!
[Only registered and activated users can see links. Click Here To Register...]
hier nochmal das bild von ce oder ist hier mein fehler??
01/13/2010 21:13 markusbab#6
sory fuer den doppel post sowas macht man nicht ich weis!

aber das haut so nicht hin

und ich dreh mich im kreis ich bekomme immer 0 als wert zurueck
01/14/2010 14:18 KDeluxe#7
Code:
MsgBox(0,"die aktuelle HP ist =",$add4[COLOR="Red"][1][/COLOR])
01/15/2010 20:42 markusbab#8
lieber killer so funktionier das leider nicht

also ich hab den ganzen code mal stueck fuer stueck auseinander genommen
und jeden abschnitt mit meiner msgbox abgefragt

jetz bin ich mir nicht sicher, wie rechnet das ganze zeug

mit hex oder mit decimal

mit der variante ...

~~~
habe ich im offset direkt decimale werte
$Staticadresse = 0x00339750 auch decimal
$BaseAddr auch decimal
$finalADDR hier wieder rum kommt hex zum vorschein
$Value = _MemoryPointerRead($finalADDR, $MemOpen, $Offset) dort is dann alles lehr ... weder 0 noch nichts oder auch hex btw decimal

~~~
anstatt _memorypointerread hab ich dann nochmal versucht die andere variante
~~~


also diese
ab dem punkt $add1 kommt nichts mehr an also kein wert in der variablen
vobei ich auch hier wieder hex und decimale wert gemischt sind

also wie rechnet das memory nun

wie ist es richtig

hoffe ich verlange von euch nicht zuviel hilfe XD

danke schon mal im voraus
mfg markus
01/18/2010 20:12 markusbab#9
~BUmp~

so jetz wollte ich nochmal nachfragen an all die memory und autoit spetzies

gibt es hier nimanden der mir helfen kann
BTW licht in mein dunkel zu bringen

ein weiterfuehrenden link zu etwas lese stoff wuerde auch gerne gesehn

danke
mfg
01/18/2010 23:50 telcy#10
google mal nach: autoitbot
dann findest du ein forum ;)
01/19/2010 02:18 markusbab#11
ja ne da bin ich schon angemeldet XD
da sind allerding so einige leute mit durchaus schlechten maniern bei

sowas kann ich nicht abhaben

aber ich habs geschaft
es geht so!
PHP Code:
#include <NomadMemory.au3>
SetPrivilege("SeDebugPrivilege"1);Aktiviert eine Debug funktion(geht auch ohneist aber sinvoller mit)

$PID ProcessExists("AMo.exe") ; Prozessnameder z.B im Taskmanager angezeigt wird.
$MemOpen _MemoryOpen($PID) ; Memory wird geöffnet

Global $Offset[4] ; Array des Offsets vom Pointer
$Offset
[0] = Ist nicht von bedeutungeinfach bei 0 lassen.
$Offset[1] = 0x6E0 nimm doch Hex
$Offset
[2] = 0x4
$Offset
[3] = 0x690 ;der wert sollte hp sein ... 0x698 dann mp
$Staticadresse 
0x00739750 ;nimm hier lieber die static adresse

$value 
_MemoryPointerRead ($Staticadresse$MemOpen$Offset)
MsgBox(0,"die aktuelle HP ist:",$value[1]) 
;  
$value[0],[1
;[
0]gibt die adresse zurueck 
;[1]gibt den Wert zurück
so geht das einwandfrei

aufjeden fall muss ich mich bedanken
killer und timo
ihr hattet ja recht :D ~ironie off~

€dit :
somit ergibt sich nun folgendes

PHP Code:
#include <NomadMemory.au3>
SetPrivilege("SeDebugPrivilege"1);Aktiviert eine Debug funktion(geht auch ohneist aber sinvoller mit)

$PID ProcessExists("AMo.exe") ; Prozessnameder z.B im Taskmanager angezeigt wird.
$MemOpen _MemoryOpen($PID) ; Memory wird geöffnet

Global $hp_offset[4] ; Array des Offsets vom Pointer_hp
$hp_offset
[0] = ;  einfach bei 0 lassen.
$hp_offset[1] = 0x6E0
$hp_offset
[2] = 0x4
$hp_offset
[3] = 0x690 hex off der hp
Global $mp_offset[4]; Array des Offsets vom Pointer_mp
$mp_offset
[0] = einfach bei 0 lassen.
$mp_offset[1] = 0x6E0
$mp_offset
[2] = 0x4
$mp_offset
[3] = 0x698 hex off der mp

$Staticadresse 
0x00739750 ;nimm hier lieber die static adresse

$value_hp 
_MemoryPointerRead ($Staticadresse$MemOpen$hp_offset)
MsgBox(0,"die aktuelle HP ist:",$value_hp[1]) ;$value[0],[1]~~~[0]gibt die adresse zurueck und [1]gibt den Wert zurück.
$value_mp _MemoryPointerRead ($Staticadresse$MemOpen$mp_offset)
MsgBox(0,"die aktuelle MP ist:",$value_mp[1]) ;$value[0],[1]~~~[0]gibt die adresse zurueck und [1]gibt den Wert zurück
wie koennte ich das am sinnvollsten verarbeiten das ich nun zu meinem auto potter komme ?

mfg

€dit 2 :
waere das ein moeglichkeit?

PHP Code:
$min_hp 600
$min_mp 
200
Func hp_check
()
    if 
$value_hp[1] <= $min_hp Then
        
Do Send("{9}"
        
Until $value_hp[1] = $value_hp[1]
        ElseIf 
Sleep(10)
    
EndFunc
Func mp_check
()
    if 
$value_mp[1] <= $min_mp Then
        
Do Send("{ß}"
        
Until $value_mp[1] = $value_mp[1]
        ElseIf 
Sleep(10)
    
EndFunc 
man koennte auch ein controlsend an die $PID machen da ich sie ja schon habe?
01/19/2010 08:48 | Moep |#12
1. musst du Deine ifs mit endif wieder schließen
2. ist das elseif sleep(10) sinnfrei
01/19/2010 12:32 markusbab#13
hehe ubs is mir die nacht garnet aufgefallen :D

oder hat jemand ne schoenere idee so was zu schreiben

JEDE construktive meinung is mir lieb nur kein flame oder spamm!
01/20/2010 18:00 | Moep |#14
Funktionierst denn jetzt?
01/20/2010 20:55 markusbab#15
ja funktioniert super
hier der jetzige code fuer "karos online auto potter"
allerdings nach den hoffentlich bald kommenden patch muss die adresse
fuer hp und mp neu gesucht werden

PHP Code:
#include <NomadMemory.au3>

SetPrivilege("SeDebugPrivilege"1);Aktiviert eine Debug funktion(geht auch ohneist aber sinvoller mit)
Global 
$min_hp 650
Global $min_mp 290

While 1
    Sleep
(1000)
        
Memory()
    
WEnd
Func Memory
()
        
$PID ProcessExists("AMo.exe") ; Prozessnameder z.B im Taskmanager angezeigt wird.
        
$MemOpen _MemoryOpen($PID) ; Memory wird geöffnet

        
Global $hp_offset[4] ; Array des Offsets vom Pointer_hp
            $hp_offset
[0] = ;  einfach bei 0 lassen.
            
$hp_offset[1] = 0x6E0
            $hp_offset
[2] = 0x4
            $hp_offset
[3] = 0x690 hex off der hp
        
Global $mp_offset[4]; Array des Offsets vom Pointer_mp
            $mp_offset
[0] = einfach bei 0 lassen.
            
$mp_offset[1] = 0x6E0
            $mp_offset
[2] = 0x4
            $mp_offset
[3] = 0x698 hex off der mp

        
Global $Staticadresse 0x00739750 ;nimm hier lieber die static adresse
        $value_hp 
_MemoryPointerRead ($Staticadresse$MemOpen$hp_offset);MsgBox(0,"die aktuelle HP ist:",$value_hp[1]) ;$value[0],[1]~~~[0]gibt die adresse zurueck und [1]gibt den Wert zurück.
        
$value_mp _MemoryPointerRead ($Staticadresse$MemOpen$mp_offset);MsgBox(0,"die aktuelle MP ist:",$value_mp[1]) ;$value[0],[1]~~~[0]gibt die adresse zurueck und [1]gibt den Wert zurück.
        
ToolTip("die aktuelle HP ist: " &$value_hp[1] & @CRLF "die aktuelle MP ist: " &$value_mp[1],0,0,"Memory Read information!")
        If (
$value_hp[1] <= $min_hpThen Send("{0}")
        If (
$value_mp[1] <= $min_mpThen Send("{ß}")
    
EndFunc