KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [TUT-2] Binarys fürs TIFF Exploit
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi alle zusammen!
Also wie versprochen, hier ist ein kleines Tutorial wie man Binarys für ein TIFF Exploit (in diesem Fall das 5.03 Eggsploit) codet.
Vieles habe ich wörtlich aus dem Mercury Tutorial übernommen, da viele Sachen ähnlich sind.
In diesem Tut werde ich versuchen euch zu zeigen, wie man ein kleines Hello World für ein TIFF Exploit codet.

Danke an:
- MaTiaz: Für das Easter TIFF Eggsploit, das vor fast einem Jahr releast wurde (An Ostern Tongue)
- Total_Noobs für die nette Erklärung zu den Funktions Imports^^
- Raiden1996: Für die großartige Hilfe in Sachen Function Imports und MIPS Programmierung Smile
- Die Entwickler des PSPSDKs
- Nem! Ohne ihn hätte es vielleicht nie eine PSP Szene gegeben!
- Alle anderen Devs (Booster, Dark_AleX, Fanjita, ...)

Ihr braucht:
- Eine PSP mit Firmware 5.03 und das TIFF Exploit
- Das MinPSPw, Cygwin oder einen anderen PSP Compiler
- Ihr solltet C können
- Grundwissen in MIPS (nur als Empfehlung)
- Sehr, sehr viel Zeit und Geduld

Ich empfehle auch dringenst einen 2. MemoryStick zu haben, nachdem ich viel mit dem TIFF umhergecodet habe, hat bei mir ChickHEN (ja, diesmal ChickHEN, nicht das TIFF)
so lange nicht mehr funktioniert (es hat nur noch einen Teil des Waves angezeigt, der Rest des Screens wurde schwarz, genauso wie wenn man versucht nen nicht funzenden NID
zu importieren) bis ich den MS gewechselt habe, dann ist es wieder perfekt gegangen Wink

Also, dann mal los Tongue

Wir erstellen uns irgendwo aufm Desktop einen Ordner. In dem Ordner erstellen wir unsere main.c:

Code:
int main(void);

void _start(void) __attribute__ ((section (".text.start")));
void _start(void)
{
    main();
}


Die Erklährung:

Jeder der MIPS kann weiß, dass der Hauptspeicher in verschiedene Sektionen aufgeteilt ist (z.B. ".data" für Variablen und ".text" für Funktionen).
Wenn das Exploit geladen wird, wird die Sektion ".text.start" ausgeführt. Durch diese Zeile weiß der Compiler, wo der Ausführbare Bereich beginnt.
Warum es _start sein muss, erklähr ich später.

Code:
#define SCREEN_WIDTH    512
#define SCREEN_HEIGHT      272
#define LINESIZE           512
#define CMAX_X             60
#define CMAX_Y             38
#define FRAMESIZE          0xAA000

#define INDEX_BLACK        10
#define INDEX_WHITE        1
#define INDEX_PINK        2
#define INDEX_RED        3
#define INDEX_BLUE        4
#define INDEX_GREEN        5
#define INDEX_YELLOW    6
#define INDEX_CYAN        7
#define INDEX_GRAY        9
#define INDEX_DARKGREEN    0
#define RANDOM            rand()%9

unsigned char *vramtop=(unsigned char *)0x04000000;
unsigned long drawframe;

unsigned char *GetVramAddr(unsigned long x, unsigned long y)
{
    return vramtop + (drawframe?FRAMESIZE:0) + x*4 + y*LINESIZE*4 + 0x40000000;
}

unsigned long colours[11] =
{
    0x00008800L,
    0x00FFFFFFL,
    0x00FF00FFL,
    0x000000FFL,
    0x00FF0000L,
    0x0000FF00L,
    0x0000FFFFL,
    0x00FFFF00L,
    0x00FFFF88L,
    0x00888888L,
    0x00000000L
};

