|
Verfasser |
Nachricht |
Chaosduckman
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
Volatile Memory in User Mode?!
Hi
Ich habe mich heute etwas mit der Power Library auseinander gesetzt.
Dabei bin ich über die Funktion "scePowerVolatileMemTryLock" gestolpert.
Diese befindet sich laut PRX-Tool in der User Mode Export Library ( scePower, 0x40010011 ). Heißt das jetzt, dass der Speicherbereich im User Mode zugänglich ist?! Denn der Volatile Speicher ist doch Kernel Mode xD
PS: Hier sind noch ein paar Informationen über die Library.
|
|
29.12.2010 10:44 |
|
Folgende User bedanken sich: |
|
BIGGGMACK
Experte
Beiträge: 500
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 228
|
RE: Volatile Memory in User Mode?!
|
|
29.12.2010 11:32 |
|
|
|
FroZzeneffect
News-Writer
Beiträge: 1.655
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 1250
|
RE: Volatile Memory in User Mode?!
Der Volatile Memory Block wird von der Firmware benutzt, um Daten zu speichern wenn man die PSP in den Standby Modus setzt. Wenn du diesen Block also benutzt, kann man die PSP nicht im Standby Modus setzten. Ich weiß insgesamt nicht warum du diesen 4Mb Block benutzten solltest, der normale User Mode RAM ist normalerweiße groß genug.
Zitat von Hackman
|
|
29.12.2010 11:43 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: Volatile Memory in User Mode?!
Bitte @die, die nichts davon verstehen... spammt den Thread nicht voll.
@Choasduckman: Ich werd mir das später nachmittags mal anschauen, das interessiert mich jetzt auch.
|
|
29.12.2010 12:10 |
|
Folgende User bedanken sich: |
|
PSP-Fixer
Junior Mitglied
Beiträge: 29
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 6
|
RE: Volatile Memory in User Mode?!
|
|
29.12.2010 12:38 |
|
|
|
Chaosduckman
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
RE: Volatile Memory in User Mode?!
@HacKmaN: Danke =) Du bist der einzige hier, der die Beiträge noch durchliest^^
TyRaNiD hat hier auch etwas dazu gepostet. Dann habe ich auch noch das gefunden...
Edit: Und HacKmaN? Exploitable? Gibt zwar wieder den << 11 aber den hat T_N ja auch umgangen xD
Dieser Beitrag wurde zuletzt bearbeitet: 29.12.2010 20:08 von Chaosduckman.
|
|
29.12.2010 12:51 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: Volatile Memory in User Mode?!
@HacKmaN: Danke =) Du bist der einzige hier, der die Beiträge noch durchliest^^
TyRaNiD hat hier auch etwas dazu gepostet. Dann habe ich auch noch das gefunden...
Edit: Und HacKmaN? Exploitable? Gibt zwar wieder den << 11 aber den hat T_N ja auch umgangen xD
Gleich, ich bin grad am reversen der Funktion
Hab gestern noch was anderes machen müssen, deshalb mach ichs jetzt.
|
|
30.12.2010 12:35 |
|
Folgende User bedanken sich: |
|
Chaosduckman
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
RE: Volatile Memory in User Mode?!
Ah bin schon ganz gespannt^^ Ich sollte selber mal Assembler lernen
|
|
30.12.2010 14:38 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: Volatile Memory in User Mode?!
Ich hab die funktion mal reversed (nur pseudo C Code)
int scePower_FA97A599(int arg0, int *arg1, int *arg2)
{
if(arg0 != 0)
return 0x80000107;
int k1 = pspSdkGetK1();
pspSdkSetK1(k1 << 11);
if(((0x80000000 & arg1) >= 0) && ((0x80000000 & arg2) >= 0))
{
int *array = (int *)600;
int ret = sceKernelPollSema(array[1], 1);
if(ret == 0)
{
if(arg1 != 0)
*arg1 = array[7];
if(arg2 != 0)
*arg2 = array[8];
int state = sceKernelCpuSuspendIntr();
int field1 = ext(array[7], 23, 6);
int field2 = ext(array[7], 29, 3);
if(field1 != 16)
{
array[9] = 1;
sceKernelCpuResumeIntrWithSync(state);
pspSdkSetK1(k1);
return ret;
};
if(((53 >> field2) & 0x1) == 0)
{
array[9] = 1;
sceKernelCpuResumeIntrWithSync(state);
pspSdkSetK1(k1);
return ret;
};
SysMemForKernel_31DFE03F(array[7], array[8], 15);
array[9] = 1;
sceKernelCpuResumeIntrWithSync(state);
pspSdkSetK1(k1);
return ret;
};
pspSdkSetK1(k1);
return ((ret ^ 0x800201AD) == 0 ? 0x802B0200 : ret);
};
pspSdkSetK1(k1);
return 0x80000023;
};
Allerdings sehe ich da nichts allzu interessantes. Du kannst es dir ja nochmal genauer anschauen.
//EDIT: Ist aus der power_01g.prx von der 6.20.
Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2010 14:57 von HacKmaN.
|
|
30.12.2010 14:56 |
|
Folgende User bedanken sich: |
|
Chaosduckman
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
RE: Volatile Memory in User Mode?!
Danke sehr nett von dir
Edit: Ne, also ich kann auch nichts finden^^
Aber was meinst du mit dem ext()? xD
int field1 = ext(array[7], 23, 6);
Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2010 15:34 von Chaosduckman.
|
|
30.12.2010 15:17 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: Volatile Memory in User Mode?!
Danke sehr nett von dir
Edit: Ne, also ich kann auch nichts finden^^
Aber was meinst du mit dem ext()? xD
int field1 = ext(array[7], 23, 6);
Ext == Extract bit field
http://www.johnloomis.org/microchip/pic32/bitfields/bitfield.html
Die ext Funktion gibts in C nicht, ich habs nur so geschrieben, weil es in MIPS so implementiert ist.
Du kannst es ja noch in "richtiges" C umschreiben
|
|
30.12.2010 15:58 |
|
Folgende User bedanken sich: |
|
Chaosduckman
Halbprofi
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
RE: Volatile Memory in User Mode?!
Ah xD ich kenne das als gepackte Strukturen =)
Ne in echtes C schreibe ich das nicht um. Habe ja auch noch andere Projekte ;-)
|
|
30.12.2010 16:02 |
|
|
|