Antwort schreiben  Thema schreiben 
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Verfasser Nachricht
DarXPloit_$a1
Halbprofi
***


Beiträge: 206
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 218
Beitrag: #1
xPSP  [TUT] Exploiting Savegames [TEIL 2]

-> Exploiting Savegames [TEIL 3]

-> Exploiting Savegames [TEIL 1]

############################################################ ###################


Hallo Leute,

Ich begrüße euch herzlichst zu dem 2. Teil über das Thema "Savegame Exploits"
Dank des Tutorials "Exploiting Savegames" wissen wir nun, wie wir Savegames exploiten können... Big Grin

... jedoch müssen wir zuvor noch ein SDK anfertigen, bevor wir zum Coden beginnen können.
Wie ihr im Verlauf sehen werdet , spielt das SDK eine unheimlich wichtige Rolle, aber dazu mehr im Folgenden

(Es empfiehlt sich auf jeden Fall zuerst das andere TUT von mir zu lesen, da Einiges aufeinander aufbaut !)




Ein SDK für eueren Exploit erstellen




Aber was ist ein SDK ?

Nun, das SDK ist die Süd-Deutsche Krankenversicherung Big Grin Big Grin Big Grin , natürlich nicht, Spass bei Seite ^^

Das SDK ist ein "Software Development Kit" , welches später euch und anderen Codern hilft , Software , also Binaries für eueren Savegame Exploit zu schreiben.


************************************************************ ********************************************


Unsere durch PRXTool erhaltene Liste an Funktionen

So, ich habe nicht ohne Grund geschrieben , das Einiges nun aufeinander aufbaut.

Wir benötigen jetzt unsere .txt Datei wieder , welche wir zuvor mit PRXTool erstellt haben.

Die Datei sollte unsere "Funktionen" beinhalten, mit ihren dazugehörigen "Stubs".






SDK.S

Wenn wir in einem Programm eine Funktion benutzen, z.B "sceIoOpen" um eine Datei zu öffnen , dann braucht der Compiler auch eine Addresse , wo er diese Funktion finden kann.

Anders gesagt: "Der Stub ist ein Funktion Caller"

Das SDK.S , das übrigens ein Assembler File ist , dient hier so zusagen als Inhaltsverzeichnis an Functionen für den Compiler.

Das heißt im Gegenzug aber auch, dass ihr nur Funktionen benützen könnt , die das Spiel importiert !

Code:
.macro AddNID funcname, nid
    .globl  \funcname
    .ent    \funcname
\funcname = \nid
    .end    \funcname
.endm
    .file    1 "sdk.c"
    .section .mdebug.eabi32
    .section .gcc_compiled_long32
    .previous
    .text
    .align    2
    AddNID sceKernelDcacheWritebackInvalidateAll, 0x08ABC008
    AddNID sceKernelDcacheWritebackAll, 0x08ABBFF8
    AddNID sceIoOpen, 0x08ABBDC0
    AddNID sceIoRead, 0x08ABBD50
    AddNID sceIoClose, 0x08ABBD68
    AddNID sceIoWrite, 0x08ABBD38
    AddNID sceDisplaySetMode , 0x08ABC088
    AddNID sceDisplaySetFrameBuf, 0x08ABC098
    AddNID sceDisplayWaitVblankStart, 0x08ABC0A8
    AddNID sceCtrlSetSamplingMode, 0x08ABC0B8
    AddNID sceCtrlReadBufferPositive, 0x08ABC0C0
    AddNID sceKernelExitGame, 0x08ABBE20
    AddNID sceKernelDelayThread,0x08ABBEB8
    AddNID ...
    AddNID ...
    .ident    "VAL-SDK"


Wir wir gut erkennen können, besteht das SDK.S aus :
AddNID Funktionsname( zB. sceIoOpen) Stub( 0x08ABBDC0 )

In dieser Form wird das SDK.S später in das eigentliche SDK eingegliedert.




Nun habt ihr 2 Möglichkeiten:

Entweder ihr erstellt euer SDK.S manuell, sprich ihr gebt jede Funktion & Stub per Tastatur ein , was übrigens ziemlich lange dauern kann, da ein Spiel durchaus um die 100 Funktionen importiert haben kann.


oder


Ihr lasst den Computer für euch arbeiten, sprich wir benutzen ein Ruby File von dem "Hacker Wololo", welches unser SDK.S von ganz allein generiert.
Dieses .rb File könnt ihr im Anhang downloaden.

