AutoIT]Values Suchen lassen?

09/26/2010 10:07 ♠As♠#1
HI,
geht das, dass AutoIT nach der texture ... in S4 league sucht und alles was dann kommt in etwas anderes umendert in 1 z.B ?
Also nicht so wie jetzt das man die adresse bracuuht sondern einfach

nach 1 suchen lassen
alles was er findet zu 2 ändern
09/26/2010 12:57 Rorc#2
Quote:
Originally Posted by mastermann22997 View Post
kp
Das ist purer Spamm und wird daher #reported

B2t: Ich glaube mit AutoIT ist dies nciht möglich, aber mit c++ usw sollte es gehen... ;)
09/26/2010 16:16 Al Kappaccino#3
Ja überleg doch mal, was AutoIT machen kann bzw. welche Befehle dieser Noob-Sprache zur verfügung stehen...
Was du willst ist das gleiche wie eine Memory Search Engine und ist mit AutoIT sicher nicht/kaum machbar. Selbst wenn man es über DLL Call oä. versucht wird es doch an der extrem langsamen VM Ware scheitern, selbst bei VB.Net ist es schwer das Teil flüssig laufen zu lassen, mit C++ ist es nicht anders, man muss eben überlegen wie man da ran geht ;)
09/26/2010 16:18 ♠As♠#4
Wüsstest du wie das geht :) ?
09/26/2010 16:22 PenGuin :O#5
Es ist bedingt möglich:

Code:
;==================================================================================
; Function:         _MemoryScan($ah_Handle, $pattern [, $after[, $iv_addrStart, [$iv_addrEnd]]])
; Description:      Finds the address of the first occurance of a pattern in a process.
; Parameter(s):     $ah_Handle - An array containing the Dll handle and the handle
;                                of the open process as returned by _MemoryOpen().
;                   $pattern - The pattern you want to find. Provide the pattern
;                              as a String of hex values. You may use the '.' as wildcard.
;                              Any other character as '0123456789ABCDEFabcdef.' is ignored.
;                              Example: "55 8B .. 83"
;                   $after - (optional) Set to FALSE by default.
;                            If set to TRUE, the method will return the address
;                            after the pattern, else the method returns the address
;                            of the pattern itself.
;                   $iv_addrStart - (optional) Set to 0x00400000 by default.
;                                   This is the address where the method begins to scan
;                                   for the pattern. It must be in hex format (0x00000000).
;                   $iv_addrEnd - (optional) Set to 0X00FFFFFF by default.
;                                 This is the address where the method stops to scan
;                                 for the pattern. It must be in hex format (0x00000000).
; Requirement(s):   None.
; Return Value(s):  On Success - Returns the address of the first occurance of the pattern
;                                ($after = FALSE) or the address after the first occurance
;                                of the pattern ($after = TRUE). The address is in
;                                hexadecimal format.
;                   On Failure - Returns -1
;                   @Error - 0 = No error.
;                            1 = Invalid $ah_Handle.
;                            2 = Invalid $pattern.
; Author(s):        Luzifer42
; Note(s):          The default scan range will be completed in less than one second.
;==================================================================================

Func _MemoryScan($ah_Handle, $pattern, $after=false, $iv_addrStart=0x00400000, $iv_addrEnd=0X00FFFFFF, $step=51200)
	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return -1
	EndIf
	$pattern=StringRegExpReplace($pattern, "[^0123456789ABCDEFabcdef.]", "")
	IF StringLen($pattern)=0 Then
		SetError(2)
        Return -2
	EndIf
	For $addr=$iv_addrStart To $iv_addrEnd Step $step-(StringLen($pattern)/2)
		StringRegExp(_MemoryRead($addr, $ah_Handle, "byte[" & $step & "]"), $pattern, 1, 2)
		If Not @Error Then
			If $after Then
				return StringFormat("0x%.8X", $addr+((@Extended-2)/2))
			Else
				return StringFormat("0x%.8X", $addr+((@Extended-StringLen($pattern)-2)/2))
			EndIf
		EndIf
	Next
	Return -3
