Antwort schreiben  Thema schreiben 
Verfasser Nachricht
Chaosduckman
Halbprofi
***


Beiträge: 170
Gruppe: User
Registriert seit: May 2010

Status: Offline
Danke erhalten: 43
Beitrag: #1
xPSP  sceNetUpnp Library

Hallo Leute Tongue
Ich habe eine kleine Bitte an euch. Könnte mir jemand vielleicht die letzten fehlenden Funktionen der Library reversen?

Ich habe selbst schon angefangen, aber mein Assembler "Skill" ist noch nicht hochgenug für die anderen Funktionen.

Alles was ihr zum reversen braucht, habe ich euch hier hochgeladen.
( Die EBOOT gehört zu einem Spiel, das die Library benutzt. Einfach mal reinschauen. )

Das währe echt super von euch, wenn ihr mir helfen würdet Big Grin

Ich sage schonmal Danke im vorraus =)

14.02.2011 20:38
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Chaosduckman
Halbprofi
***


Beiträge: 170
Gruppe: User
Registriert seit: May 2010

Status: Offline
Danke erhalten: 43
Beitrag: #2
xPSP  RE: sceNetUpnp Library

Push für die Genesis competition 2011 Big Grin

16.02.2011 18:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


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

Status: Offline
Danke erhalten: 3319
Beitrag: #3
RE: sceNetUpnp Library

Ich hab dir mal die Funktionen und die direkt aufgerufenen Unterroutinen "reversed" (ich würd eher sagen, dass ich es nur in pseudo-C umgeschrieben hab...). Die Routinen, die von Unterroutinen aufgerufen werden, hab ich nicht gemacht (wenns umbedingt sein muss, kann ich die auch noch machen).
Ich habs nach kürzester Zeit aufgegeben, die globalen Variablen oben aufzulisten^^

Code:
int dat_9A18[...];
int dat_92E4 = 0x00766E65;

int sub_000035BC(int arg0)
{
    if((dat_9A18[0x4C/4] & 0x1) != 0)
        return 0x80411603;
    
    dat_9A18[0x4C/4] |= 0x1;
    
    if(arg0 == 1)
        dat_9A18[0x4C/4] |= 0x0801;
    else
        dat_9A18[0x4C/4] &= 0xFFFF7FFF;
    
    dat_9A18[0x50/4] = 1;
    
    sceKernelSetEventFlag(dat_9A18[0x44/4], 2);
    
    return 0;
};

int sceNetUpnp_3432B2E5(void)
{
    if(sceKernelCheckThreadStack() < 0x07F0)
        return 0x80410005;
    
    if(!dat_9A00)
        return 0x80411601;
    
    return sub_000035BC(dat_9A00);
};

int sub_00003630(void)
{
    if(dat_9A18[0x18/4] >= 0)
        sceNetInetSocketAbort(dat_9A18[0x18/4]);
    
    sceKernelSetEventFlag(dat_9A18[0x44/4], 4);
    return 0;
};

int sceNetUpnp_3E32ED9E(void)
{
    if(sceKernelCheckThreadStack() < 0x07F0)
        return 0x80410005;
    
    if(!dat_9A00);
        return 0x80411601;
    
    return sub_00003630();
};

void sub_00003434(void)
{
    if(dat_9A18[0x4C/4] & 0x1 != 0)
    {
        if(dat_9A18[0x30/4] >= 0)
            sceNetInetSocketAbort(dat_9A18[0x30/4]);
        
        sceKernelSetEventFlag(dat_9A18[0x44/4], 4);
    };
    
    sceKernelSetEventFlag(dat_9A18[0x44/4], 1);
    
    sub_00005EB4();
    
    if(dat_9A18[0x40/4] != -1)
    {
        sceKernelWaitThreadEnd(dat_9A18[0x44/4], 0);
        sceKernelDeleteThread(dat_9A18[0x40/4]);
        sceNetFreeThreadInfo(dat_9A18[0x40/4]);
    };
    
    dat_9A18[0x40/4] = -1;
    
    if(dat_9A18[0x44/4] != -1);
    {
        sceKernelDeleteEventFlag(dat_9A18[0x44/4], dat_9A18[0x4C/4]);
        dat_9A18[0x44/4] = -1;
    };
    
    if(dat_9A18[0x4C/4] & 0x8 != 0)
    {
        sceKernelDeleteMutex(dat_9A18[0x48/4]);
        dat_9A18[0x48/4] = -1;
        dat_9A18[0x4C/4] &= 0xFFFFFFF7;
    };
    
    return;
};

