|
You last visited: Today at 11:58
Advertisement
Cod 4 Hack mit Cheat Engine und Autoit
Discussion on Cod 4 Hack mit Cheat Engine und Autoit within the General Coding forum part of the Coders Den category.
04/25/2010, 18:42
|
#16
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
ok desert naja hatte noch nie was mit autoit am hut
weil das ja c++ etwas nahkommt dachte ich funzt da auch
@fx168
und zu detour gibt es z.B ein tut hier im forum bei gamehacking tut's mußte mal schauen 
aber wie gesagt das wird aber nicht gehen weil es für c++ ist
und nicht für autoit
lern einfach c++ damit kannst du mehr machen
|
|
|
04/25/2010, 18:49
|
#17
|
elite*gold: 92
Join Date: Mar 2010
Posts: 3,315
Received Thanks: 435
|
OK werds mir mal ansehen. Autoit und C++ sind sich ja teiweiße ähnlich. C++ kann ihc leider kaum. Aber Danke für den Tipp xD. Werd mal schauen ob sich das teilweiße übernehmen lässt :-)
----> Noch ne wichtige Frage warum stürtzt das Spiel fast bei jedem Memory ändern ab?
Mach ich da was falsch?
Hier zum Beispiel stürtzt es immer ab :
#include <NOmadmemory.au3>
$Priv=SetPrivilege("SeDebugPrivilege",1)
$Priv=0x38
$memory1 = _Memoryopen (ProcessExists("iw3mp.exe"))
$fog = 0x63DB0D
_Memorywrite ($fog, $memory1, "0x75, 0x20",'byte[4]')
Sleep (1000)
_memoryclose ($memory1)
|
|
|
04/25/2010, 20:02
|
#18
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by P-a-i-n
@fx168
und zu detour gibt es z.B ein tut hier im forum bei gamehacking tut's mußte mal schauen 
aber wie gesagt das wird aber nicht gehen weil es für c++ ist
und nicht für autoit
lern einfach c++ damit kannst du mehr machen 
|
Und das ist der grund warum das in Autoit nicht möglich ist weil man für Esp hacks hooks benutzt, man allerdings mit AutoIt nicht hooken kann.
|
|
|
04/28/2010, 22:10
|
#19
|
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
|
Hooken heißt eine Funktion des "Opfers" in sein eigenes Programm umleiten und diese dann nach belieben manipulieren.
|
|
|
05/11/2010, 10:10
|
#20
|
elite*gold: 0
Join Date: Nov 2009
Posts: 29
Received Thanks: 1
|
...
|
|
|
08/04/2010, 18:46
|
#21
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by HardCore.1337
Bei Inline Assembler kannst du Assembler Code direkt in deine Programmiersprache (z.B. C++, Delphi...) einfügen. So zu sagen Assemblercode und der allgemeine Code vermischt. Bei AutoIt geht das aber nicht.
|
Quote:
Originally Posted by Akorn
Und das ist der grund warum das in Autoit nicht möglich ist weil man für Esp hacks hooks benutzt, man allerdings mit AutoIt nicht hooken kann.
|
woher habt ihr denn diese weisheiten?
wenn man sich mit sprachen nicht auskennt, sollte man nicht so schnell mit abwertenden sprüchen daherkommen.
asm ist eine einfache sprache. man kann in jeder sprache jede andere sprache einbauen.
und da autoit in der lage ist winapis zu nutzen, ist der funktionsumfang ähnlich dem von c++.
selbstverständlich müsste man sich zunächst die benötigten asm funktionen definieren, kann jedoch mithilfe der in der kernel32.dll gegebenen funktionen leicht auch kompliziertere hacks realisieren.
dazu braucht man sich nur per VirtualAllocEx im targetprocess platz für seine eigenen funktionen schaffen.
auf diese art und weise kann man leicht funktionen in den neu geschaffenen raum umleiten und dort durch eigene erweitern/ersetzn.
auch sofortiges assemblieren vom eigenem code im targetprocess ist in sprachen die in der lage sind winapis zu nutzen kein problem. als grundlage hierfür kann man die CreateRemoteThread funktion nutzen.
ich kann also in autoit wie auch in jeder anderen sprache die in der lage ist winapis zu nutzen sowohl inline assmabling als auch codecaves in anderen processen nutzen.
habe leider cod noch nie gespielt und kann nicht darüber sagen aber hier mal ein kleines beispiel wie ich zb eine funktion aus dem perfect world client nutzen kann:
Code:
Func SelectMob($id)
Local $pRemoteThread, $vBuffer, $loop, $result, $OPcode
; --- save the position of the allocated memory ---
$pRemoteMem = DllCall($kernel32, 'int', 'VirtualAllocEx', 'int', $mid, 'ptr', 0, 'int', 0x46, 'int', 0x1000, 'int', 0x40)
; --- build up the asm code ---
; 0046061D A1 6C3E9F00 MOV EAX,DWORD PTR DS:[9F3E6C]
; 00460622 57 PUSH EDI <---- EDI Contains Mob-ID
; 00460623 8B48 20 MOV ECX,DWORD PTR DS:[EAX+20]
; 00460626 81C1 EC000000 ADD ECX,0EC
; 0046062C E8 8F961800 CALL elementc.005E9CC0
$OPcode &= '60' ; pushad
$OPcode &= 'A1'&_hex($base) ; mov eax, [base]
$OPcode &= '68'&_hex($id) ; push mob-id
$OPcode &= '8B4820' ; mov ecx, [eax+0x20]
$OPcode &= '81C1'&_hex(0xEC) ; add ecx, 0xEC
$OPcode &= 'E8'&_hex($select_call-$pRemoteMem[0]-5-StringLen($OPcode)/2) ; call select_call
$OPcode &= '61' ; popad
$OPcode &= 'C3' ; retn
; --- enter the asm code to to a dllstruct, which can be used with WriteProcessMemory ---
$vBuffer = DllStructCreate('byte[' & StringLen($OPcode) / 2 & ']')
For $loop = 1 To DllStructGetSize($vBuffer)
DllStructSetData($vBuffer, 1, Dec(StringMid($OPcode, ($loop - 1) * 2 + 1, 2)), $loop)
Next
; --- now letz write the code from our dllstruct ---
DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $mid, 'int', $pRemoteMem[0], 'int', DllStructGetPtr($vBuffer), 'int', DllStructGetSize($vBuffer), 'int', 0)
; --- now we run the asm code we've just written ---
$hRemoteThread = DllCall($kernel32, 'int', 'CreateRemoteThread', 'int', $mid, 'int', 0, 'int', 0, 'int', $pRemoteMem[0], 'ptr', 0, 'int', 0, 'int', 0)
; --- wait till the thread did his job ---
Do
$result = DllCall('kernel32.dll', 'int', 'WaitForSingleObject', 'int', $hRemoteThread[0], 'int', 50)
Until $result[0] <> 258
; --- close everything we've opened ---
DllCall($kernel32, 'int', 'CloseHandle', 'int', $hRemoteThread[0])
DllCall($kernel32, 'ptr', 'VirtualFreeEx', 'hwnd', $mid, 'int', $pRemoteMem[0], 'int', 0, 'int', 0x8000)
Return True
EndFunc
wie man sieht ist es teilweise nicht leicht funktionen wie beispielweise calls in autoit umzusetzen, da dort der hex code nicht ohne weiteres erstellt werden kann, jedoch lässt sich mit einem gewissen hintergrundwissen über asm auch dies bewerkstelligen.
habe hier jetzt mal auf das definieren der asm funktionen verzichtet und direkt die hexcodes genutzt, was das ganze etwas unübersichtlicher macht, aber auch den code deutlich kleiner hält =)
|
|
|
08/04/2010, 19:52
|
#22
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Schon klar das man in jeder Sprache die die WinApi unterstützt hooken kann in den man eine funktion(die aus Maschienencode) als Opcodes in den speicher des fremden prozesses schreibt und eine funktion dan darauf umleitet.
Aber man kann keine funktion auf eine funktion umleiten die man in Autoit geschrieben hat.Die Also in Skriptcode vorliegt.
Es soll ja auch möglich sein in Autoit Inline Assembler zu benutzen.
Dadurch kann man sich schon eine eigene funkton schreiben die da in maschienencode vorliegt, und wo man dan eine andere funktion drauf umleiten kann. Aber dann ist die Eigene Funktion ja wieder in Assembler geschrieben und nicht in Autoit.
|
|
|
08/04/2010, 20:36
|
#23
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
dir is schon klar das es inline asm genannt wird weil es asm ist?
der einzige unterschied zwischen autoit und c++ ist in diesem falle, das du dich bei c++ in den process setzen kannst, und bei autoit immer nur von aussen den process beeinflussen kannst.
das heist aber nicht das du nicht genau wie in c++ jede funktion umleiten, oder sogar den eigentlichen prozessfluss stoppen und deinen eigenen dafür einspringen lassen kannst.
der indirekte zugriff auf den prozess kann sogar in manchen situatuationen deutlich besser arbeiten als wenn man direkt im prozess sitzt.
wie auch immer... das gerücht das man in autoit kein inline asm nutzen kann ist schlichtweg falsch.
es ist vielleicht mit viel aufwand verbunden asm funktionen zu implementieren, jedoch ist es genau wie in den meisten anderen sprachen möglich.
|
|
|
08/04/2010, 21:19
|
#24
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Inline Assembler in einer Interpreter Sprache gibt es nicht.
Natürlich kann man sich mit jeder Sprache die Zugriff auf die Windows API hat eine schöne Code Cave oder Stub Funktionen bauen, um damit ähnliche Funktionalität zu implementieren, aber man hat immer noch den Nachteil auf IPC angewiesen zu sein.
Und damit auch klar ist was ich meine, Inline Assembler ist Assembler Code der in einer Funktion vorliegt, beim compilieren wird der Compiler diesen Code an den assembler übergeben und die daraus resultierenden Opcodes in die Funktion einbauen.
Darüber hinaus ist Autoit furchtbar langsam, es gibt genügend Skriptsprachen die schneller sind, deren Code lesbarer ist und die man trotzdem leicht erlernen kann, der einzige Grund für die Verbreitung von Autoit ist die Funktionssammlung die mit geliefert wird.
|
|
|
08/05/2010, 03:24
|
#25
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by lolkop
woher habt ihr denn diese weisheiten?
wenn man sich mit sprachen nicht auskennt, sollte man nicht so schnell mit abwertenden sprüchen daherkommen.
asm ist eine einfache sprache. man kann in jeder sprache jede andere sprache einbauen.
und da autoit in der lage ist winapis zu nutzen, ist der funktionsumfang ähnlich dem von c++.
selbstverständlich müsste man sich zunächst die benötigten asm funktionen definieren, kann jedoch mithilfe der in der kernel32.dll gegebenen funktionen leicht auch kompliziertere hacks realisieren.
dazu braucht man sich nur per VirtualAllocEx im targetprocess platz für seine eigenen funktionen schaffen.
auf diese art und weise kann man leicht funktionen in den neu geschaffenen raum umleiten und dort durch eigene erweitern/ersetzn.
auch sofortiges assemblieren vom eigenem code im targetprocess ist in sprachen die in der lage sind winapis zu nutzen kein problem. als grundlage hierfür kann man die CreateRemoteThread funktion nutzen.
ich kann also in autoit wie auch in jeder anderen sprache die in der lage ist winapis zu nutzen sowohl inline assmabling als auch codecaves in anderen processen nutzen.
habe leider cod noch nie gespielt und kann nicht darüber sagen aber hier mal ein kleines beispiel wie ich zb eine funktion aus dem perfect world client nutzen kann:
Code:
Func SelectMob($id)
Local $pRemoteThread, $vBuffer, $loop, $result, $OPcode
; --- save the position of the allocated memory ---
$pRemoteMem = DllCall($kernel32, 'int', 'VirtualAllocEx', 'int', $mid, 'ptr', 0, 'int', 0x46, 'int', 0x1000, 'int', 0x40)
; --- build up the asm code ---
; 0046061D A1 6C3E9F00 MOV EAX,DWORD PTR DS:[9F3E6C]
; 00460622 57 PUSH EDI <---- EDI Contains Mob-ID
; 00460623 8B48 20 MOV ECX,DWORD PTR DS:[EAX+20]
; 00460626 81C1 EC000000 ADD ECX,0EC
; 0046062C E8 8F961800 CALL elementc.005E9CC0
$OPcode &= '60' ; pushad
$OPcode &= 'A1'&_hex($base) ; mov eax, [base]
$OPcode &= '68'&_hex($id) ; push mob-id
$OPcode &= '8B4820' ; mov ecx, [eax+0x20]
$OPcode &= '81C1'&_hex(0xEC) ; add ecx, 0xEC
$OPcode &= 'E8'&_hex($select_call-$pRemoteMem[0]-5-StringLen($OPcode)/2) ; call select_call
$OPcode &= '61' ; popad
$OPcode &= 'C3' ; retn
; --- enter the asm code to to a dllstruct, which can be used with WriteProcessMemory ---
$vBuffer = DllStructCreate('byte[' & StringLen($OPcode) / 2 & ']')
For $loop = 1 To DllStructGetSize($vBuffer)
DllStructSetData($vBuffer, 1, Dec(StringMid($OPcode, ($loop - 1) * 2 + 1, 2)), $loop)
Next
; --- now letz write the code from our dllstruct ---
DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $mid, 'int', $pRemoteMem[0], 'int', DllStructGetPtr($vBuffer), 'int', DllStructGetSize($vBuffer), 'int', 0)
; --- now we run the asm code we've just written ---
$hRemoteThread = DllCall($kernel32, 'int', 'CreateRemoteThread', 'int', $mid, 'int', 0, 'int', 0, 'int', $pRemoteMem[0], 'ptr', 0, 'int', 0, 'int', 0)
; --- wait till the thread did his job ---
Do
$result = DllCall('kernel32.dll', 'int', 'WaitForSingleObject', 'int', $hRemoteThread[0], 'int', 50)
Until $result[0] <> 258
; --- close everything we've opened ---
DllCall($kernel32, 'int', 'CloseHandle', 'int', $hRemoteThread[0])
DllCall($kernel32, 'ptr', 'VirtualFreeEx', 'hwnd', $mid, 'int', $pRemoteMem[0], 'int', 0, 'int', 0x8000)
Return True
EndFunc
wie man sieht ist es teilweise nicht leicht funktionen wie beispielweise calls in autoit umzusetzen, da dort der hex code nicht ohne weiteres erstellt werden kann, jedoch lässt sich mit einem gewissen hintergrundwissen über asm auch dies bewerkstelligen.
habe hier jetzt mal auf das definieren der asm funktionen verzichtet und direkt die hexcodes genutzt, was das ganze etwas unübersichtlicher macht, aber auch den code deutlich kleiner hält =)
|
Achso....leicht....
Du müsstest deine Funktion dann ja komplett da rein kopieren.
Wenn es wenigstens eine Dll von Detours gäbe, damit man per DllCall detouren kan, aber nein alles schön selbst in den Memory schreiben ;<
Klar ist es möglich, aber nicht komfortabel.
Das sieht man auch an deinem Source.
Außerdem definiere ich inline ASM als Möglichkeit, im Code direkt assembler nutzen zu können und sich nicht kompliziert die Opcodes dareinschreiben zu müssen.
Quote:
der einzige unterschied zwischen autoit und c++ ist in diesem falle, das du dich bei c++ in den process setzen kannst, und bei autoit immer nur von aussen den process beeinflussen kannst.
das heist aber nicht das du nicht genau wie in c++ jede funktion umleiten, oder sogar den eigentlichen prozessfluss stoppen und deinen eigenen dafür einspringen lassen kannst.
der indirekte zugriff auf den prozess kann sogar in manchen situatuationen deutlich besser arbeiten als wenn man direkt im prozess sitzt.
|
Naja, und evtl. dass die Sprache interpretiert wird und deswegen lahmer ist und man nicht alles per DllCall lösen kann.
Quote:
|
der indirekte zugriff auf den prozess kann sogar in manchen situatuationen deutlich besser arbeiten als wenn man direkt im prozess sitzt.
|
Weil man ja mit C++ nur im Prozess hocken kann
Aber mal so als andere Frage in den Raum:
Warum liegt bitte eine Funktion direkt in Maschinencode vor, wenn man sie in inline asm schreibe?
ob ich
Code:
mov eax, my_variable
add eax, 5;
mov my_variable,eax
oder
schreibe, erstmal liegt mir nur der text vor.
Wie kann ich dann einfach so die Funktion in einen anderen Speicherbereich kopieren?
Wenn ihr nun mit Funktionspointern kommen wollt (auch wenn mir nicht bekannt ist, wie man das Ende der Funktion einfach so finden will), das geht doch auch mit Highlevelfunktionen.
Warum muss sie in inline ASM vorliegen?
|
|
|
08/05/2010, 12:34
|
#26
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by MrSm!th
Weil man ja mit C++ nur im Prozess hocken kann
Warum liegt bitte eine Funktion direkt in Maschinencode vor, wenn man sie in inline asm schreibe?
ob ich
Code:
mov eax, my_variable
add eax, 5;
mov my_variable,eax
oder
schreibe, erstmal liegt mir nur der text vor.
Wie kann ich dann einfach so die Funktion in einen anderen Speicherbereich kopieren?
Wenn ihr nun mit Funktionspointern kommen wollt (auch wenn mir nicht bekannt ist, wie man das Ende der Funktion einfach so finden will), das geht doch auch mit Highlevelfunktionen.
Warum muss sie in inline ASM vorliegen?
|
also erstmal habe ich nie gesagt das c++ das nicht beherscht.
und zum rest kann ich nur sagen das ich bereits geschrieben habe, das man in autoit die befehle erst vordefinieren muss.
das der c++ compiler
erst in
Code:
mov eax, my_variable
add eax, 5;
mov my_variable,eax
umwandelt sollte dir wohl klar sein. da der autoit compiler für solche aufgaben nie vorgesehen war, ist er nicht in der lage das von haus aus zu tun. jedoch ist es natürlich ohne weiteres möglich diese funktion selbst zu definieren.
ich sagte nie das es einfacher ist als in sprachen wo solche sachen bereits vordefiniert sind, ich sagte nur das es möglich ist. und das sagte ich nicht um euch hier zu wiedersprechen oder sonstwas sondern einfach nur weil ich leute die sagen das ist unmöglich einfach nicht ausstehen kann.
das schreiben von eigenen compilern ist in jeder sprache möglich. und wenn man den compiler selbst über maschienenbefehle aufbaut, so ist es selbst in autoit möglich deutlich effizientere funktionen aufzustellen als die die c++ nutzt.
|
|
|
08/05/2010, 15:35
|
#27
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Du hast da was zusammengewürfelt.
Die Codebeispiele waren für meine Frage.
Weil ich von euch hier irgendwo gelesen habe, dass es leicht sein soll, eine Funktion zu kopieren, wenn man sie in inline ASM formuliert und deshalb direkt in Maschinencode vorliegen hat und das habe ich nicht verstanden.
Eine komplette Funktion zu kopieren, die ich nicht in ein BYTE Array geschrieben habe (wäre recht aufwendig), scheint mir in C++ und inline asm gleich schwer o.ô
Und zu der Sache mit dem selbst definieren:
Das meine ich doch. Ich bewerte nur Möglichkeiten, die die Sprache von sich aus unterstützt. Man kann auch in C mit viel Gefummel Objektorientierung ermöglichen, aber das ist doch nicht das wahre und deshalb kann man C nicht objektorientiert nennen!
Kritisiert habe ich nur an deinem Post das "einfach". Denn wie man an deinem Source sieht, im Vergleich zu anderen Sprachen ist es alles andere als einfach.
|
|
|
 |
