Bisonte hat geschrieben:PS:Ich hoffe die Adressen die oben standen waren Hexwerte und keine Dezimalwerte
Sind Hexwerte.
Thorium hat geschrieben:Wenn du mehr Trainer schreiben möchtest, solltest du dich lieber ein wenig mit Assembler auseinandersetzen.
Wäre schon froh wenn ich einen Klassischen Trainer der mit Dynamischen Adressen zu recht kommt zum laufen krieg. Kannst mich aber gern auf ein paar Beispiele zum Thema Assembler mit Purebasic explizit zum Thema Trainer bau verweisen je mehr Input desto besser

.
Thorium hat geschrieben:Cheat Engine hat nen Debugger dabei, der dir die Codestellen auflistet, welche auf die Speicheradresse zugreifen.
Ich weiß nur leider ist Cheat Engine bekannt so das sich damit nicht alles Hacken lässt es sei man kann Delphi/Lazarus um sich ein "Undetectable" Cheat Engine anhand des Source Codes kompilieren zu können. Deswegen bevorzuge ich da ein anderen Memory Scanner und einen Externen Debugger/Disassembler

.
Na ja. wie dem auch sei krieg den Trainer trotzdem nicht hin

.
Kompletter Test Source:
Code: Alles auswählen
Global PlantsVsZombiesTest
Procedure HackTheSun(*HackTheSun)
Repeat
Sleep_(0)
If PlantsVsZombiesTest = 1
hWnd = FindWindow_("MainWindow", "Plants vs. Zombies") ;Finde das Fenster Plants vs. Zombies
GetWindowThreadProcessId_(hWnd, @PID) ;Ermittel den Process Identifier des Fensters Plants vs. Zombies
hProcess = OpenProcess_(#PROCESS_ALL_ACCESS,0,PID) ;Öffnet den Prozess Plants vs. Zombies anhand des Process Identifier
BaseAddress = $189190 ;Die BaseAdress der Sonne
OffsetSun = $21880 ;Der Offset der Sonne
NewValue = 1337 ;Der neue Wert
ReadProcessMemory_(hProcess, BaseAddress, @BasePointer, 4, 0) ;Liest die BaseAddresse aus und übergiebt ihn an den BasePointer
WriteProcessMemory_(hProcess, BasePointer + OffsetSun, @NewValue, 4, 0) ;Addire den BasePointer mit OffsetSonne und Überschreibe den alten Wert im Speicher durch den neuen
EndIf
ForEver
EndProcedure
If OpenWindow(0, 0, 0, 100, 70, "DMA Test Trainer", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 155, 50, "PRESS TO HACK")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
If PlantsVsZombiesTest = 0
SetGadgetText(0, "HACK IS ON")
CreateThread(@HackTheSun(),0)
PlantsVsZombiesTest = 1
Else
PlantsVsZombiesTest = 0
SetGadgetText(0, "HACK IS OFF")
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf