OldSchoolHack

Register / Login English

[CS:S] externer Triggerbot


icon [CS:S] externer Triggerbot #1

Join Date: Sep 2010

Posts: 136

Zutaten: Cheat Engine , eine Programmiersprache und ein bisschen Skill
Anmerkung: Es ist nicht immer alles ins Detail oder überhaupt erklärt, teils aus Faulheit, teils als Noob-/LeecherProtection

I : Hintergrundwissen

Um das Tutorial nachvollziehen zu können musst du folgendes wissen...
1. ...die Informationen die benutzt werden um das Radar in CS:S zu zeichnen sind für uns zugänglich.
2. ...diese Informationen sind zum Beispiel: Spielername, Spieler HP, Position (X,Y,Z), Wo er hinschaut (Pitch, Yaw und Roll), usw. Ganz wichtig für uns: Das Team! (ein AimBot wäre also auch denkbar!)
3. ...die Information können wir mit Hilfe einer SpielerID auslesen.
4. ...es gibt eine Variable in der die ID des Objekts gespeichert ist, auf das wir zeigen.

Eigentlich sollte das Tutorial hier schon enden, aber ich werde allen die nicht wissen was sie damit anfangen sollen, zeigen wie das ganze funktioniert.
Anmerkung: Den Coding Part zeige ich in Visual Basic, da ich denke, dass es so am einfachsten für Einsteiger ist.

II : Adressen finden

1. SpielerID vom Objekt auf das wir zeigen:
Diese ID ist am einfachsten zu finden, wenn wir auf einem local server (Spiel erstellen/Create Game) sind mit einem Bot.
Sobald die Bedinung erfüllt ist öfnnen wir CE und machen all das routine Zeug (Attach proc., usw.)
Ich sage einfach: Die Variable ist 3 oder 2, wenn wir auf den Bot schauen. Wenn wir nicht auf den Bot zeigen ist sie 0. Achtung: Nicht auf waffen zum Beispiel schauen, die haben oft auch eine ID, was uns beim Suchen stören kann!
Einfaches Vorgehen: Auf den Bot schauen, 3/2 suchen, auf den Boden schauen, 0 suchen und das ganze wieder von vorn'.
Am Ende bekommen wir wahrscheinlich eine nichtgrüne Adresse. Das heißt sie ist kein Pointer, und wird sich geändert haben, sobald wir CS:S neu starten. Ergo: Davon müssen wir den Pointer finden.
Dazu gibt es online gute Videos, wahlweise meins:

2. Das Radar:
Das Radar zu finden ist mir zu Aufwendig zu erklären, also gebe ich das vor. (kommt später im Coding Teil)

III : Coding Teil (In VB.NET)

Vom Programmieren her will ich euch wirklich nur die Basics vermitteln, den Rest müsst ihr dann schon selbst machen!

1. HL2.exe Prozess Handle

Das Handle vom Process bekommt ihr indem ihr folgendes macht:

TEXT Code:
  1. Dim hl2 As Process ' der wird spaeter unseren Process darstellen
  2. Dim p() As Process = Process.GetProcessesByName("hl2") ' Array von Process's die HL2.exe heissen.
  3. If p.Length > 0 Then ' wenn ein Element im Array vorhanden ist (hl2.exe laeuft) dann...
  4. hl2 = p(0) ' ... setze Process
  5. End If
  6.  

2. readMemory


Im folgenden ist eine Funktion die den Speicher auslist (int32):

TEXT Code:
  1.  
  2. Public Function readmem(ByVal Address As Integer, ByVal proc As Process, Optional ByVal size As Int32 = 4) As Integer
  3. Dim buff As Int32
  4. ReadProcessMemory(proc.Handle.ToInt32, Address, buff, size, Nothing)
  5. Return buff
  6. ' Erfordert denke ich keine weiteren erklaerungen!
  7. End Function
  8.  

dazu brauchen wir folgendes am Anfang des Programms:

   
TEXT Code:
  1. Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Int32, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
  2.  


und last but not least

3. getBaseAddress

Da wir ja mit pointer arbeiten habe ich hier noch eine Function die die base Adresse von einer bestimmten DLL zurükliefert:


