Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 22:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



AutoIt - Pointer auslesen prob.

Discussion on AutoIt - Pointer auslesen prob. within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
AutoIt - Pointer auslesen prob.

Hallo Leute !


Also komm ich mal gleich zum Punkt o.O

Ich hab versucht wie schon oben steht einen Pointer mit AutoIt auszulesen
klappte ja auch alles super... nur das die Vaule immer als 0 angezeigt wird und ich einfach nicht drauf komme was ich falsch gemacht habe

Also hier der Code für den Pointer :
Quote:
#RequireAdmin
#include <Pointer.au3>

While 1
$PID = ProcessExists("ZumHacken.exe")
$MemOpen = _MemoryOpen($PID)

Global $Offset[3]
$Offset[0] = 0
$Offset[1] = Dec ("0")
$Offset[2] = Dec("18")
$StaticOffset = Dec("000A86BC")

$BaseAddr = _MemoryGetBaseAddress($MemOpen, 1)
$Addr = "0x" & Hex($BaseAddr + $StaticOffset)

$Value = _MemoryPointerRead($Addr, $MemOpen, $Offset)

Tooltip ($Value[1])
WEnd
Schöne grüße
Philipp
LikEaScripT is offline  
Old 08/05/2012, 16:07   #2
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
Du verwendest das Handle ohne vorher zu prüfen, ob es überhaupt gültig ist. Das führt schnell mal zum Programmabsturz.
Die ganzen Konvertierungen zwischen Strings und Zahlen sind zum einen umständlich und verbrauchen zum anderen nur unnötig Rechenleistung.


Zum eigentlichen Problem:
ReadProcessMemory gibt einen Wert von 0 zurück, wenn die Funktion fehlschlägt (wird nicht von DllCall erkannt). Ein Grund dafür wären fehlende Leseberechtigung. Kann man eigentlich ausschließen.
Da dein aktuelles Script ja scheinbar funktioniert, sofern der Prozess schon gestartet wurde, sollte das Problem auch bei keinem Anti Hacking Tool liegen. Andernfalls würde das Script spätestens bei der Ausgabe des gelesen Werts abstürzen, da du auf ein Array zugreifen möchtest, das überhaupt kein Array ist.
Evtl. ist der Pointer einfach nicht der richtige.
KDeluxe is offline  
Thanks
2 Users
Old 08/06/2012, 22:43   #3
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
Hallo KDeluxe !
Ich hab dein Script ausprobiert - es startet aber es erscheint nicht mal ein ToolTip.
Der Pointer stimmt, beim Scannen meines Testprogrammes (Pointer - Level 1) ist das Offset immer 18.
LikEaScripT is offline  
Old 08/07/2012, 00:16   #4
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
Dann sollte eine 0 zu viel sein.

Wenn ich das jetzt richtig verstehe sollte es so sein:
Code:
Dim $dwOffset[2] = [0, 0x18]
Je nachdem was du unter "Level 1" verstehst. CE beginnt bei 0, Level 1 wäre also eigentlich das 2. Offset.

Wenn das Tooltip nie angezeigt wird, wird _MemoryPointerRead() nie ausgeführt, zur Fehlerfindung hättest du nur ein paar Tooltips (oder anderes) hinzufügen müssen.

KDeluxe is offline  
Thanks
1 User
Old 08/07/2012, 13:42   #5
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
Jop...
Diesmal gehts, doch die Adresse ist immer noch 0 >.<


Bild :
LikEaScripT is offline  
Old 08/07/2012, 17:57   #6
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
Dann solltest du dem Script eigentlich entnehmen können, dass das Problem bei der Funktion _MemoryGetBaseAddress() liegt. Probier es doch einfach mal mit _MemoryGetModuleAddress() (oder so ähnlich) aus.
KDeluxe is offline  
Thanks
1 User
Old 08/07/2012, 23:48   #7
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
Hallo KDeluxe...
Es will einfach nicht klappen, ich habe schon fast alles ausprobiert
das mit dem Pointen haut bei mir einfach nicht hin >.<
Entweder mag mich mein PC nicht oder ich bin einfach zu dumm ._.