Dafür braucht ihr wieder mal eure Kompiler Kenntnisse.

Es empfiehlt sich Cygwin mit einem Ruby Addon installiert zu haben, da wir nun das Ruby File kompilieren müssen / können.

Ihr könnt aber auch einen Ruby Interpreter installieren. Den Windows Installer findet ihr ebenfalls im Anhang zum downloaden.

Dafür legen wir zuerst einen neuen Ordner an, wo wir das Ruby File (buildsdk.rb) und unsere mit prxtool erhaltene .txt Datei hinein kopieren.
Übrigens müsst ihr euere .txt datei in "functions.txt" umbennen.
Danach müsst ihr zu dem Ordner linken, also mit dem "cd" Befehl und dann kompilieren.


Hier ist der Code dafür:

Code:
cd  /cygdrive/c/ wo auch immer euer Ordner ist /
./buildsdk.rb


Danach sollte sich in dem angelegten Ordner eine SDK.S befinden.
PRIMA Smile





SDK.H


OK, nun nehmen wir mal die nächste Datei für unser SDK unter in Ansicht ^^


Code:
#include <pspdisplay.h>
#include <pspctrl.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspaudio.h>
#ifndef __VAL-SDK__
#define __VAL-SDK__
// Typedefs
typedef unsigned char byte;
#endif


Wie der Name schon sagt, ist SDK.H eine "Header Datei"



Header Dateien ?

Header Datein sind allgemein Ansammlungen von Deklarationen (Library), die hier in Bezug zur PSP fast immer gebraucht werden. Sie enthalten z.B. Definition von Funktionen und sind dazu da, damit Programmcode nicht immer neu entwickelt werden muss.



Wie wir hier sehen , werden: pspdisplay , pspctrl , pspkernel , pspdebug & pspaudio includiert. Das sind die am meisten gebräuchlichen Library´s für Savegame Exploits.





Linker.x

So, nun sind wir beim Linker.x angekommen. Erst mal der Code dafür:

Code:
OUTPUT_FORMAT("elf32-littlemips")
OUTPUT_ARCH(mips)
ENTRY(_start)
SECTIONS
{
  . = 0x08810000;
  .text.start : {
    *(.text.start)
  }
  .text : {
    *(.text)
  }
  .rodata : {
    *(.rodata)
  }
  .data : {
    *(.data)
  }
  .bss : {
    *(.bss)
  }
}


Linker.x spielt eine entscheidende Rolle im weiteren Verlauf.

Die Datei hat einen Zusammenhang mit unserem Shellcode und ebenfalls mit der main.c , in der sich später unser eigentlicher Code befinden wird.

Wer das erste Tutorial von mir gelesen hat, dem sollte nun ein ganz bestimmtes Value auffallen - das Value 0x08810000

Als wir uns im letzten TUT den Shellcode erklärt haben, sind wir nur oberflächlich darauf eingegangen. Das werden wir jetzt ändern !



Bevor sceIoRead mit der Anweisung jal aufgerufen wird , sieht man noch folgende Befehle:

Code:
lui $a1 , 0x0881   /* load upper immediate / lade 0x08810000 */
lui $a2,  1           /* lese 10 000 bytes von der Datei */
jal sceIoRead   /* Call sceIoRead */


Diese gehören zur Funktion sceIoRead. Hier mal die Synax für die Funktion:


sceIoRead ( SceUID fd, void *data, SceSize size)



* fd - Der Name der Datei , die geöffnet werden soll
* data - Die Addresse im RAM, wo der Code zum Lesen hingeladen werden soll
* size - Bestimmt , wie viele Bytes gelesen werden sollen.



Also wenn wir die Syntax mit dem Assembler Ausschnitt vergleichen,
dann merken wir, das wir alles haben Wink



* Wir haben den Namen der Datei
* Wir haben die Addresse ( 0x08810000 )
* und wir haben die Anzahl der Bytes die gelesen werden sollen (10 000)



Hier sollte es *Klick gemacht haben Wink ,
der linker.x muss das selbe Value haben, wie wir schon zuvor im Shellcode bestimmt haben.

Sonst wird die Binary nicht ausgeführt.

Das heißt jedoch auch, dass wir nur 10 mb große Binaries erstellen können.





Das Makefile


Code:
PSPSDK=$(shell psp-config --pspsdk-path)
PSPDEV=$(shell psp-config --pspdev-path)
INCLUDE=$(PSPSDK)/include

all:    main

