Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 14:04

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

Advertisement



Wie man Werte Einfriert

Discussion on Wie man Werte Einfriert within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Wie man Werte Einfriert

Ich habe mal kurz gegoogelt, und rausgefunden, wie man mit autoit werte einfrieren kann ohne schleifen, sondern wie cheat engine.


So.

Dar ich im moment eine Verbindung von 10 kb/s habe, werde ich leider keine bilder einfügen können.



Fangen wir an.


Erstmal braucht ihr die Adresse eures wertes.

In meinem Beispiel ist es "319" aus dem cheat engine tutorial step 5.

Ich nehme an ihr habt die adresse.
(Ich denke es ist egal ob es ein ponter ist, dar durch diese methode der pointer genoppt wird, und der wie wir wissen immer gleich ist.)

Macht einen Rechtsklick auf eure adresse, und wählt "Find out what writes to this adress"

Ändert euren wert. Den wert in cheatengine ändern funktioniert nicht. In meinem Beispiel drücke ich "Change Value".

In dem cheatengine debugging fenster solltet ihr nun eine adresse sehen können.

Rechtsklick -> Show this adress in disassembler

Nun seht ihr den Pointer, in assesembler.

Und wie wir in der markerten zeile unter der spalte "bytes "sehen, Besteht die adresse aus 2 bytes. (2 zahlen = 1 byte)

Beispiel.

89 = 1 byte/byte
89 10 = 2 bytes
89 10 46 = 3 bytes

usw.

Nun.

in meinem beispiel hat die zeile die adresse 00421daa.

Und dar es 2 bytes sind heißt das.

00421daa = 89
00421dab = 10

hier ein beispiel zu 3 bytes

00421daa = 89
00421dab = 10
00421dac = 46

Die adresse für jeden byte +1 (In hexformat)

Um den pointer zu freezen müssen wir wie gesagt, die adresse nopen.

Der wert für den befehl nop = 90

Also müssen wir den wert von 00421daa und 00421dab in 90 ändern.

Wenn ihr dass per autoit macht, ist die adresse gefreezt und ändert sich nicht.

Wollt ihr sie aber z.B. auf 99 Freezen, müsst ihr vorher vom wer den pointer finden, ihn in euer script einauen und auf 99 setzen, und danach die adresse nopen.

Um den Freeze rückgängig zu machen einfach wieder die adressen auf die Standart werte stellen.

also 00421daa in 89 und 00421dab in 10

Dann ist es wieder unfreezd.



Hoffe ihr versteht das tutorial und wisst etwas damit anzufangen.