Liegt es vllt. an meinem Betriebssystem ? (Windows 7 64 Bit)
LikEaScripT is offline  
Old 08/08/2012, 00:54   #8
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
Mach einfach mal einen Screenshot vom Pointeraufbau von CE.
KDeluxe is offline  
Thanks
1 User
Old 08/08/2012, 13:09   #9
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
Hey KDeluxe...
Hier hast du den Screen :
LikEaScripT is offline  
Old 08/08/2012, 13:54   #10
 
elite*gold: 0
Join Date: Jan 2009
Posts: 70
Received Thanks: 19
Also nach erfolgreicher Fehlersuche per Skype konnte ich das Problem mit folgendem Script isolieren:
Code:
#RequireAdmin
#include <Pointer.au3>

$szProcessName = "TestProgramm.exe"
Dim $dwOffset[2] = [0, 0x18]
Dim $dwBaseAddress = 0, $dwStaticOffset = 0xA86BC

While Sleep(10)
	$dwProcessId = ProcessExists($szProcessName)
	$aHandle = _MemoryOpen($dwProcessId)
	If Not @error Then
		If Not $dwBaseAddress Then
			$dwAddress = _MemoryGetBaseAddress($aHandle, 1)
			If $dwAddress Then
				$dwBaseAddress = $dwAddress + $dwStaticOffset
			Else
				FileWrite("Adressen.txt", $dwProcessId & @CRLF & $aHandle & @CRLF)
			EndIf
		Else
			$dwValue = _MemoryPointerRead($dwBaseAddress, $aHandle, $dwOffset)
			If @error Then
				FileWrite("error.txt", "Error: " & @error &@CRLF)
			Else
				ToolTip("Value: " & $dwValue[1] &@CRLF)
			EndIf
		EndIf

		_MemoryClose($aHandle)
	Else
		Exit
	EndIf
 WEnd
Bei mir funktioniert das Script so wunderbar, bei Likeascript wird die Zeile 10 ($aHandle = _MemoryOpen($dwProcessId)) übersprungen --> warum weiss ich auch nicht so genau

Aber da liegt wohl das Problem.

(OS: Win7 64-bit Home Premium keine UAC)

Edit: Was mir grad noch einfällt - wenn ich ihm ne compiled version von exakt dem gleichen Script schicke gehts - wäre zwar unlogisch aber könnte das PRoblem an AutoIt selbst liegen? o.O
mdna is offline  
Thanks
1 User
Old 08/08/2012, 15:26   #11
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by mdna View Post
Bei mir funktioniert das Script so wunderbar, bei Likeascript wird die Zeile 10 ($aHandle = _MemoryOpen($dwProcessId)) übersprungen --> warum weiss ich auch nicht so genau
zunächst einmal werden zeilen nicht übersprungen... es ist durchaus möglich das der funktionsaufruf der winapi in der udf fehlerhaft abläuft.

vergleiche die typisierung im aufruf nochmal mit der in msdn vorgegebenen von OpenProcess. ich nehme mal an das der fehler dort zu finden ist.
lolkop is offline  
Old 08/08/2012, 17:23   #12
 
LikEaScripT's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 41
Received Thanks: 1
Quote:
Originally Posted by lolkop View Post
zunächst einmal werden zeilen nicht übersprungen... es ist durchaus möglich das der funktionsaufruf der winapi in der udf fehlerhaft abläuft.

vergleiche die typisierung im aufruf nochmal mit der in msdn vorgegebenen von OpenProcess. ich nehme mal an das der fehler dort zu finden ist.
Mdna hat das gleiche Programm und Script.
Beim ihm funzt es... bei mir nicht
PS: Ich habe ihm das Script und das Test-programm per Skype
geschickt...

Hab AutoIt und Scite schonmal neu Installiert..
Geht trozdem noch nicht >.<
LikEaScripT is offline  
Old 08/08/2012, 23:12   #13
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by LikEaScripT View Post
Mdna hat das gleiche Programm und Script.
Beim ihm funzt es... bei mir nicht
PS: Ich habe ihm das Script und das Test-programm per Skype
geschickt...