TEXT Code:
  1. Public Function getBaseAddr(ByVal DLLName As String, ByVal proc As Process) As Integer
  2. Dim erg As Integer
  3. For Each moz As System.Diagnostics.ProcessModule In proc.Modules
  4. If moz.FileName.IndexOf(DLLName) <> -1 Then
  5. erg = moz.BaseAddress
  6. End If
  7. Next
  8. If Not erg = Nothing Then
  9. Return erg
  10. Else
  11. Return -1
  12. End If
  13. ' Erforder denke ich auch keine weiteren Erklaerungen
  14. End Function

Yippieeeeeeeeeee fast fertig!
Nein, eigentlich fertig, aber weil ich so nett bin hier ein beispiel anhand einer Function:

TEXT Code:
  1. If readmem((getBaseAddr("client.dll", hl2) + &H508170) + (&H140 * (readmem(readmem(getBaseAddr("client.dll", hl2) + pointer, 4) + offset, 4) - 1)) + &H2C, 1) = 2 Then
  2. msgbox("Du ziehlst auf einen Terrorist!")
  3. End If


HF & GL!

Geschrieben von: sMp (/_smp)
Inspiert von: Haloshadow (und seiner Community auf 3rdera.com)

Achtung: Bitte Tutorial nur mit meinem Namen versehen kopieren, es wäre auch nett, wenn ihr mich erwähnt in euren Produkten, bitte nicht kommerziell verwenden!
Danke

UD Status: UD!


__________________

[21:43:44] <-> Reita heißt jetzt R|GW2
[21:44:08] <-> Igromanru heißt jetzt Reita
[21:44:20] <-> Cycode2 heißt jetzt Igromanru
[21:44:27] <-> R|GW2 heißt jetzt Cyode2
icon #2

Join Date: Jan 2009

Posts: 2711

User-Rating:

17 positive
0 negative
Ist das nun ein Radar oder ein Triggerbot

__________________

http://i.imgur.com/p86eYQU.gif
icon #3

Join Date: Sep 2010

Posts: 136

Es ist ein Triggerbot.
Die Info mit den Koordinaten usw. ist einfach nur um sie mal in den Raum geworfen zu haben.
Radarhack ist theoretisch und praktisch auch möglich.

__________________

[21:43:44] <-> Reita heißt jetzt R|GW2
[21:44:08] <-> Igromanru heißt jetzt Reita
[21:44:20] <-> Cycode2 heißt jetzt Igromanru
[21:44:27] <-> R|GW2 heißt jetzt Cyode2
icon #4

Join Date: Apr 2010

Posts: 246

hab des selber aber in autoit

__________________

]
Terrorcore, unleash, extermination
Hyper real, cold blood, determination
Fuck them, I like this sensation
Incredible, I from the annihilation
icon #5

Join Date: Jan 2011

Posts: 6

kann mir jemand helfen, dass in c++ umzusetzen?
Kann den code hier posten will aber niemand nerven..
Wenn jemand helfen will, pm please.
Ansonsten sagt bescheid dann post ich den code.
(sorry für thread push)
icon #6

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
poste ruhig den Code hier, benutz aber die [ cpp] Tags

greetz KN4CK3R

__________________

Hallo
icon #7

Join Date: Jan 2011

Posts: 6

CPP Code:
  1. // triggerbot.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
  2. //
  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <windows.h>
  6. #include <conio.h>
  7.  
  8. using namespace std;
  9.  
  10. BYTE offset[2] = { 0x14, 0x50 };
  11. int main()
  12. {
  13. cout << "Triggerbot" << endl << "by Santo" << endl << endl << endl << "searching Counter-Strike Source";
  14. Sleep(1000);
  15. cout << ".";
  16. Sleep(500);
  17. cout << ".";
  18. Sleep(500);
  19. cout << ".";
  20. HWND cstrike = NULL;
  21. while( cstrike == NULL )
  22. {
  23. cstrike = FindWindow(NULL, L"Counter-Strike Source");
  24. Sleep(100);
  25. }
  26. cout << "Counterstrike Source found" << endl;
  27.  
  28.  
  29. DWORD prozessid;
  30. GetWindowThreadProcessId(cstrike, &prozessid);
  31.  
  32. HANDLE handleprozess;
  33. handleprozess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozessid);
  34.  
  35. DWORD puffer = NULL;
  36. ReadProcessMemory(handleprozess,(void*)(0x4D410C),&offset,sizeof(offset),&puffer);
  37.  
  38. int x;
  39. cin >> x;
  40.  
  41. CloseHandle(handleprozess);
  42.  
  43. return 0;
  44. }
  45.  