int sceNetUpnp_540491EF(void)
{
    if(sceKernelCheckThreadStack() < 0x07F0)
        return 0x80410005;
    
    if(dat_9A00)
    {
        sub_00003434();
        dat_9A00 = 0;
    };
    
    return 0;
};

int sub_00002D80(int arg0, int arg1)
{
    char buf[0x9];
    
    sceNetMemset(&dat_AF40, 0, 36);
    sceNetMemset(&dat_9A18, 0, 5416);
    sceNetMemset(buf, 0, sizeof(buf));
    sceNetMemset(&dat_9A18, 0, 36); // What the hell? >.>
    
    int ret = sub_00003814("/CONFIG/NP", dat_92E4, buf, sizeof(buf));
    if(ret >= 0)
    {
        sceNetSprintf(dat_9A18, &dat_92E8, &dat_92F4, buf, &dat_92F8);
        
        dat_9A18[0x24/4] = arg0;
        dat_9A18[0x28/4] = arg1;
        dat_9A18[0x48/4] = -1;
        dat_9A18[0x34/4] = 0;
        dat_9A18[0x2C/4] = -1;
        dat_9A18[0x30/4] = -1;
        dat_9A18[0x40/4] = -1;
        dat_9A18[0x44/4] = -1;
        
        ret = sceKernelCreateEventFlag("SceNetUpnpEvf", 0, 0, NULL);
        if(ret >= 0)
        {
            dat_9A18[0x44/4] = ret;
            
            ret = sceKernelCreateMutex(&dat_9320, 512, 0, 0);
            if(ret >= 0)
            {
                dat_9A18[0x48/4] = ret;
                dat_9A18[0x4C/4] |= 0x8
                
                ret = sceKernelCreateThread(&dat_9330, func_4DD4, dat_9A18[0x28/4], dat_9A18[0x24/4], NULL);
                if(ret >= 0)
                {
                    dat_9A18[0x40/4] = ret;
                    
                    int *ptr = dat_9A18;
                    ret = sceKernelStartThread(ret, 4, &ptr);
                    if(ret >= 0)
                    {
                        ret = sub_00005E5C();
                        if(ret >= 0)
                            return 0;
                    };
                };
            };
        };
    };
    
    sub_00005EB4();
    
    if(dat_9A18[0x40/4] != -1)
    {
        sceKernelWaitThread(dat_9A18[0x44/4], 0);
        sceKernelDeleteThread(dat_9A18[0x40/4]);
        sceKernelFreeThreadInfo(dat_9A18[0x40/4]);
        
        dat_9A18[0x40/4] = -1;
    };
    
    if(dat_9A18[0x44/4] != -1)
    {
        sceKernelDeleteEventFlag(dat_9A18[0x4C/4]);
        dat_9A18[0x44/4] = -1;
    };
    
    if((dat_9A18[0x4C/4] & 0x8) != 0)
    {
        sceKernelDeleteMutex(dat_9A18[0x48/4]);
        
        dat_9A18[0x48/4] = -1;
        dat_9A18[0x4C/4] &= 0xFFFFFFF7;
    };
    
    return ret;
};

int sceNetUpnp_E24220B5(int arg0, int arg1)
{
    if(sceKernelCheckThreadStack() < 0x07F0)
        return 0x80410005;
    
    if(dat_9A00 <= 0)
    {
        int ret = sub_00002D80(arg0, arg1);
        if(ret >= 0)
            dat_9A00 = 1;
        
        return ret;
    };
    
    return 0x80411602;
};



mfg, HacKmaN

Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2011 20:57 von HacKmaN.

16.02.2011 20:47
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Chaosduckman (Feb-17-2011)
Chaosduckman
Halbprofi
***


Beiträge: 170
Gruppe: User
Registriert seit: May 2010

Status: Offline
Danke erhalten: 43
Beitrag: #4
xPSP  RE: sceNetUpnp Library

Danke Hackman Big Grin
Ich war schon in vielen Szenen, aber du bist der erste Pro, der den Newbies hilft xD

17.02.2011 14:42
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP [UPDATE] Library PSPMZ2GU anmabagima 1 1.306 24.06.2010 14:18
Letzter Beitrag: HacKmaN

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




» zum Seitenanfang