clean:
        rm -rf *~ *.o *.elf *.bin main.s *.bin

CC       = psp-gcc
CFLAGS   := -D PSP -I $(INCLUDE) -W -Wall -O2 -G0 -fno-pic -mno-abicalls -w -fomit-frame-pointer

ASM      = psp-as

sdk.o: sdk.S
        $(ASM) sdk.S -o sdk.o


main.o: main.c
        $(CC) $(CFLAGS) -S main.c -o main.s
        $(ASM) main.s -o main.o

main: main.o sdk.o linker.x
        $(PSPDEV)/bin/psp-ld -T linker.x -L$(PSPSDK)/lib main.o sdk.o -o main.elf
        $(PSPDEV)/bin/psp-strip -s main.elf
        $(PSPDEV)/bin/psp-objcopy -O binary main.elf h.bin



Hierzu ist nur zusagen , dass das Makefile eure Binary erstellen wird.

************************************************************ ********************************************



Abspann

Also, an diesem Punkt sollten wir nun ein: sdk.s , sdk.h , linker.x & makefile haben.

In dem Anhang , welchen ihr downloaden könnt, findet ihr ebefalls die Dateien , die wir in diesem TUT bearbeitet haben.

Jedoch fehlt uns noch die Schlüsseldatei - die main.c

In der main.c wird sich unser ausführbarer Code befinden ^^

Dazu komme ich im wahrscheinlich letzten Tutorial zu diesem Thema
Bis dahin , habt Spass am Hacken !!! Big Grin


ANHANG



############################################################ ###################


-> Exploiting Savegames [TEIL 3]

-> Exploiting Savegames [TEIL 1]

Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 15:01 von DarXPloit_$a1.

05.02.2011 23:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
NeverCheat (Oct-8-2014), onlinesoccer (Feb-8-2011), eMKayWe (Feb-7-2011), WinterFrost (Feb-6-2011), Xeramon (Feb-6-2011), Cor7eZ (Feb-6-2011), -blue7 (Feb-6-2011), doener-junior (Feb-6-2011), m33 (Feb-6-2011), Cha0z (Feb-6-2011), pspbricker (Feb-6-2011), Camaro8000 (Feb-5-2011), joni17 (Feb-5-2011), _Kai_ (Feb-5-2011), xxx_knoppix_xxx (Feb-5-2011)
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #2
RE: [TUT 2] Savegame Exploits & SDK´s

Wie beim letzten Tutorial: Sehr schön Smile

05.02.2011 23:08
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Xeramon (Feb-6-2011), Cha0z (Feb-6-2011)
KingBecks95
Profi
****


Beiträge: 354
Gruppe: User
Registriert seit: Jan 2011

Status: Offline
Danke erhalten: 46
Beitrag: #3
RE: [TUT 2] Savegame Exploits & SDK´s

wär nur noch toll ein vid mit ergebnis zu sehen


PSP:
Modell: 3004 (Brite)
DateCode: 8C
FW-History:
6.20+ (im Dez.10 vom Kumpel abgekauft)->....->5.03 GEN-C(Full)->5.03 Prome-3(4)-> 6.20 PRO-B8 (perm)

Ich warte auf dieses Game: (anzeigen)
06.02.2011 00:16
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Cha0z
Banned


Beiträge: 1.501
Gruppe: Banned
Registriert seit: Oct 2010

Status: Abwesend
Danke erhalten: 436
Beitrag: #4
RE: [TUT] Exploiting Savegames [TEIL 2]

Super TUT!


Alter Nick: Co$m0



GodFather = Faker!!! (anzeigen)
In Arbeit: (CFW Installer v1, Hide my ThingZ v3, 6.20 Cha0z-A, FlasH DumpeR v1) (anzeigen)
06.02.2011 09:17
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DarXPloit_$a1
Halbprofi
***


Beiträge: 206
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 218
Beitrag: #5
RE: [TUT] Exploiting Savegames [TEIL 2]

TUT 3 kommt bald.

In TUT 3 werden wir genauer auf die main.c eingehen, wo sich unser eigentlicher Code befinden wird.
Wir werden ein Hello World für Savegame Exploits coden.

Bis dahin , mfg
Darxploit

06.02.2011 09:39
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Xeramon (Feb-6-2011), Cha0z (Feb-6-2011)
Sparky
Profi
****


Beiträge: 337
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 73
Beitrag: #6
RE: [TUT] Exploiting Savegames [TEIL 2]