Ich weiß nicht genau wie ich weiter machen soll..
irgendein loop der den wert ausgibt..
so ungefähr:
TEXT Code:
  1.  
  2. if(0x000000 > 0)
  3. gegner is da;

Weiß aber auch ehrlich gesagt nicht genau mit dem offset um zu gehen.
Ist das so, dass wenn der wert (beispiel): 0x00000 ist, der gegner nicht im visier ist und das offset (beispiel) 0x1111 dazu kommt, der gegner im visier ist??
hoffe ihr versteht mein kauderwelsch
icon #8

Join Date: Sep 2010

Posts: 136

Folgendes:

Du hast eine Adresse in der die ID (nicht SteamID!)des Spielers gespeichert ist, auf den du zeigst/im fadenkreuz ist/wasauchimmer.
Diese ID kannst du jetzt benutzen um in dem "radarstruct" nachzugucken, in welchem team der Spieler ist.

Beide Adressen/bzw. Pointer musst du selbst finden: Die "baseadress" von dem radar struct und den mit der Spieler ID.

Kleine Hilfe: fang mal an folgende function dir zu überlegen:

CPP Code:
  1.  
  2. int getTeamByID(int ID)
  3. {
  4.  
  5. }
  6.  
Hilfestellung:
TEXT Code:
  1.  
  2. readmem(Form1.getBaseAddr("client.dll") + 0xPOINTERZURADARBASE, 4) + 0x58 + (ID * 0x140)
  3.  

__________________

[21:43:44] <-> Reita heißt jetzt R|GW2
[21:44:08] <-> Igromanru heißt jetzt Reita
[21:44:20] <-> Cycode2 heißt jetzt Igromanru
[21:44:27] <-> R|GW2 heißt jetzt Cyode2
icon #9

Join Date: Jan 2011

Posts: 6

