bot programmieren fragen

06/01/2010 17:14 nkkk#1
hi da ich auch mla verscjidenen bots machen wollte hätte ich ein paar fragen an erfahrene Bot-Programmierer ;)


meine erste frage ist: das spiel ist ja in C++ geschrieben, und an die dll Exoprtieren ja cpp-symbole, ist es z.B. möglich an den nskp prozess ein thread anzuhängen und von dem aus bestimmte funktionen auszuführen?, oder ist das nicht möglcih, z.B. weil das spiel dagagen geschützt ist?


und meine zweite frage wäre: wie macht ihr es, wenn ihr eine sogenannte Backgrund-mode funktion macht ?
06/01/2010 17:36 TeRRoRKiLL#2
Es gibt gewisse Funktionen um an das Spiel im Hintergrund zb.: Texte zu schicken, dafür gibt es auch Keys, glaube das war Sendkeys(?)

Glaube mit C++ wirst du hier eher weniger Support erhalten, eher im Bereich AutoIt.
Visual Basic bzw. C# wären auch noch möglich mit Support.

[Only registered and activated users can see links. Click Here To Register...]

Ist nun wirklich eine vereinfachte Version, habe ich mal auf die Schnelle in Visual Basic gemacht. (Funktioniert!)

Mfg.
06/01/2010 17:43 nkkk#3
Quote:
Originally Posted by TeRRoRKiLL View Post
Es gibt gewisse Funktionen um an das Spiel im Hintergrund zb.: Texte zu schicken, dafür gibt es auch Keys, glaube das war Sendkeys(?)

Glaube mit C++ wirst du hier eher weniger Support erhalten, eher im Bereich AutoIt.
Visual Basic bzw. C# wären auch noch möglich mit Support.

[Only registered and activated users can see links. Click Here To Register...]

Ist nun wirklich eine vereinfachte Version, habe ich mal auf die Schnelle in Visual Basic gemacht. (Funktioniert!)

Mfg.
ja danke erstmal damit weiss ich jetzt zumindest wie ich Tastendrücke simulieren kann und zwar nicht global sondern an ein bestimmtes Fenster :).
ich programmier zwar eig. auch lieber in c# aber mir ging es voerallem um die erste Frage, ob das möglich ist deswegen dachte ich mir wenn das geht dan wohl in c++ da das spiel auch in c++ gschriben ist



PS: wie veräderst du in .NET den RAM eines prozesses? mit WriteProcessMemory aus der WIN Api oder gibts noch ne andere art?
06/01/2010 17:53 TeRRoRKiLL#4
Quote:
Originally Posted by nkkk View Post
ja danke erstmla damit weiss ihc jez zumindest wie ich tastensimuklieren kann ud zwar ncht global sondern an ein bestimmtes fenste :).
ich programmierei zwar eig auich klieber in c# aber mir ging es voerallem um die erste frage, ob das möglich ist derwegen dachte ich mir wenn dsa geht dan wohl in c++ da das spiel auhc in c++ gschriben ist



PS: wie veräderst du in .NET den RAM eines prozessers? mit WriteProcessMemory aus der WIN Api oder gibts noch ne andere art?
Du meinst vermutlich den Memory des Spiels?

Quote:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function WriteFloatMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function ReadFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByRef buffer As Single, ByVal size As Int32, ByRef lpNumberOfBytesRead As Int32) As Boolean
Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Ist bloß ein wirklich kleiner Teil der API, damit verstehst du eventuell was ich meinen könnte.

(Vb.NET)

Ist eigentlich garnicht so schwierig, ich habe bloß das Problem das der Value von der derzeitigen HP / MP sich nicht aktualisiert, sollte aber recht einfach zu fixxen zu sein. :rolleyes:
06/01/2010 17:55 flogizzmo#5
Quote:
Originally Posted by nkkk View Post
ja danke erstmla damit weiss ihc jez zumindest wie ich tastensimuklieren kann ud zwar ncht global sondern an ein bestimmtes fenste :).
ich programmierei zwar eig auich klieber in c# aber mir ging es voerallem um die erste frage, ob das möglich ist derwegen dachte ich mir wenn dsa geht dan wohl in c++ da das spiel auhc in c++ gschriben ist



PS: wie veräderst du in .NET den RAM eines prozessers? mit WriteProcessMemory aus der WIN Api oder gibts noch ne andere art?
Bitte mach etwas an deiner Rechtschreibung , es ist grauenvoll...
06/01/2010 18:03 nkkk#6
Quote:
Originally Posted by TeRRoRKiLL View Post
Du meinst vermutlich den Memory des Spiels?



Ist bloß ein wirklich kleiner Teil der API, damit verstehst du eventuell was ich meinen könnte.

(Vb.NET)

Ist eigentlich garnicht so schwierig, ich habe bloß das Problem das der Value von der derzeitigen HP / MP sich nicht aktualisiert, sollte aber recht einfach zu fixxen zu sein. :rolleyes:
ja bei mir (c#) sieht das dann immer so aus meint is wohl das gleiche ;)
Quote:
[DllImport("kernel32.dll")]
public unsafe static extern Int32 WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte* buffer,
UInt32 size,
out IntPtr lpNumberOfBytesRead
);