Kleiner Fehler, es muss "functions.txt" beim umbenennen heißen, ansonsten Super Tut


06.02.2011 10:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Cha0z (Feb-6-2011), DarXPloit_$a1 (Feb-6-2011)
DarXPloit_$a1
Halbprofi
***


Beiträge: 206
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 218
Beitrag: #7
xPSP  RE: [TUT] Exploiting Savegames [TEIL 2]

Sparky :
Kleiner Fehler, es muss "functions.txt" beim umbenennen heißen, ansonsten Super Tut


Danke , habs behoben thumb

06.02.2011 10:16
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Cha0z (Feb-6-2011)
fixit98
Experte
****


Beiträge: 610
Gruppe: User
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 525
Beitrag: #8
RE: [TUT] Exploiting Savegames [TEIL 2]

Sehr gut Smile

Bzw:
Hier ist für die die nicht immer Internet haben und trotzdem dran arbeiten wolln der Download der beiden TuT´s als PDF :
http://www.multiupload.com/C044PIEZEH



06.02.2011 15:47
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
DarXPloit_$a1 (Feb-6-2011), Cha0z (Feb-6-2011)
Cor7eZ
ps3zone.de
*


Beiträge: 2.143
Gruppe: User
Registriert seit: Aug 2009

Status: Abwesend
Danke erhalten: 1098
Beitrag: #9
RE: [TUT] Exploiting Savegames [TEIL 2]

Ich bin dafür, dass diese Tutorials gepinnt werden!




06.02.2011 16:30
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Cha0z (Feb-6-2011)
DarXPloit_$a1
Halbprofi
***


Beiträge: 206
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 218
Beitrag: #10
xPSP  RE: [TUT] Exploiting Savegames [TEIL 2]

fixit98 :
Sehr gut Smile

Bzw:
Hier ist für die die nicht immer Internet haben und trotzdem dran arbeiten wolln der Download der beiden TuT´s als PDF :
http://www.multiupload.com/C044PIEZEH


Hey, echt super von dir, das auf pdf zu machen thumb

aber ich heiss Darxploit , nicht darksploit Rollende-Augen

06.02.2011 17:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
fixit98
Experte
****


Beiträge: 610
Gruppe: User
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 525
Beitrag: #11
xPSP  RE: [TUT] Exploiting Savegames [TEIL 2]

DarXPloit_$a1 :

fixit98 :
Sehr gut Smile

Bzw:
Hier ist für die die nicht immer Internet haben und trotzdem dran arbeiten wolln der Download der beiden TuT´s als PDF :
http://www.multiupload.com/C044PIEZEH


Hey, echt super von dir, das auf pdf zu machen thumb

aber ich heiss Darxploit , nicht darksploit Rollende-Augen


Ja,ist mir nacher auch aufgefallen Wink Naja es geht ja um den guten Willen Smile



06.02.2011 18:28
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #12
RE: [TUT] Exploiting Savegames [TEIL 2]

Nochmals die selbe Anregung von mir mit dem Delay Slot Wink


statt:

Code:

lui $a1 , 0x0881 /* load upper immediate / lade 0x08810000 */
lui $a2, 1 /* lese 10 000 bytes von der Datei */
jal sceIoRead /* Call sceIoRead */


bitte:

lui $a1 , 0x0881 /* load upper immediate / lade 0x08810000 */
jal sceIoRead /* Call sceIoRead */
lui $a2, 1 /* lese 10 000 bytes von der Datei */

Achja, in dem Pic hast du "li" verwendet, load immediate. Wie schon gesagt, load immediate ist nicht "lui" sondern, "lui" + "addiu".

Wenn du schreibst:
li $t0, 2, dann ist $t0 = 0x00000002
das erreichst du nur mit ori $t0, $zero, 2

Also: li ist nicht lui Wink


Ansonsten gutes Tut.


http://ps4dev.net.tc/ - the new german psp development site. Check it out!

Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2011 14:06 von PSP_Lord.

06.02.2011 18:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
eMKayWe (Feb-7-2011)
DarXPloit_$a1
Halbprofi
***


Beiträge: 206
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 218
Beitrag: #13
xPSP  RE: [TUT] Exploiting Savegames [TEIL 2]

PSP_Lord :
Nochmals die selnbe Anregung von mir mit dem Delay Slot Wink


statt:

Code:

lui $a1 , 0x0881 /* load upper immediate / lade 0x08810000 */
lui $a2, 1 /* lese 10 000 bytes von der Datei */
jal sceIoRead /* Call sceIoRead */