const unsigned char font[] =
{
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,
    0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,
    0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,
    0x30,0x7C,0xC0,0x78,0x0C,0xF8,0x30,0x00,
    0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,
    0x38,0x6C,0x38,0x76,0xDC,0xCC,0x76,0x00,
    0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,
    0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00,
    0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,
    0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,
    0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x60,
    0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,
    0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,
    0x7C,0xC6,0xCE,0xDE,0xF6,0xE6,0x7C,0x00,
    0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00,
    0x78,0xCC,0x0C,0x38,0x60,0xCC,0xFC,0x00,
    0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,
    0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x1E,0x00,
    0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,
    0x38,0x60,0xC0,0xF8,0xCC,0xCC,0x78,0x00,
    0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00,
    0x78,0xCC,0xCC,0x78,0xCC,0xCC,0x78,0x00,
    0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,
    0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,
    0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60,
    0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x00,
    0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00,
    0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,
    0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,
    0x7C,0xC6,0xDE,0xDE,0xDE,0xC0,0x78,0x00,
    0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,
    0xFC,0x66,0x66,0x7C,0x66,0x66,0xFC,0x00,
    0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,
    0xF8,0x6C,0x66,0x66,0x66,0x6C,0xF8,0x00,
    0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,
    0xFE,0x62,0x68,0x78,0x68,0x60,0xF0,0x00,
    0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,
    0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00,
    0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,
    0x1E,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,
    0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,
    0xF0,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,
    0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00,
    0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xC6,0x00,
    0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,
    0xFC,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00,
    0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,
    0xFC,0x66,0x66,0x7C,0x6C,0x66,0xE6,0x00,
    0x78,0xCC,0xE0,0x70,0x1C,0xCC,0x78,0x00,
    0xFC,0xB4,0x30,0x30,0x30,0x30,0x78,0x00,
    0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,
    0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,
    0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,
    0xC6,0xC6,0x6C,0x38,0x38,0x6C,0xC6,0x00,
    0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,
    0xFE,0xC6,0x8C,0x18,0x32,0x66,0xFE,0x00,
    0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,
    0xC0,0x60,0x30,0x18,0x0C,0x06,0x02,0x00,
    0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,
    0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
    0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,
    0xE0,0x60,0x60,0x7C,0x66,0x66,0xDC,0x00,
    0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,
    0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0x76,0x00,
    0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,
    0x38,0x6C,0x60,0xF0,0x60,0x60,0xF0,0x00,
    0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,
    0xE0,0x60,0x6C,0x76,0x66,0x66,0xE6,0x00,
    0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
    0x0C,0x00,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,
    0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,
    0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00,
    0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xC6,0x00,
    0x00,0x00,0xF8,0xCC,0xCC,0xCC,0xCC,0x00,
    0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,
    0x00,0x00,0xDC,0x66,0x66,0x7C,0x60,0xF0,
    0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,
    0x00,0x00,0xDC,0x76,0x66,0x60,0xF0,0x00,
    0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,
    0x10,0x30,0x7C,0x30,0x30,0x34,0x18,0x00,
    0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,
    0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x00,
    0x00,0x00,0xC6,0xD6,0xFE,0xFE,0x6C,0x00,
    0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00,
    0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,
    0x00,0x00,0xFC,0x98,0x30,0x64,0xFC,0x00,
    0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,
    0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00,
    0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,
    0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void Fillvram(unsigned long color)
{
    unsigned char *vptr0;        
    unsigned long i;

    vptr0 = GetVramAddr(0, 0);

    for (i = 0; i < (FRAMESIZE/4); i++)
    {
        *(unsigned long *)vptr0 = color;
        vptr0 += 4;
    }
}

void PutChar(unsigned long x, unsigned long y, unsigned long color, unsigned long bgcolor, unsigned char ch, char drawfg, char drawbg, char mag)
{
    unsigned char *vptr0;
    unsigned char *vptr;
    const unsigned char *cfont;
    unsigned long cx, cy;
    unsigned long b;
    char mx, my;

    cfont = font + ch*8;

    vptr0=GetVramAddr(x, y);

    for (cy = 0; cy < 8; cy++)
    {
        for (my = 0; my < mag; my++)
        {
            vptr = vptr0;
            b = 0x80;
            for (cx = 0; cx < 8; cx++)
            {
                for (mx = 0; mx < mag; mx++)
                {
                    if ((*cfont&b) != 0)
                    {
                        if (drawfg) // Die Schrift selber, sollte aktiviert bleiben ;)
                        {
                            *(unsigned long *)vptr = color;
                        };
                    }
                    else
                    {
                        // Der Hintergrund, ich hab ihn in der Print() Funktion deaktiviert, wenn benötigt den vorletzten Param auf 1 stellen :)
                        if (drawbg)
                        {
                            *(unsigned long *)vptr = bgcolor;
                        };
                    };
                    vptr += 4;
                };
                b = b>>1;
            };
            vptr0 += LINESIZE*4;
        };
        cfont++;
    };
};

void Print(unsigned long x, unsigned long y, unsigned long color, const char *str)
{
    while (*str != 0 && x < CMAX_X && y < CMAX_Y)
    {
        // Ich hab die Hintergrundfarbe deaktiviert
        PutChar(x*8, y*8, color, 0, *str, 1, 0, 1);
        str++;
        x++;
        if (x >= CMAX_X)
        {
            x = 0;
            y++;
        }
    }
}


Ja, die gleichen Funktionen wie im Mercury SDK, nur changeBuffer und initScreenAndCtrl können wir nicht unverändert benutzten, da wir kein SDK haben.
Die initScreenAndCtrl Funktion nennen wir in initScreen um, da es nur den Bildschirm initialisiert.

Code:
void changeBuffer(void)
{
    drawframe=(drawframe?0:1);
};

void initScreen(void)
{
    drawframe = 0;
    Fillvram(0x00000000);
    drawframe = 1;
    Fillvram(0x00000000);
};


So, jetzt der main Thread:

Code:
int main(void)
{
    int i;
    
    initScreen();
    for(i = 0; i < 11; i++)
    {
        Fillvram(colours[INDEX_BLACK]);
        changeBuffer();
    };


Mit der for-Schleife wird der Bildschirm 10 mal mit der Farbe Schwarz gefüllt, um VLF etc. wegzukriegen.

Code:
    i = 0;
    
    for(;;)
    {
        Print(0, 1, colours[INDEX_WHITE], "Hello World!");
        Print(0, 2, colours[i], "Das ist mein erstes Programm fuer ein TIFF Exploit!!!");
        Print(0, 3, colours[INDEX_GREEN], "Jetzt bin ich ein echter Profi >.>");
        changeBuffer();
        
        if(i > 9)
        {
            i = 0;
        }
        else
        {
            i++;
        };
    };
    
    return 0; // Wird hoffentlich nie ausgeführt ;)
};


Ich glaube es ist verständlich was dieser Code macht Wink

So, jetzt schliest ihr die main.c und erstellt die Datei linkfile.l.

Code:
OUTPUT_FORMAT("elf32-littlemips")
OUTPUT_ARCH(mips)

ENTRY(_start)

SECTIONS
{
  . = 0x08800000;
  .text.start : {
    *(.text.start)
  }
  .text : {
    *(.text)
  }
  .rodata : {
    *(.rodata)
  }
  .data : {
    *(.data)
  }
  .bss : {
    *(.bss)
  }
}


Hier ist es wichtig: Die TIFF Binary wird auf Addresse 0x08800000 geladen.
Ja, einige habe es richtig verstanden, das TIFF Eggsploit führt einen direkten Sprung in den Hauptspeicher aus.
Wenn du eine andere Addresse versuchst, wirst du nur einen Crash bekommen.
Hie wieder das Problem, warum das TIFF instabil ist: Die VSHBridge ändert mit ihren beschissenen Speicherbereichen, die auf Systemzeit basieren und
nichts anderes machen als wahllos die Addressen ändern, ändert diverse kodierte Addressen und der Sprung im Binary Code, der sich im TIFF befindet
springt irgendwo ins nirgendwo, und die Addresse 0x08800000 wird erst gar nicht erreicht.

Naja, zuletzt noch die makefile:

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

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

ASM      = psp-as

all:
    $(PSPDEV)/bin/psp-gcc $(CFLAGS) -S main.c -o main.s
    $(PSPDEV)/bin/psp-as main.s -o main.o
    $(PSPDEV)/bin/psp-ld -T linkerfile.l main.o -o main.elf
    $(PSPDEV)/bin/psp-strip -s main.elf
    $(PSPDEV)/bin/psp-objcopy -O binary main.elf h.bin

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


Die original makefile einer klassischen Binary.

Gut... compile and see Tongue
Funktionen könnt ihr importieren, indem ihr einen Funktions Zeiger auf die Text Adresse der Paf.prx (die der binary als argument übergeben wird) + die Adresse der Funktion im Text Segment der Paf zeigen lasst.
Beispiel:

Code:
void (* blablabla) (void) = NULL;

void _start(int paf_addr)
{
    blablabla = (void *)paf_addr + 0xDEADBEEF;
};


Darauf geh ich jetzt aber nicht genauer ein, meistens crasht es nur.

Fehler bitte melden!

mfg, HacKmaN

Danke ;D

Ich hab schon drauf gewartet...

Klasse TuT!!!

D!S :
Danke ;D

Ich hab schon drauf gewartet...

Klasse TuT!!!


Danke thumb

Noch ein schönes Tutorial !

pspbricker :
Noch ein schönes Tutorial !


Danke! Ich hab mich ein bisschen drangesetzt und hoffe, dass es was geworden ist Tongue

Referenz-URLs