[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(
UInt32 dwDesiredAccess,
Int32 bInheritHandle,
UInt32 dwProcessId
);

......
Quote:
Originally Posted by flogizzmo View Post
Bitte mach etwas an deiner Rechtschreibung , es ist grauenvoll...
ich werds versuchen
06/01/2010 18:10 TeRRoRKiLL#7
Quote:
Originally Posted by nkkk View Post
ja bei mir (c#) sieht das dann immer so aus meint is wohl das gleiche ;)



ich werds versuchen
That's right.
Scheinst dich ja auszukennen. ;)
Mal sehen wie du's lösen wirst mit den ständigen Value-Änderungen.

Timer spackt bei mir rum.
06/01/2010 18:24 KDeluxe#8
PHP Code:
if (this->C_LS->Checked){
    (
this->T_LS->Start());
}else{
    (
this->T_LS->Stop());

Bei mir laufen die richtig (c++).
06/01/2010 18:45 nkkk#9
Quote:
Originally Posted by KillerDeluxe View Post
PHP Code:
if (this->C_LS->Checked){
    (
this->T_LS->Start());
}else{
    (
this->T_LS->Stop());

Bei mir laufen die richtig (c++).
ähh leider kann ich damit iwie nicht viel anfangen :'(

was ist T_LS für ein objekt?
06/01/2010 18:46 TeRRoRKiLL#10
Quote:
Originally Posted by KillerDeluxe View Post
PHP Code:
if (this->C_LS->Checked){
    (
this->T_LS->Start());
}else{
    (
this->T_LS->Stop());

Bei mir laufen die richtig (c++).
Bei mir nun auch, "danke".
(Auch wenn du nichts getan hast)

Hatte nur einen Teilcode in den Timer gepackt, somit wurde es natürlich nicht richtig aktualisiert. *g

:rolleyes:
06/01/2010 18:51 KDeluxe#11
Quote:
Originally Posted by nkkk View Post
ähh leider kann ich damit iwie nicht viel anfangen :'(

was ist T_LS für ein objekt?
Ich geb den Objekten immer andere Bezeichnungen, da ich mir auf Dauer nicht alles merken kann.

Wenn man Beispielsweise über 70 Input/Textboxen hat, weiß man nicht sofort, was "textBox36" ist. Ich gebe ihnen Bezeichnungen, die man später für die Funktion ableiten kann:
C_LS = Checkbox für den Lebens Scanner
T_LS = Timer für den Lebens Scanner
06/01/2010 18:56 nkkk#12
Quote:
Originally Posted by KillerDeluxe View Post
Ich geb den Objekten immer andere Bezeichnungen, da ich mir auf Dauer nicht alles merken kann.
das mach ich auch ^^


aber mal um nochmal auf die erste frage aufmerksam zu machen
Quote:
Originally Posted by nkkk View Post
meine erste frage ist: das spiel ist ja in C++ geschrieben, und an die dll Exoprtieren ja cpp-symbole, ist es z.B. möglich an den nskp prozess ein thread anzuhängen und von dem aus bestimmte funktionen auszuführen?
weiss das jmd?

PS wie macht man in einem post so einen "Spoiler" ?
06/01/2010 19:04 KDeluxe#13
[spoiler]TEXT[ /spoiler]

Was meinst du mit der ersten Frage, ich verstehe nicht, was du machen möchtest. Möchtest du eine .dll injecten?
06/01/2010 19:16 nkkk#14
naja statt das ich die dinge durch mauseingaben simulation ausführe, dachte ich könnte ich die funktionen der dll dierekt aufrufen z.B.
[qoute]
void CPlayerEntity::SetTarget(long,signed char)
void CPlayerEntity::SetTarget(class CEntity *)
int CPlayerEntity::CommandAction(void)
void CPlayerEntity::DoMoving(void)
...

war trotz spioler zu lang:
Der Text, den du eingegeben hast, besteht aus 355970 Zeichen und ist damit zu lang. Bitte kürze den Text auf die maximale Länge von 100000 Zeichen. xD

[/qoute]
kp das sind nur ein paar methoden der CPlayerEntity Klasse, warscheinlcih tun sie was ganz anderes aös ich mir vorstelle :D

aber trotzdem denke ich da sind auch ein paar ganz nüzliche dabei,
06/03/2010 15:23 nkkk#15
hab nochmal ne andere frage, man kann ja mit verschiedenen Tools, den assembler code des progs. verändern, wollte fragen ob jmd ein gutes tool kennt, mitdem man sozusangen eigenen prgrammcode(z.B. C , wo komlizierte sachen nicht ganz so mühsam zu programmieren ist) einzubauen, um die dann gegebenenfalls diese mit einem call in dem assemblecode auszufühhen, CE hat z.B: so eine Funktion aber iwie kackt das spiel bei mir immer ab wenn ich die verwenden will

help pls