Pointer in AutoIT

11/20/2009 21:40 HardCore.1337#1
Hi, ich Programmiere grade einen Bot und komme nicht ganz weiter. Es geht darum das ich in Counter Strike mein Leben "einfrieren" will.

Dazu habe ich nun einen Pointer gefunden.
Wie kann ich nun auf den Pointer zugreifen? Habe mir schon paar Tuts angeschaut, aber schlau bin ich dadurch nicht geworden.

Mein Code:


PHP Code:
Global $Adresse 0x15452455
Dim $Offset
[1] = [22B
Func _Change()
  While 
1
    $THandle 
WinGetHandle ("Counter-Strike Source")
    if 
$Thandle <> 0 Then
      $hProcess 
_MemoryOpen ($Thandle)
      
$Armor _MemoryPointerRead ($Adresse$hProcess$Offset)
    if 
$Armor 5 Then
    
    
EndIf
EndIf
WEnd
EndFUnc 
Wie kann ich nun meinen Pointer darin verbauen das er angesprochen wird?

Zweites Problem: Mit welchem bvefehl friere ich eine Adresse ein?

mfg Markus
11/20/2009 21:41 Adroxxx#2
#moved

Adresse = 0x111111
Offset = 0x23

ReadProcessMemory(Adresse,....) // Adresse auslesen
Adresse = Adresse+Offset // Offset draufaddieren
ReadProcessmemory(Adresse...) //Endgültige Adresse, Wert auslesen

Richtig einfrieren wird schwer. Gibt viele Möglichkeiten.
Kannst mit timern arbeiten und dann alle paar ms ein WriteProcessMemory drauf machen.
11/20/2009 21:54 HardCore.1337#3
Danke, ein paar Fragen hab ich aber noch
Wie kommst du auf die Adresse bzw. den offset?
Oder muss ich da meine Werte eintragen?

Quote:
Adresse = 0x111111
Offset = 0x23

Quote:
ReadProcessMemory(Adresse,....) // Adresse auslesen
Adresse = Adresse+Offset // Offset draufaddieren
ReadProcessmemory(Adresse...) //Endgültige Adresse, Wert auslesen
Quote:
ReadProcessMemory
Welche Adresse? Den Pointer oder die Adresse direkt? Die Adresse wurde ja bereits angegeben.
außerdem ist der Befehl ja gleich mit dem..

Quote:
ReadProcessmemory(Adresse...)
Also dann z.B.

PHP Code:
$read ReadProcessMemory(0x111111$hProcess
$Adresse $Adresse+$Offset 
$read 
ReadProcessmemory($AdressehProcess
mfg
Markus
11/20/2009 21:57 wurstbrot123#4
Code:
$address = _MemRead($open,address,4);
$address += offset;
$armor = _MemRead($open,address,4);
Natürlich solltest du bei Addresse und Offset deine Daten
benutzen.
11/20/2009 22:09 HardCore.1337#5
Geht leider nicht :(

Mein Offset Memory:

[Only registered and activated users can see links. Click Here To Register...]


Welche Included muss rein?

PHP Code:
#include <Pointer.au3>
#include <Memory.au3> 
PHP Code:
Global $Adresse 0xD2C98B4
Dim $Offset 
0x22

Func _Change
()
  While 
1
    $THandle 
WinGetProcess ("Counter-Strike Source")
    if 
$Thandle <> 0 Then
      $hProcess 
_MemoryOpen ($Thandle)
      
$address _MemRead($hProcess,0xD2C98B4,4);
      
$address += $offset
      $armor 
_MemRead($hProcess,0xD2C98B4,4);

    if 
$Armor 5 Then
       ControlSend 
("Counter-Strike Source"""0"R")
    EndIf
EndIf
WEnd
EndFUnc 
Error: [Only registered and activated users can see links. Click Here To Register...]

Sry, das ich sooft frage, bin aber noch neu im Thema Memorys.
11/20/2009 22:15 Xereon#6
Huch was benutzt du den für eine UDF?
Also der Fehler liegt daran, dass die Funktion(_MemRead) 4 Parameter verlangt, du aber nur 3 angibts: :P
11/20/2009 22:16 wurstbrot123#7
Oh sry bin kein Autoit Programmierer und hab da was verwechselt.
Naja mit #include <NomadMemory.au3> und _MemoryRead
sollte es gehen. Und mit memread so -->
_MemRead($hProcess,address, address, 4);
Also anstatt $variable = memread
die Variable als 3.n Parameter nehmen.
11/20/2009 22:17 HardCore.1337#8
Quote:
Hcu hwas benutzt du den für eine UDF?
Wüßt ich auch gerne^^
Nur in den beispielen war die so angegeben


Ich hab grade mal ein neues Spiel gestartet und da war der Pointer wieder weg. Warum?
11/20/2009 22:18 Xereon#9
Quote:
Originally Posted by General Desert View Post
Wüßt ich auch gerne^^
Nur in den beispielen war die so angegeben


Ich hab grade mal ein neues Spiel gestartet und da war der Pointer wieder weg. Warum?
Nicht statisch => kein Base Pointer :P

dh. es muss noch einen Pointer geben der auf den Pointer "pointet"(komischer Satz xD)

War der Pointer den du den hattes "grün"?
11/20/2009 22:20 wurstbrot123#10
Guck dir folgendes Tutorial am besten mal an:
[Only registered and activated users can see links. Click Here To Register...]
11/20/2009 22:20 HardCore.1337#11
ne, der war schwarz.
Wie findet man den Base Pointer?
11/20/2009 22:22 Xereon#12
Quote:
Originally Posted by General Desert View Post
ne, der war schwarz.
Wie findet man den Base Pointer?
Wie du auch deinen ersten Pointer gefunden hast.

Kleiner Tipp: Base Pointer werden in CE immer mit grünen Adressen dargestelt.
11/20/2009 22:23 wurstbrot123#13
Guck dir das Tutorial an welches ich gepostet hab.
11/20/2009 22:26 Adroxxx#14
Quote:
Originally Posted by General Desert View Post
Geht leider nicht :(

Mein Offset Memory:

[Only registered and activated users can see links. Click Here To Register...]


Welche Included muss rein?

PHP Code:
#include <Pointer.au3>
#include <Memory.au3> 
PHP Code:
Global $Adresse 0xD2C98B4
Dim $Offset 
0x22

Func _Change
()
  While 
1
    $THandle 
WinGetProcess ("Counter-Strike Source")
    if 
$Thandle <> 0 Then
      $hProcess 
_MemoryOpen ($Thandle)
      
$address _MemRead($hProcess,0xD2C98B4,4);
      
$address += $offset
      $armor 
_MemRead($hProcess,0xD2C98B4,4);

    if 
$Armor 5 Then
       ControlSend 
("Counter-Strike Source"""0"R")
    EndIf
EndIf
WEnd
EndFUnc 

Sry, das ich sooft frage, bin aber noch neu im Thema Memorys.
Du machst das auch falsch.
0xD2C98B4 Ist schon die "ausgerechnete" Adresse.

Bei dir ist server.dll +000BFDF + 22B (offset)
Die Adresse und nicht.
0xD2C98B4

Aber server.dll + 000bfdf ist nicht statisch. Du musst da nochmal den basepointer finden.

Sollte dann auch eine Adresse sein später.
11/20/2009 22:26 HardCore.1337#15
ok, mach ich

danke