Sorry,
Aber.. Ich habe große Probleme, damit auf die Ideen zu kommen wie man die Adressen herraus findet und benutzt. Also ich brauche nun die Adresse zum radar struct. Gibt es irgendwo einen Anleitung wie man auf die Adressen kommt?
Ich mein mit dem anvisieren, war ja einleuchtend, obwohl ich z.B. auch nicht weiß woher man weiß, dass der wert sich von 0 auf 2 oder 3 und nicht einfach auf 1 oder 2 ändert oder einfach NUR auf 1 (wäre mir sogar logischer: 0: keinen player info text anzeigen, 1: player text anzeigen. Wenn ich jetzt überlege, wie ich auf die Adresse vom radar struct komme, würde mir nur einfallen zu vergleichen, welche Adresse bzw. Pointer es hat wenn ich auf einen aus meinem und dem Gegner Team schaue.

Ich hoffe das ich euch nicht nerv und ihr mir weiter helfen könnt, da ich wirklich gewillt bin zu lernen und nicht einfach copy & paste von z.B. avitamins extern0r code zu machen. Den Code habe ich mir angeschaut, was ein Fehler war, da ich durch fremde Codes meist eh nicht durchblick und nun noch mehr Verwirrung in meinem Kopf herrscht.

€: Die Sachen die bis jetzt erwähnt wurden haben mir schon sehr geholfen etwas Klarheit zu schaffen wie das readen genau funktioniert und wie man es Sinnvoll anwenden kann!
icon #10

Join Date: Sep 2010

Posts: 136

Vorerst weg:
Mit dem suchen von dem radarstruct kann ich dir nicht wirklich helfen! Aber folgendes:
Im Radarstruct sind unter anderem auch Namen gespeichert (Tipp: nie länger als 32 Zeichen!). Du suchst in CE/wasauchimmer nach deinem Namen (bei Typ einfach Text angeben). dann gehst du alle Adressen durch und guckst dir immer den Speicherbereich an (rechtsklick->Memory View) und guckst ob die Namen der anderen Spieler auf dem Server (OFFLINE! CE ist DETECTED! obv. ) in den nächsten/vorherigen 140 bytes findest. Dann musst du noch den ersten Spieler von den ID's her rausbekommen und zählst dann zurück auf die Base. Zu dieser Adresse oder zu einer der vorherigen sollte es dann einen Pointer geben. Wenn du dich nicht blöd anstellst kann dir vllt. auch knacker selbst helfen.
Auszug aus "PlayerData.lua" von 3rdera.com/forum :

TEXT Code:
  1. --Size of player information block 0x140
  2. --Offset to name 12
  3. --Offset to health 30
  4. --Offset to TeamID 44
  5. --Offset to Coords X:52 Y:56 Z:60 -4Byte
  6. --Offset to Angles Pitch:64 Yaw:68 Roll:72 -4Byte


Nun, wenn du genauer überlegst:
Es soll ja nicht nur angezeigt werden, dass ein Gegner unterm Fadenkreuz ist, sondern wenn ja vorallem welcher (Man sieht ja auch den Namen und die HP)! Das ist der Knackpunkt.
Diese wirren Zahlen die Dabei rauskommen (glaub von 1 bis höchstens 64), die sind die, ich nenne sie mal, "Player ID"'s.
Beispiel:

So wie wenn du beim Fangenspiel jedem spieler ne Nummer gibst. Dann fragst du den Schiedsrichter in welchem Team nummer 5 (beispielweise) ist und er sagt dir das.
Jeder spieler der auf einen Server kommt, bekommt so eine ID zugewiesen.  Von dann an, kannst du die Info's die auch oben im code stehen vom radarstruct auslesen.

Auslesen wie folgt:
rm(radarbase + (ID * Blocksize) + offset)
radarbase = tatsächliche radarbase/inhalt vom pointer
ID = Player ID (liest du vom Fadenkreuz ein)
Blocksize= 0x140
offset= siehe im Code oben.
Du readmemst natürlich einen integer. Sollte aber keine probleme bereiten . Aber Achtung: Die Coords und Angles sind in floats gespeichert!

Hoffentlich hilft das! Wenn du noch fragen hast, dann stelle sie ruhig! Wir wollen ja kein "learning by confusing" haben .
Auch Knacker hat in der Art was online... finds nur grad nich

__________________

[21:43:44] <-> Reita heißt jetzt R|GW2
[21:44:08] <-> Igromanru heißt jetzt Reita
[21:44:20] <-> Cycode2 heißt jetzt Igromanru
[21:44:27] <-> R|GW2 heißt jetzt Cyode2
icon #11

Join Date: Jan 2011

Posts: 1

echt klasse thread, wollte nur mal fragen: ist sowas nun eigentlich ud? (natürlich selbst geschrieben mit änderungen usw usw,)

also allgemein das auslesen der daten ?
und wenn ja, macht es ein unterschied für vac/ac-tools ob man nun mit c++ oder vb.net geschrieben hat im endeffekt?

icon #12

Join Date: Sep 2010

Posts: 136

Zum ersten: kp. Hab das in einem kleinen hack von mir und bin nicht banned. nutz es seit ca. 2 monaten. habe aber den letzten monat nicht damit gespielt.

2.: Nein. Aber: kommt auf den Umfang des hacks an. einen injected hack wirst du kaum in .NET coden können.

ACHTUNG: vac betreibt anscheinend mittlerweile Signature scanning. heißt: der hack kann auch wenn er in keinster weiße ins spiel eingreift (was dann auch nicht mehr bannbar wäre (glaub ich) / siehe vac FAQ's) detected werden.

__________________

[21:43:44] <-> Reita heißt jetzt R|GW2
[21:44:08] <-> Igromanru heißt jetzt Reita
[21:44:20] <-> Cycode2 heißt jetzt Igromanru
[21:44:27] <-> R|GW2 heißt jetzt Cyode2
icon #13

Join Date: Jan 2011

Posts: 6

Soo ich wollte einfach mal um es zu verstehen eine Ausgabe machen, welche mir zeigt, dass ich auf einen Spieler schaue (team erstmal egal)
Also hab ich folgendes:
CPP Code:
  1. // triggerbot.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
  2. //
  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <windows.h>
  6. #include <conio.h>
  7. #include <tlhelp32.h>
  8.  
  9. using namespace std;
  10.  
  11. DWORD dwPID = 0;
  12. HANDLE hProcess;
  13. DWORD m_dwAddress;
  14. DWORD dwClient_DLL;
  15. DWORD dwEngine_DLL;
  16. int m_iLookAtPlayer;
  17. int x;
  18. DWORD GetModuleBaseExtern( DWORD dwPID, char* szModuleName );
  19.  
  20. struct sGameWindow
  21. {
  22. HWND hWindow;
  23. };
  24.  
  25. sGameWindow GameWindow;
  26.  
  27. int main()
  28. {
  29. cout << "Triggerbot" << endl << "by Santo" << endl << endl;
  30.  
  31. while( !(GameWindow.hWindow = FindWindow(NULL, "Counter-Strike Source")) )
  32. {
  33. Sleep(10);
  34. cout << "searching Counter-Strike Source";
  35. }
  36. cout << "Counterstrike Source found " << endl;
  37.  
  38. SetForegroundWindow( GameWindow.hWindow );
  39.  
  40. while( !( GetForegroundWindow() == GameWindow.hWindow ) )
  41. {
  42. Sleep(10);
  43. }
  44.  
  45. GetWindowThreadProcessId( GameWindow.hWindow, &dwPID );
  46.  
  47. while( !( hProcess = OpenProcess( PROCESS_ALL_ACCESS, false, dwPID ) ) )
  48. {
  49. Sleep(10);
  50. }
  51.  
  52. while( !( dwEngine_DLL = GetModuleBaseExtern( dwPID, "engine" ) ) )
  53. {
  54. Sleep(10);
  55. }
  56. printf ( "[*] engine.dll [0x%.8X]\n", dwEngine_DLL );
  57. while( !( dwClient_DLL = GetModuleBaseExtern( dwPID, "client" ) ) )
  58. {
  59. Sleep(10);
  60. }
  61. printf ( "[*] client.dll [0x%.8X]\n", dwClient_DLL );
  62. cout << "if client.dll is not 0x38000000 hack won't work" << endl;
  63. cout << "in this case please contact the coder" << endl;
  64.  
  65. cout << "..." << endl;
  66.  
  67. ReadProcessMemory( hProcess, (PVOID)( dwClient_DLL + 0x16Cb0968 ), &m_dwAddress, 4, NULL );
  68.  
  69. while( 1 == 1 )
  70. {
  71. ReadProcessMemory( hProcess, (PVOID)( m_dwAddress + 0x1450 ), &m_iLookAtPlayer, 4, NULL );
  72. printf ( "Look at: %u", m_iLookAtPlayer );
  73. }
  74.  
  75. cin >> x;
  76.  
  77. return 0;
  78. }
  79. DWORD GetModuleBaseExtern( DWORD dwPID, char* szModuleName )
  80. {
  81. HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
  82. MODULEENTRY32 me32;
  83.  
  84. hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
  85. if ( hModuleSnap == INVALID_HANDLE_VALUE )
  86. return 0x0;
  87.  
  88. me32.dwSize = sizeof( MODULEENTRY32 );
  89.  
  90. if ( !Module32First( hModuleSnap, &me32 ) )
  91. {
  92. CloseHandle( hModuleSnap );
  93. return 0x0;
  94. }
  95. do
  96. {
  97. if ( strstr( me32.szModule, szModuleName ) )
  98. {
  99. CloseHandle( hModuleSnap );
  100. return (DWORD)me32.modBaseAddr;
  101. }
  102. }
  103. while( Module32Next( hModuleSnap, &me32 ) );
  104.  
  105. CloseHandle( hModuleSnap );
  106. return 0x0;
  107. }
  108.  
Ich weiß das ein wenig Copy&Paste drin ist aber ich wills halt erstmal verstehen.
Mein Problem ist, dass es immer nur 0 als Wert wieder gibt. Das ich das falsch mache ist mir klar, ich wüsste blos gern was man machen muss um den Wert des Pointers wiederzugeben.
Wie man oben sieht, weiß ich nicht mal genau wie das mit der client.dll + Adresse etc. funktioniert!

(Mein Pointer war: 0x16Cb0968 mit offset: 0x1450
icon #14

Join Date: Jan 2011

Posts: 6

Habe grad bemerkt, dass ich böse was falsch mache..
in meinem code steht (zur überprüfung):
CPP Code:
  1. ReadProcessMemory( hProcess, (PVOID)( dwClient_DLL + 0x4D410C ), &dwAddress, 4, NULL );
  2. ReadProcessMemory( hProcess, (PVOID)( dwAddress + 0x1450), &m_iLookAtPlayer, sizeof(m_iLookAtPlayer), NULL );
  3. printf ( "Address: [0x%.8X]\n", dwAddress );
  4. printf ( "[0x%.8X]",dwAddress + 0x1450\n );
und es kommt raus:

Address: [0x00000000]
[0x00001450]

=S
icon #15

Join Date: Jan 2011

Posts: 6

Also leuts.. nachdem smp mein Verständnis der Sache enorm gesteigert hat, sind wir auf folgenden Fehler gestoßen:
CPP Code:
  1. ReadProcessMemory( hProcess, (PVOID)(dwClient_DLL), &dwClient, sizeof(dwClient), NULL );
  2. dwAddress = dwClient + dwPointer;
  3. printf ( "Clientbase: [0x%.8X]n", dwClient );
  4. printf ( "dwAddress: [0x%.8X]n", dwAddress );
  5. ReadProcessMemory( hProcess, (PVOID)(dwAddress), &dwLookAtPlayer, sizeof(dwLookAtPlayer), NULL );
  6. printf ( "dwLookAtPlayer: [0x%.8X]n", dwLookAtPlayer );
  7. dwFinalOutcome = dwLookAtPlayer + dwOffset;
  8. printf ( "dwFinalOutcome: [0x%.8X]n", dwFinalOutcome );
  9. ReadProcessMemory( hProcess, (PVOID)(dwFinalOutcome), &m_iLookAtPlayer, sizeof(m_iLookAtPlayer), NULL );
Das Problem ist:
Spoiler
Ausführliche Erklärung
Clientbase und dwAddress geben noch den richtigen wert aus.. aber nachdem dwAddress im ReadProcessMemory war und als dwLookAtPlayer "herraus" kommt, ist der Wert 0x00000000.
Kurze Erklärung
der rm von Clientbase+Pointer gibt 0x00000000 als Wert aus!
icon #16

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
könnte es sein das das garnicht mehr geht durch ein update? oder stell ich mich zu blöd an mitm adressen finden?

icon #17

Join Date: Sep 2010

Posts: 38

du stellst dich zu blöd an ^^
habe vor ner woche noch mit den strukturen gearbeitet.
icon #18

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
also ich finde im memory die spielernamen... weis aber nicht genau wo die anfangen und aufhören und des mit dem array? könnte mir des ma pls jmd nomma bissl erklären?
icon #19

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
siehe mein thread externes radar und bunnyhop...
https://www.oldschoolhack.me/forum/thread.php?id=7060
64 * 0x140 große playerstructs...

__________________

http://www.abload.de/img/signfj5o.png
Spoiler
Vids:
Zitate:
Spoiler

Quote from xst
Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit.
Quote from f4gsh0t_h4x
VAC ist an,immer,überall
Quote from gibson.w
Ich mag braune Würstchen
Quote from irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Quote from irc
<OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ...
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
Quote from irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Quote from irc
<~KN4CK3R> dann liegts wenigstens an mir
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)
Quote from Dr_Pepper
ihr seit beide dumm
Tutorials:
Releases:
Gifs:
Spoiler
http://www.abload.de/img/uberesp2sgul2.gif
https://i.imgur.com/Z5VQMrV.gif
http://www.abload.de/img/minesweeperzgaef.gif
icon #20

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
jo des hatte ich mir auch durchgelesen blos wie kommt man eben auf dieses array?
Wie findet man dieses? Ich finde die einzelnen Playernamen in einem kleinen abschnitt aus CE mit Browse Mem Region ... blos wie komme ich von da auf das array?