|
Similar Threads
|
How to : Search Pointer with Cheat Engine and use them in Autoit
03/02/2011 - 4Story Hacks, Bots, Cheats & Exploits - 81 Replies
Heut will ich erklären wie man in 4StoryEG Pointer sucht und sie später in Autoit zu einem Hack "verwandelt".
Was wir brauchen:
Wir schreiben wie alle anderen in Autoit
Download AutoIt v3 - Downloads
Einfach auf "Download Autoit v3" klicken und installieren.
http://www.imgbox.de/users/public/images/ZTtkyBtk QV.png
Danach holen wir uns noch den vollwertigen Script Editor dafür gehen wir auf:
SciTE4AutoIt3 Downloads Page
|
Frage über autoit und cheat engine
03/20/2010 - General Coding - 4 Replies
hallo leute !
wahrscheinlich kennt ihr alle cheat engine und auto it
also bei sprengmeister simulator cheate ich mit cheat engine immer sprengstoffe.... kann man das auch mit autoit? ohne den vielen mouseclicks und soo.... ?
danke schon ma im voraus...!
|
autoit bot schreiben mit memory (cheat engine)...
01/22/2010 - AutoIt - 5 Replies
also wie schon im titel beschrieben möchte ich einen bot schreiben...bin aber noch ein richtiger newbie....:S (der Bot soll für metin2 werden, da ich gerne selbsterfahrungen mit den ganzen scripten usw. machen will, und ausserdem sind die meisten entweder kostenpflichtig, haben nen virus oder sie gehen einfach nicht mehr)
hab schon angefangen nen bisschen rum zu scripten kam dann aber leider nicht viel raus (hab es mit pixel search versucht)...ich hab mich dann durch viele foren gelesen aber...
|
kan man bei autoit cheat engine ??
01/09/2010 - AutoIt - 3 Replies
so kan man bei autoit cheat engine value einbinden??
das zb ein knopf wen drauf geklikt wird waffe +9 sind??moklich??
lg gael1509
|
cheat engine / autoit
04/12/2009 - AutoIt - 4 Replies
hey leute
ich hab bei cheat engine jetzt 10 verschiedene werte.
ich möchte jetzt mit autoit ein programm schreiben, dass so lange alle 2 sekunden auf einen button klickt, (pixel: 655, 425) bis irgendeiner der werte auf 12 ist. dann soll er einfach aufhören zu klicken.
wie geht das? kann mir einer helfen bitte?
|
All times are GMT +1. The time now is 11:59.
|
|