bitte:

lui $a1 , 0x0881 /* load upper immediate / lade 0x08810000 */
jal sceIoRead /* Call sceIoRead */
lui $a2, 1 /* lese 10 000 bytes von der Datei */

Achja, in dem Pic hast du "li" verwendet, load immediate. Wie schon gesagt, load immediate ist nicht "lui" sondern, "lui" + "addiu".

Wenn du schreibst:
li $t0, 2, dan ist $t0 = 0x00000002
das erreichst du nur mit ori $t0, $zero, 2

ALso: li ist nicht lui Wink


Ansonsten gutes Tut.


Ersten ist es das register $a1. Und soll 0x0001 sein.

sceIoOpen braucht 2 parameter:
der eine ist :
li $a1 , 1
0x0001 heisst wir wollen nur Leseberechtigung, "PSP_O_RDONLY"
Smile

Und 2.
Ich bin zwar nicht besonders gut in Assembler Language, aber man muss doch zuerst die parameter setzen und dann die function callen.
Bisher hab ich niemanden gesehen, der wo es anders als hier gemacht hat.

Dieser Beitrag wurde zuletzt bearbeitet: 06.02.2011 19:13 von DarXPloit_$a1.

06.02.2011 19:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Cha0z (Feb-6-2011)
Dr. Soup
Durchstarter
**


Beiträge: 58
Gruppe: User
Registriert seit: Mar 2010

Status: Offline
Danke erhalten: 70
Beitrag: #14
xPSP  RE: [TUT] Exploiting Savegames [TEIL 2]

DarXPloit_$a1 :
Ich bin zwar nicht besonders gut in Assembler Language, aber man muss doch zuerst die parameter setzen und dann die function callen.
Bisher hab ich niemanden gesehen, der wo es anders als hier gemacht hat.

Man sollte nie den Delay Slot frei lassen. Die beste Methode wäre es so zu machen wie PSP_Lord gesagt hat. In MIPS wird der Befehl, der direkt nach einem J-Type Befehl kommt zuerst ausgeführt.


06.02.2011 19:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Cha0z (Feb-6-2011)
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #15
RE: [TUT] Exploiting Savegames [TEIL 2]

Ich weis, welche Parameter sceIoOpen braucht, und ich bin mir auch bewusst, dass lui $a1, 1 0x00010000 bedeutet. ABER: in deinem pic steht li $a1, 1, und das ist a1 = 0x00000001. Nur in deinem Code verwendest du load upper immediate (was richtig ist!). Ich wollte nur klarstellen, dass li nicht lui ist und auch nicht den Effekt hat.

So zum jal: JAL ist ein JUMP and Link Befehl, dieser Befehl hat, wie alle branch und jump Befehle in MIPS, einen Delay Slot. Dieser Delay Slot wird VOR dem jump der JAL ausgeführt. Das heißt, man schreibt folgendes:

lui $a1 , 0x0881 //a1 = 0x08810000
jal sceIoRead //jump to sceIoRead, VORHER aber....
lui $a2, 1 //...a2 = 0x00010000

wenn du es so schreibst, wie du es willst:

lui $a1 , 0x0881 //a1 = 0x08810000
lui $a2, 1 //...a2 = 0x00010000
jal sceIoRead //jump to sceIoRead //dann musst du noch eine NOP hinter die JAL machen
nop

wie du siehts, ist das eine code Zeile zu viel, ist also nicht optimaler code, da eine zusätzliche, unnötige Operation ausgeführt wird. Bei komplexerem code mit vielen branch und jump Befehlen, ist es doch ein Unterschied, ob man den delay Slot verwendet oder nicht.

Ich habe durchaus Erfahrungen mit MIPS und ich programmiere auch für die PSP, blicke also in dieser Materie relativ gut durch, ohne jetzt behaupten zu wollen, ich könnte eine CFW schreiben.


http://ps4dev.net.tc/ - the new german psp development site. Check it out!
06.02.2011 19:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
eMKayWe (Feb-7-2011), Cha0z (Feb-6-2011)
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP [TUT] Exploiting Savegames [TEIL 1] DarXPloit_$a1 26 13.293 21.04.2012 10:04
Letzter Beitrag: hans2116
xPSP [TUT] Exploiting Savegames [TEIL 3] DarXPloit_$a1 7 3.298 22.02.2011 23:17
Letzter Beitrag: DarXPloit_$a1

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang