|
You last visited: Today at 15:08
Advertisement
AutoIt Script mit nomadMemory geht nicht. Und HWID Frage
Discussion on AutoIt Script mit nomadMemory geht nicht. Und HWID Frage within the AutoIt forum part of the Coders Den category.
01/14/2012, 11:45
|
#1
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
AutoIt Script mit nomadMemory geht nicht. Und HWID Frage
Hallo Lute,
Ich habe eine Frage ich will für mich einen Hack erstellen,
aber leider verändert er die Values wohl nicht, da nix passiert.
Hier das Script:
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#include <EditConstants.au3>
#include <String.au3>
#include "GetHWID.au3"
#include <WinAPI.au3>
#include <Memory.au3>
#include <GDIPlus.au3>
#RequireAdmin
Global Const $RT_BITMAP = 2
Global Const $RT_RCDATA = 10
$hGui = GUICreate("Form1", 700, 349, 272, 167)
$Group1 = GUICtrlCreateGroup("Player", 8, 120, 145, 225)
$SPR = GUICtrlCreateCheckbox("SP Refill", 24, 176, 97, 17)
$SP = GUICtrlCreateCheckbox("Inf. SP", 24, 203, 97, 17)
$GOD = GUICtrlCreateCheckbox("Godmode", 24, 150, 97, 17)
$AMMO = GUICtrlCreateCheckbox("Inf. Ammo", 24, 130, 97, 17)
;$Pic = GUICtrlCreatePic("", 70, 0, 500, 500)
;_SetImagefromResource($Pic, "jcm", @ScriptDir & "\jcm.dll", 2)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Group2", 160, 120, 169, 225)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Group3", 336, 120, 153, 225)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Credits", 496, 128, 113, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#cs
Do
$Msg = GUIGetMsg()
If $Msg == $Pic Then ShellExecute("s4.de.alaplaya.net")
Sleep(50)
Until $Msg == -3
#ce
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
If ProcessExists("S4Client.exe") <> 0 Then
_Werte_Aendern()
EndIf
EndSwitch
WEnd
Func _Werte_Aendern()
$PID = ProcessExists("S4Client.exe")
$Open = _MemoryOpen($PID)
If GUICtrlRead($SPR) = 1 Then
_MemoryWrite(0x********, $Open, "4", "Byte")
EndIf
; Hier habe ich alles lieber rausgenomen.
_MemoryClose($Open)
Exit
EndFunc ;==>_Werte_Aendern
Func _SetImageFromResource($CtrlID, $Resname, $Resfile = -1, $ResType = 10)
;Diese Funktion basiert auf der UDF von und Code von
Local Const $IMAGE_BITMAP = 0
Local Const $STM_SETIMAGE = 0x0172
Local $hmod, $hwnd, $InfoBlock, $ResSize, $Mem, $pMem, $dll, $dll2, $hData, $pData, $pStream, $ret, $hBitmap, $pBitmap
If $Resfile = -1 Then
$hmod = _WinAPI_GetModuleHandle("")
Else
$hmod = _WinAPI_LoadLibrary($Resfile)
EndIf
If $ResType = $RT_BITMAP Then
$hBitmap = _WinAPI_LoadImage($hmod, $Resname, $IMAGE_BITMAP, 0, 0, 0)
If @error Then Return SetError(1, 0, 0)
$hwnd = GUICtrlGetHandle($CtrlID)
If $hwnd = 0 Then Return SetError(2, 0, 0)
DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
If @error Then Return SetError(3, 0, 0)
Else
$InfoBlock = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hmod, "str", $Resname, "long", $ResType)
If @error Then Return SetError(4, 0, 0)
$InfoBlock = $InfoBlock[0]
If $InfoBlock = 0 Then Return SetError(5, 0, 0)
$ResSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hmod, "int", $InfoBlock)
If @error Then Return SetError(6, 0, 0)
$ResSize = $ResSize[0]
If $ResSize = 0 Then Return SetError(7, 0, 0)
$Mem = DllCall("kernel32.dll", "int", "LoadResource", "int", $hmod, "int", $InfoBlock)
If @error Then Return SetError(8, 0, 0)
$Mem = $Mem[0]
If $Mem = 0 Then Return SetError(9, 0, 0)
$pMem = DllCall("kernel32.dll", "int", "LockResource", "int", $Mem)
If @error Then Return SetError(8, 0, 0)
$pMem = $pMem[0]
If $pMem = 0 Then Return SetError(10, 0, 0)
If $Resfile <> -1 Then DllCall("Kernel32.dll", "int", "FreeLibrary", "str", $hmod)
$hData = _MemGlobalAlloc($ResSize, 2)
$pData = _MemGlobalLock($hData)
_MemMoveMemory($pMem, $pData, $ResSize)
_MemGlobalUnlock($hData)
$ret = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "int", $hData, "long", 1, "Int*", 0)
$pStream = $ret[3]
_GDIPlus_Startup()
$pBitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0)
$pBitmap = $pBitmap[2]
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pBitmap)
$hwnd = GUICtrlGetHandle($CtrlID)
If $hwnd = 0 Then Return SetError(11, 0, 0)
DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
If @error Then Return SetError(12, 0, 0)
_GDIPlus_BitmapDispose($pBitmap)
_GDIPlus_Shutdown()
$dll = DllStructCreate("Uint", $pStream)
$dll2 = DllStructCreate("uInt", DllStructGetData($dll, 1) + 8)
DllCall("", "UInt", DllStructGetData($dll2, 1), "UInt", $pStream)
_WinAPI_DeleteObject($pStream)
$pStream = 0
_MemGlobalFree($hData)
EndIf
EndFunc ;==>_SetImageFromResource
Danke Slyzze
|
|
|
01/14/2012, 16:28
|
#2
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
So etwas sieht man immer gerne. Hilfe wollen und dann die Möglichkeit ausschließen anderen zu helfen, indem relevantes gelöscht oder zensiert wird.
Fängt schon damit an, dass du zu viele unnötige Includes in deinem Script hast. Dein wirkliches Problem lässt sich aber einfach erklären: Um die Werte zu ändern muss die Funktion "_Werte_Aendern()" aufgerufen werden. Diese Funktion wird aber nie aufgerufen, da sich der einzige Funktionsaufruf unter dem "Exit" beim schließen des Fensters befindet. Das "Exit" am Ende der Funktion hat dort auch nicht wirklich etwas verloren.
Richtig wäre und besser wäre es z. B. so:
PHP Code:
While Sleep(50)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$ProcessId = ProcessExists("S4Client.exe")
If $ProcessId > 0 Then _Werte_Aendern($ProcessId)
WEnd
Func _Werte_Aendern($ProcessId)
$Handle = _MemoryOpen($ProcessId)
If Not @error Then
If BitAND(GUICtrlRead($SPR), $GUI_CHECKED) Then
;_MemoryWrite()
EndIf
If BitAND(GUICtrlRead($SP), $GUI_CHECKED) Then
;_MemoryWrite()
EndIf
If BitAND(GUICtrlRead($GOD), $GUI_CHECKED) Then
;_MemoryWrite()
EndIf
If BitAND(GUICtrlRead($AMMO), $GUI_CHECKED) Then
;_MemoryWrite()
EndIf
_MemoryClose($Handle)
Else
;Fehlermeldung
EndIf
EndFunc
Allerdings habe ich starke Zweifel daran, dass das ohne Pointer mit _MemoryWrite() funktioniert. Falls du also die Frage hast, wieso es immer noch nicht funktioniert → such die Pointer. Und wenn es dann immer noch nicht funktioniert, würde ich es mal auf XTrap, HackShield oder was auch immer S4 verwendet schieben. Mehr kann ich dazu nicht sagen.
Zu guter Letzt deine Frage bezüglich des HWID Systems. Aber erst möchte ich etwas anmerken. Du schreibst, dass du den Hack für dich machen möchtest, sollte das der Wahrheit entsprechen, wäre das HWID System nur lästig und unnötig. Realistischer ist es, dass du dich an einem Hack probieren möchtest um diesen am Ende auch zu releasen.
Falls du dir die Frage stellst, warum ich es schreibe, obwohl du diese Frage bereits durch das editieren deines Beitrags gelöscht hast: Du musst nicht unnötigerweise einen neuen Thread öffnen.
Zu lösen ist es ganz einfach, benutze einfach meine UDF:
PHP Code:
#include <GetHWID.au3>
$Info = _GetHWIDData()
If Not @error Then
If $Info[3] > 99 And $Info[4] > 49 Then ;If posts > 99 And thanks > 49 Then
;...
EndIf
EndIf
|
|
|
01/14/2012, 16:33
|
#3
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
Danke,
sorry ich habe das rausgenommen weil sont jeder die Values hat und jemand hat mir die Anvertraut.
Ich versuchs mal.
Das mit dem HWID hat sich schon erledigt.
Also muss ich unter MemoryWrite die ADressen packen?
Ich checks gerade nicht ganz.
Mein Fehler hab's in Ruhe durchgelesen.
Teste alles gleichmal.
Wofür ist de Variable $GUI_CHECKED?
|
|
|
01/14/2012, 16:44
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Zum überprüfen, ob die Checkbox ausgewählt wurde.
In deinem Script hast du doch selbst _MemoryWrite() verwendet, was verstehst du daran nicht? Du hast die Informationen gelöscht oder zensiert, also habe ich einen Kommentar hinzugefügt, dass dort deine _MemoryWrite() Befehle hingehören.
|
|
|
01/14/2012, 16:49
|
#5
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
Ja,
ich weiß ich habe zu schnell gelsen
Noch eine Frage erstmal.
Wie kann ich das machen, dass man ein Thanks bei dem Release geben muss.
Also kein Thanks = Kein Programm ( falls ich es Release )
|
|
|
01/14/2012, 17:01
|
#6
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Das ist zwar ganz einfach, aber ich werde dir dafür kein Script geben. Jeder der selbst etwas vernünftiges releasen kann, kann auch so eine einfache Überprüfung durchführen.
Die benötigten Funktionen kann ich dir sagen:
_GetHWIDData()
InetRead()
_StringBetween()
StringInStr()
|
|
|
01/14/2012, 17:12
|
#7
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
Hm,
ALso MemoryWrite habe ich die Adresse die ist richtig und will die Value Byte in 1 ändern das klappt aber nicht -.-"
Oke voon Strings habe ich noch keine AHnung aber egal.
|
|
|
01/15/2012, 17:24
|
#8
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
BUMP.
Hilfe
|
|
|
01/15/2012, 21:31
|
#9
|
elite*gold: 5
Join Date: Sep 2010
Posts: 9,927
Received Thanks: 4,387
|
1. Warum sind dir Thanks so wichtig? Einen Hack gegen Thanks releasen habe ich noch nie gesehen und halte es auch für schwachsinnig. Thanks bringen dich nicht weiter. Dann nimm lieber Geld.
2. Ich bin kein AutoIt Profi aber es gibt die HTTP Webrequest Methode, mit der man soetwas (Thanks) abfragen kann. In VisualBasic.Net würde ich das schnell hinkriegen, die Befehle dafür in AutoIt kenne ich nicht.
Sonst suche mal nach den Befehlen, die KillerDeluxe dir gegeben hat im Internet, vieleicht verstehst du es dann. Mit Strings kann man gut arbeiten und es ist eigentlich ziemlich leicht.
3. Dein Script kann garnicht so funktionieren, wie du es gerne hättest. KillerDeluxe hat es schon richtig geschrieben, du brauchst die Pointer (Bzw. Offsets) für S4League. Die Adresse die du da jetzt hast ist schon lange nicht mehr gültig. Die gilt nur für das eine Mal, wenn du S4 startest. Nach Neustart ist die Adresse für die HP Beispielsweise wieder anders.
Da kommen die Pointer und Offsets in's Spiel. Die zu suchen ist schon kniffliger.
Grüße
|
|
|
01/16/2012, 14:56
|
#10
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
Nur ist das egal Ich will nur wissen wieso das mit memorywrite nicht geht Oo
|
|
|
01/16/2012, 16:30
|
#11
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
wenn du über winapis den speicher modifizieren möchtest, musst du zunächst schauen, ob dein zielprozess eventuell geschützt wird. davon abgesehen sind für den zugriff auf den speicher anderer programme adminrechte notwendig.
wenn du dir ganz sicher bist, das der prozess nicht geschützt ist, und die notwendigen rechte vorliegen, und der wert wird dennoch nicht gesetzt, kannst du anfangen die rückgabewerte der winapis zu analysieren.
- wurde openprocess mit den benötigten rechten ausgeführt?
- was gibt openprocess aus?
- handelt es sich wirklich um ein handle?
- setzt ReadProcessMemory irgendwelche fehlerflags?
- wenn ja welche, und warum?
|
|
|
01/16/2012, 17:26
|
#12
|
elite*gold: 5
Join Date: Sep 2010
Posts: 9,927
Received Thanks: 4,387
|
Quote:
Originally Posted by .Downkalypse
Nur ist das egal Ich will nur wissen wieso das mit memorywrite nicht geht Oo
|
Hast du meinen Beitrag überhaupt vollständig gelesen? Es kann so nicht funktionieren. Die Adresse die du da hast funktioniert nicht.
Damit dein Trainer auch in Zukunft bis zum nächsten Patch funktioniert, brauchst du Pointer und Offsets.
|
|
|
01/18/2012, 18:31
|
#13
|
elite*gold: 504
Join Date: Jul 2010
Posts: 7,771
Received Thanks: 510
|
Echt.
Nur leider gehen sie
Es geht nun alles Danke an RealFreak.
#clsrq
|
|
|
01/18/2012, 18:51
|
#14
|
elite*gold: 5
Join Date: Sep 2010
Posts: 9,927
Received Thanks: 4,387
|
Quote:
Originally Posted by .Downkalypse
Echt.
Nur leider gehen sie
Es geht nun alles Danke an RealFreak.
#clsrq
|
Du hast die Sachen nicht selber zusammengesucht, hast einen Code von irgendwo kopiert und weißt dann nichtmal wie man das benutzt. Dann will ich dir erklären, dass es so nicht funktioniert und du zeigst mir eine Facepalm?
Entweder werden bei S4 die Adressen nicht geändert (was ich aber nicht glaube) oder es stand etwas Relevantes in deinem zensierten Code, was ich natürlich dann nicht lesen kann.
Adressen alleine reichen halt nicht.
|
|
|
 |