EndFunc
;)
über die Performance in AutoIt lässt sich streiten, fakt ist: Es ist ziemlich lahm.
09/26/2010 16:25 Al Kappaccino#6
Sagen wir es so. Wenn du es schaffst, das ein AutoIT Prog (mithilfe von Fremderzeugenissen, ohne geht es einfach nicht) in einen Prozess eindringt und nach der Value 1 sucht wäre das ja schonmal grandious. Das Teil würde aber sicher erstmal 3 Jahre suchen bis es dann alle Adressen hat (Ausgenommen es zerfrists dein Ram und dein PC crasht) und diese dann alle ändert was dank top VM Ware sicher nochmals 1 Jahr dauert.
Von daher würde ich es lassen. Und ne richtige Sprache brauchste auch nicht anfangen ;o
09/26/2010 16:30 MrSm!th#7
Klar geht das auch in Autoit, es ist nur so beschissen lahm, das es einen nicht weiter bringt.
Das ganze nennt sich Pattern search und ist zwar einfach zu implementieren, aber es zu konfigurieren (range, genauigkeit) will gelernt sein.
Außerdem gibt es meist viele Ergebnisse, wovon man nur eins ändern darf, da müsste es dann wie bei CE ein Next Scan geben, was aber bei nem Trainer sinnfrei ist.
Für Strings sollte das aber ganz gut möglich sein, ich könnte eine kleine Dll schreiben, die eine Suchfunktion bietet, die du dann per Autoit aufrufen könntest :)

edit:
ups grad die eingefügte lib von pinguin gesehen, da ist ja keine mehr von mir nötig.
Quote:
Sagen wir es so. Wenn du es schaffst, das ein AutoIT Prog (mithilfe von Fremderzeugenissen, ohne geht es einfach nicht) in einen Prozess eindringt und nach der Value 1 sucht wäre das ja schonmal grandious. Das Teil würde aber sicher erstmal 3 Jahre suchen bis es dann alle Adressen hat (Ausgenommen es zerfrists dein Ram und dein PC crasht) und diese dann alle ändert was dank top VM Ware sicher nochmals 1 Jahr dauert.
Von daher würde ich es lassen. Und ne richtige Sprache brauchste auch nicht anfangen ;o
Das ist doch völliger Blödsinn.
CE dringt auch nicht ein, sondern sucht von außen, auch wenn es natürlich im Prozess einen kleinen Ticken schneller ginge.
Autoit selbst wird von ner vom ausgeführt, aber Dlls, werden ganz normal vom Prozessor ausgeführt, das ist nicht lahm.
09/26/2010 21:16 freehuntx#8
Falsche Section.

Bitte verschiebt dass in die Autoit section
09/26/2010 21:20 PenGuin :O#9
Quote:
Originally Posted by MrSm!th View Post
Klar geht das auch in Autoit, es ist nur so beschissen lahm, das es einen nicht weiter bringt.
Das ganze nennt sich Pattern search und ist zwar einfach zu implementieren, aber es zu konfigurieren (range, genauigkeit) will gelernt sein.
Außerdem gibt es meist viele Ergebnisse, wovon man nur eins ändern darf, da müsste es dann wie bei CE ein Next Scan geben, was aber bei nem Trainer sinnfrei ist.
Für Strings sollte das aber ganz gut möglich sein, ich könnte eine kleine Dll schreiben, die eine Suchfunktion bietet, die du dann per Autoit aufrufen könntest :)

edit:
ups grad die eingefügte lib von pinguin gesehen, da ist ja keine mehr von mir nötig.

Das ist doch völliger Blödsinn.
CE dringt auch nicht ein, sondern sucht von außen, auch wenn es natürlich im Prozess einen kleinen Ticken schneller ginge.
Autoit selbst wird von ner vom ausgeführt, aber Dlls, werden ganz normal vom Prozessor ausgeführt, das ist nicht lahm.