Hier mal ein BeispielScript, um euch zu zeigen wie es funktioniert.

Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Cheat Engine Tutorial", 177, 42, 192, 124)
$Button1 = GUICtrlCreateButton("Freezen", 8, 8, 75, 25)
$Button2 = GUICtrlCreateButton("Unfreezen", 96, 8, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$PID = ProcessExists("Tutorial-i386.exe")
$OPEN = _MemoryOpen($PID)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			Freeze()
		Case $Button2
			UnFreeze()

	EndSwitch
WEnd



Func Freeze()
	_MemoryWrite(0x00421daa, $OPEN, "0x90", 'byte[1]')
    _MemoryWrite(0x00421dab, $OPEN, "0x90", 'byte[1]')
EndFunc

Func UnFreeze()
	_MemoryWrite(0x00421daa, $OPEN, "0x89", 'byte[1]')
    _MemoryWrite(0x00421dab, $OPEN, "0x10", 'byte[1]')
EndFunc
freehuntx is offline  
Old 05/05/2011, 20:53   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Cheat Engine freezt aber in einer Schleife.
MrSm!th is offline  
Thanks
1 User
Old 05/06/2011, 19:19   #3

 
LordKill's Avatar
 
elite*gold: 41
Join Date: Oct 2007
Posts: 1,950
Received Thanks: 3,120
wie MrSm!th es sagt du schreibst den Wert nur für den einen Moment, wenn das programm sich jede paar sekunden aktualisiert, ist der wert nur einen kurzen moment geändert oder gefreezt müsstest das dann anders aufbauen.
Kannst ja in der hauptschleife ne überprüfung einer variablen machen, die beim klicken des buttons geändert wird somit in der While das dann beschrieben wird. Und das unfreeze ist auch kein unfreeze sondern auch nur das gleiche was ich oben gesagt hab.

ungefähr so:

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#Region ### START Koda GUI section ### Form=
Global $var1 0
$Form1 
GUICreate("Cheat Engine Tutorial"17742192124)
$Button1 GUICtrlCreateButton("Freezen"887525)
$Button2 GUICtrlCreateButton("Unfreezen"9687525)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$PID ProcessExists("Tutorial-i386.exe")
$OPEN _MemoryOpen($PID)


While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            Freeze
()
        Case 
$Button2
            UnFreeze
()

    EndSwitch
    If 
$var1 1 then 
        _MemoryWrite
(0x00421daa$OPEN"0x90"'byte[1]')
        
_MemoryWrite(0x00421dab$OPEN"0x90"'byte[1]')
    EndIf
WEnd



Func Freeze
()
    
$var1 1
EndFunc

Func UnFreeze
()
    
$var1 0
EndFunc 
LordKill is offline  
Thanks
2 Users
Old 05/06/2011, 21:30   #4


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Nein, seine Methode ist schon richtig, er überschreibt den Code, der den Wert ändert, das funktioniert.
Ist nur durch viele Anti Cheat Systeme detected; ich wollte auch nur erwähnen, dass CE es wohl in einer Schleife macht.

Du hast wohl nicht ganz verstanden, dass er Code damit ändert und keinen Wert. Den Code muss er natürlich nur einmal überschreiben.

Aber ok,
Quote:
Um den pointer zu freezen müssen wir wie gesagt, die adresse nopen.
Sätze wie sowas leiten auch ziemlich in die Irre.
freehuntx, formulier es richtig oder gar nicht.
MrSm!th is offline  
Old 05/06/2011, 22:23   #5
 
SCORNI's Avatar
 
elite*gold: 0
Join Date: Jun 2009
Posts: 970
Received Thanks: 227
Ja ist schon ganz richtig das CE das in einer Schleife macht, und wenn ich mich noch erinnere nur alle 500 MS.
SCORNI is offline  
Old 05/07/2011, 01:06   #6
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by LordKill View Post
wie MrSm!th es sagt du schreibst den Wert nur für den einen Moment, wenn das programm sich jede paar sekunden aktualisiert, ist der wert nur einen kurzen moment geändert oder gefreezt müsstest das dann anders aufbauen.
Kannst ja in der hauptschleife ne überprüfung einer variablen machen, die beim klicken des buttons geändert wird somit in der While das dann beschrieben wird. Und das unfreeze ist auch kein unfreeze sondern auch nur das gleiche was ich oben gesagt hab.

ungefähr so:

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#Region ### START Koda GUI section ### Form=
Global $var1 0
$Form1 
GUICreate("Cheat Engine Tutorial"17742192124)
$Button1 GUICtrlCreateButton("Freezen"887525)
$Button2 GUICtrlCreateButton("Unfreezen"9687525)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$PID ProcessExists("Tutorial-i386.exe")
$OPEN _MemoryOpen($PID)


While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            Freeze
()
        Case 
$Button2
            UnFreeze
()

    EndSwitch
    If 
$var1 1 then 
        _MemoryWrite
(0x00421daa$OPEN"0x90"'byte[1]')
        
_MemoryWrite(0x00421dab$OPEN"0x90"'byte[1]')
    EndIf
WEnd



Func Freeze
()
    
$var1 1
EndFunc

Func UnFreeze
()
    
$var1 0
EndFunc 
es gibt immernoch leute die nicht verstanden haben was der computer eigentlich im hintergrund macht :s

der threadersteller hat tatsächlich die "magie" des inline asm erkannt, und es gibt hier echt noch leute die das ganze anzweifeln :s
lolkop is offline  
Thanks
1 User
Old 05/07/2011, 02:36   #7
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
Quote:
Originally Posted by lolkop View Post
es gibt immernoch leute die nicht verstanden haben was der computer eigentlich im hintergrund macht :s

der threadersteller hat tatsächlich die "magie" des inline asm erkannt, und es gibt hier echt noch leute die das ganze anzweifeln :s
"Inline ASM" ist in AutoIt grad am Kommen
(Smith, nicht schlagen :<)
Wobei man C++ dafür verwenden sollte.
PenGuin :O is offline  
Old 05/09/2011, 06:57   #8
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Ich dachte immer Ce Friert werte auf diese weise o.0

Dar nach dem Freezen, selbst wenn man CE Geschlossen hat, der wert sich nicht geändert hat.

Und wenn ihr mal einen Wert freezt und in die memory schaut , seht ihr dass der Pointer Genoppt ist.

@MrSm!th
Ich bin deiner nicht würdig und verstehe nichts vom Programmieren. Deshalb kann ich dir bezüglich "formulier es richtig oder gar nicht." nicht dienen. Ich entschuldige mich vielmals dass ich so dumm bin und mir nie die zeit genommen habe c++ zu lernen.

Mission Complete.


und Werte in einer schleife zu ändern ist in autoit als würde ein mensch ein sofa schleppen.

1 geht ja noch, aber bei 2 wirds schwer.




Quote:
Originally Posted by LordKill View Post
wie MrSm!th es sagt du schreibst den Wert nur für den einen Moment, wenn das programm sich jede paar sekunden aktualisiert, ist der wert nur einen kurzen moment geändert oder gefreezt müsstest das dann anders aufbauen.
Kannst ja in der hauptschleife ne überprüfung einer variablen machen, die beim klicken des buttons geändert wird somit in der While das dann beschrieben wird. Und das unfreeze ist auch kein unfreeze sondern auch nur das gleiche was ich oben gesagt hab.

ungefähr so:

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#Region ### START Koda GUI section ### Form=
Global $var1 0
$Form1 
GUICreate("Cheat Engine Tutorial"17742192124)
$Button1 GUICtrlCreateButton("Freezen"887525)
$Button2 GUICtrlCreateButton("Unfreezen"9687525)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$PID ProcessExists("Tutorial-i386.exe")
$OPEN _MemoryOpen($PID)


While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            Freeze
()
        Case 
$Button2
            UnFreeze
()

    EndSwitch
    If 
$var1 1 then 
        _MemoryWrite
(0x00421daa$OPEN"0x90"'byte[1]')
        
_MemoryWrite(0x00421dab$OPEN"0x90"'byte[1]')
    EndIf
WEnd



Func Freeze
()
    
$var1 1
EndFunc

Func UnFreeze
()
    
$var1 0
EndFunc 
Naja Wennschon dannschon:

Code:
 If $var1 = 1 then 
        _MemoryWrite(0x00421daa, $OPEN, "0x90", 'byte[1]')
        _MemoryWrite(0x00421dab, $OPEN, "0x90", 'byte[1]')
elseif $var1 = 0 then
        _MemoryWrite(0x00421daa, $OPEN, "0x89", 'byte[1]')
        _MemoryWrite(0x00421dab, $OPEN, "0x10", 'byte[1]')
   EndIf
freehuntx is offline  
Old 05/09/2011, 10:15   #9
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by PenGuin :O View Post
"Inline ASM" ist in AutoIt grad am Kommen
ich bin jetzt seit ca. 6 jahren mit autoit vertraut (damals durch ein mmorpg darauf gekommen) und mir ist kein zeitpunkt bekannt, zudem autoit nich in der lage war mit winapis umzugehen...

zudem ich nicht verstehe warum du denn inline asm in anführungszeichen gesetzt hast.
lolkop is offline  
Old 05/09/2011, 16:05   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Wenn du aber mal versuchst, mit CE Werte zu freezen, die sehr sehr schnell überschrieben werden, wirst du merken, dass es doch in einer Schleife passieren muss.
Das siehst du zb. bei S4 an den Koordinaten. Würdest du einfach den Code noppen (nicht den Pointer!) müsste man ja genau an einer Stelle bleiben. Du bewegst dich aber immer ein Stück und wirst dann wieder zurück an die alte Stelle teleportiert (sieht man ganz schön, wenn man fällt).
Habe auch schon in CE bemerkt, dass Werte ab und zu wieder zurückgesprungen sind und dann wieder zum eingefrorenen Wert wurden.
Deutet also ziemlich auf eine Schleife hin

p.s. C++ hat damit nichts zutun, eher ASM
MrSm!th is offline  
Old 05/09/2011, 16:42   #11

 
LordKill's Avatar
 
elite*gold: 41
Join Date: Oct 2007
Posts: 1,950
Received Thanks: 3,120
fuuu okay ... habs mit asm vercheckt -.- aber jetzt steht das da auch mit nop etc ._.
LordKill is offline  
Thanks
2 Users
Old 05/09/2011, 23:19   #12
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Quote:
Originally Posted by MrSm!th View Post
Wenn du aber mal versuchst, mit CE Werte zu freezen, die sehr sehr schnell überschrieben werden, wirst du merken, dass es doch in einer Schleife passieren muss.
Das siehst du zb. bei S4 an den Koordinaten. Würdest du einfach den Code noppen (nicht den Pointer!) müsste man ja genau an einer Stelle bleiben. Du bewegst dich aber immer ein Stück und wirst dann wieder zurück an die alte Stelle teleportiert (sieht man ganz schön, wenn man fällt).
Habe auch schon in CE bemerkt, dass Werte ab und zu wieder zurückgesprungen sind und dann wieder zum eingefrorenen Wert wurden.
Deutet also ziemlich auf eine Schleife hin

p.s. C++ hat damit nichts zutun, eher ASM

Ich wollte damit sagen dass C++ geeigneter dafür ist als autoit.

Und wieso soll man denn nicht den Pointer Freezen?? dass ist doch der sinn..
verstehe ich nicht..

Naja was Koordinaten angeht...

In Crysis 2 habe ich einen OPK Geschrieben, in autoit, und beim testen der adressen, ist mir nicht aufgefallen dass mann zurückgesetzt wird...
Ich konnte mich keinen schritt bewegen.


Naja ich Finde Nopen besser als es mit einer schleife zu freezen.
Jedem die seine Meinung.
freehuntx is offline  
Old 05/09/2011, 23:22   #13


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Problem ist, dass Codechanges wie Noppen von Anti Cheats wie XTrap detected werden.

Ich sagte nicht, man soll den Pointer nicht freezen, ich sagte, man noppt ihn nicht.
Nop ist ein ASM Befehl. Die Aussage "Einen Pointer noppen" macht einfach keinen Sinn, man kann höchstens den Code noppen, der den Pointer beschreibt, sodass dieser nicht mehr verändert wird, mehr wollte ich gar nicht mit dem ersten Post sagen.
MrSm!th is offline  
Old 05/10/2011, 01:28   #14
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Ich drück mich eben dessöfteren falsch aus.
Aber ich denke der grundgedanke wird verstanden.

Und wegen der Detection..
Daran kann ich nichts ändern ^^

Ich rate eben zu diesem weg, einen wert zu freezen, wenn man es nicht mit anticheats zu tun hat.
freehuntx is offline  
Reply


Similar Threads Similar Threads
s25 werte
03/19/2011 - Metin2 - 5 Replies
Hallo, bräuchte maln paar werte... hwf+0 sbd+0 ag+0 rek+0 vms+0 jeweils gute und schlechte werte
85-95 Werte
01/23/2010 - Metin2 Private Server - 2 Replies
hi kann mir vieleicht einer ne liste erstellen mit den werten der 85 bis 95 waffen? oder kennt einer nen link wo ich das finden kann?
WERTE???
08/21/2009 - S4 League - 1 Replies
werte sammeln für KIKI und co.!!!!:handsdown:
werte
10/18/2008 - Metin2 Private Server - 5 Replies
hi, wie viel sind folgende sahcen auf longju2 wert..? 1. edelstein 2. pm 3. muschel 4. medi+ 5. medi 6. grüner pott klein
werte
10/16/2008 - Metin2 - 3 Replies
hi, wie viel sind folgende sahcen auf longju2 wert..? 1. edelstein 2. pm 3. muschel 4. medi+ 5. medi 6. grüner pott klein



All times are GMT +1. The time now is 14:04.


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.