Hab AutoIt und Scite schonmal neu Installiert..
Geht trozdem noch nicht >.<
und in wiefern hat das etwas mit dem zu tun was ich sagte?
lolkop is offline  
Old 08/08/2012, 23:22   #14
 
elite*gold: 0
Join Date: Jan 2009
Posts: 70
Received Thanks: 19
Nun ganz einfach --> bei mir funktioniert das Script mit exakt der GLEICHEN Pointer.au3 (Wo ja die API-Aufrufe gemacht werden) wunderbar aber bei likeascript nicht --> das ist das was er dir mitgeteilt hat
mdna is offline  
Thanks
1 User
Old 08/08/2012, 23:49   #15
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by mdna View Post
Nun ganz einfach --> bei mir funktioniert das Script mit exakt der GLEICHEN Pointer.au3 (Wo ja die API-Aufrufe gemacht werden) wunderbar aber bei likeascript nicht --> das ist das was er dir mitgeteilt hat
das sagt nichts über das system aus... ein dll aufruf kann auf unterschiedlichen system selbstverständlich zu unterschiedlichen reaktionen führen...

mögliche fehlerquellen:
  • die dll existiert auf einem system überhaupt nicht
  • die dll befindet sich an einer anderen stelle
  • die dll wurde geupdated / verfügt über unterschiedliche parameter
  • man befindet sich auf x86 / x64 systemen -> integer, handles etc. sind nichtmehr 4 sondern 8byte lang, was bei der typisierung beachtet werden muss
  • viele mehr...

die häufigste fehlerquelle wird wohl die bereits angesprochene x64/x86 typisierungs-fehlerquelle sein...
lolkop is offline  
Reply

Tags
autoit, ce, pointer, problem, programm


Similar Threads Similar Threads
[AutoIT] Pointer auslesen
07/14/2013 - AutoIt - 5 Replies
Guten Abend/Nacht liebe Community, heute möchte ich euch gerne das anzeigen eines Wertes via Pointer in Autoit näher bringen. Vorwort: Bitte bedenkt das dies hier mein erstes Tutorial ist und ich es mitten in der Nacht schreibe. Ich werde jeden Teil dieses Tutorials auch nocheinmal als Video verfilmen und hochladen und das Script posten damit ihr euch alles nochmal in Ruhe anschauen könnt. Als Beispiel zum Pointer auslesen habe ich das Rollenspiel NosTale genommen. Ihr könnt...
WoW Pointer mit Autoit auslesen
12/08/2010 - AutoIt - 9 Replies
Ich habe den 4byte wert von der z position von meinem eigenen Chara herausgefunden. Ich weiß das 4 Byte falsch sind aber das ist egal. Mir reicht auch ein 4 byte wert. Danach habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this adress. Alles So gelassen und OK geklickt. Ich habe eine Liste mit offsets und allem möglichen gefunden. Wenn ich diesen Pointer mit offsets aber in Autoit einbinde und mit memorypointerread auslese bekomme ich 0x00000017 als rückgabewert. ...
WoW Pointer mit Autoit auslesen
12/05/2010 - World of Warcraft - 0 Replies
Ich habe mit Cheat Engine 5.6 die werte von der Z position des eigenen Spielers herausgefunden. Anschließend habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this Adress gemacht. Ich bekam eine Liste mit den Offsets und den Werten. Meine Werte sind alle 4 byte weil ich nicht weiß welche ich sonst nehmen soll. Das ist aber egal. Mit Cheat Engine klappt alles auch wenn es 4 byte sind. Nun meine Frage. Ich binde die Offsets mit der Nomadmemory in Autoit ein. Wenn ich den Wert...
(Autoit) Wie Pointer auslesen ?
10/13/2009 - General Coding - 6 Replies
Hiho... Ich progge gerade an einem bot und habe nur ein problem... Ich hab mit CE nen pointer für die HP gefunden... In diesem fall: game.dat+0037CC28 offset: 13C Hab aber bis jetzt keine funktionierende möglichkeit gefunden das in Autoit auszulesen... Kann mir pls einer verraten wie das geht ?



All times are GMT +2. The time now is 22:13.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.