Similar Threads
|
Autoit Script als nicht Autoit erkennbar machen
02/22/2013 - AutoIt - 22 Replies
Hallo
es haben wiele bestimmt schon gesehn das w0uter mal eine Anleitung gepostet hat wie man ein Autoit script so umbaut das es keins mehr ist.
Die anleitung ist aber leider weg :(
Dann habe ich mich selber rangesetz und was ausprobiert aber hat nichts gebracht.
Dann habe ich geguckt bis wohin sein script geht als ... (kA wie man das nent halt das im hex editor ganz links diese 0x zahlen) und davor habe ich ein ha genauso eins gemacht und verglichen.
Am anfang habe ich bemerkt es fengt...
|
Kann mir jemand ein autoit script schreiben oder sagen wie das geht?
05/13/2011 - Rift - 4 Replies
Huhu ich hätte gerne ein autoit script für rift und zwar soll er wenn ich rift minimiert habe, die ganze zeit die Taste "W" gedrückt halten und alle 2sekunden "Leertaste" drücken, dazu dann noch alle 3 sekunden "tab" und alle 1 sekunden eine random taste von 1-9
sowas geht doch eigl raltiv einfach oder?, soll dazu dienen das man nicht ausm bg fliegt wenn man mal afk muss, das geht in rift nämlich echt schnell
|
All times are GMT +1. The time now is 15:08.
|
|