Wenn magst, darfste für mich ne MemorySearch DLL coden ;O
09/26/2010 21:52 Al Kappaccino#10
Quote:
Originally Posted by MrSm!th View Post
Klar geht das auch in Autoit, es ist nur so beschissen lahm, das es einen nicht weiter bringt.
Das ganze nennt sich Pattern search und ist zwar einfach zu implementieren, aber es zu konfigurieren (range, genauigkeit) will gelernt sein.
Außerdem gibt es meist viele Ergebnisse, wovon man nur eins ändern darf, da müsste es dann wie bei CE ein Next Scan geben, was aber bei nem Trainer sinnfrei ist.
Für Strings sollte das aber ganz gut möglich sein, ich könnte eine kleine Dll schreiben, die eine Suchfunktion bietet, die du dann per Autoit aufrufen könntest :)

edit:
ups grad die eingefügte lib von pinguin gesehen, da ist ja keine mehr von mir nötig.

Das ist doch völliger Blödsinn.
CE dringt auch nicht ein, sondern sucht von außen, auch wenn es natürlich im Prozess einen kleinen Ticken schneller ginge.
Autoit selbst wird von ner vom ausgeführt, aber Dlls, werden ganz normal vom Prozessor ausgeführt, das ist nicht lahm.
Ja und? Es geht darum, es mit AutoIT zu realisieren und es wäre mir neu das man solche Dll´s mit AutoIT coden kann... Wenn du es nur über AutoIT laufen lässt geht einfach nix voran, dass weist du genauso gut wie ich...
09/26/2010 21:59 PenGuin :O#11
@JakeFrost:
Quote:
Klar geht das auch in Autoit, es ist nur so beschissen lahm, das es einen nicht weiter bringt.
Das ganze nennt sich Pattern search und ist zwar einfach zu implementieren, aber es zu konfigurieren (range, genauigkeit) will gelernt sein.
Außerdem geht es mit AutoIt o_O
Einfach jede Adresse nach der Value absuchen und ggf. in ein Array einfügen, wenn die Value passt.
Zeit ist ja egal.

Ergo:
Ja es geht.
Performancetechnisch jedoch ziemlich schlecht.
09/26/2010 22:47 MrSm!th#12
Quote:
Originally Posted by JakeFrost77 View Post
Ja und? Es geht darum, es mit AutoIT zu realisieren und es wäre mir neu das man solche Dll´s mit AutoIT coden kann... Wenn du es nur über AutoIT laufen lässt geht einfach nix voran, dass weist du genauso gut wie ich...
Du sagtest aber, dass es selbst mit DllCall lahm ginge, wenn ich mich Recht entsinne und das wäre einfach falsch.
Und auch in Autoit könnte man ein paar Tuning Möglichkeiten nutzen, um den Algorithmus zu optimieren.
Wenn man es so eng betrachtet, lässt sich fast gar nichts alleine in Autoit realisieren, weil für vieles irgendwelche DllCalls gemacht werden ;)
09/26/2010 23:10 Al Kappaccino#13
Quote:
Originally Posted by MrSm!th View Post
Du sagtest aber, dass es selbst mit DllCall lahm ginge, wenn ich mich Recht entsinne und das wäre einfach falsch.
Und auch in Autoit könnte man ein paar Tuning Möglichkeiten nutzen, um den Algorithmus zu optimieren.
Wenn man es so eng betrachtet, lässt sich fast gar nichts alleine in Autoit realisieren, weil für vieles irgendwelche DllCalls gemacht werden ;)
Ja das Stimmt. Wenn man sowieso in der Lage ist sich solche Dll´s zu machen, würde man gar nicht erst den Aufwand betreiben sowas über AutoIT zu benutzen^^
09/26/2010 23:31 MrSm!th#14
Naja, wie gesagt, ich könnte so eine Dll bereitstellen, wenn das genug wollen.

Aber auch wen Autoit lahm ist, man kann ja die Range auf eine gewisse Größe reduzieren, man muss ja nicht den ganzen Client durchsuchen.
Und Fichte hatte mal, als es noch möglich war, nen Adressfinder für die Dmg Adressen in Autoit geschrieben, der brauchte auch nur ein paar Sekunden und hat im ganzen Client gesucht.
09/27/2010 02:11 freehuntx#15
_SearchMemory(0x00C00000,0x00F00000,$Handle,"actor _default_hp_max",$Bytes)

musst halt die function _searchmemory suchen hab das von pinguin