Sponsored Links

Sponsored Links

Page 25 of 25 FirstFirst ... 15232425
Results 241 to 245 of 245



  1. #241
    Senior Member ripplar's Avatar
    Join Date
    May 2013
    Posts
    94
    Sponsored Links
    Sponsored Links
    Nice. Thank you for this. Now let me play around and see what i can mess up now.

  2. #242
    Junior Member yllan's Avatar
    Join Date
    Nov 2012
    Posts
    12
    Sponsored Links
    Sponsored Links
    thank you aldostools
    Code:
     spp                      SPP   0x0000   04.45   
     lv1ldr                   SELF  0x0000   04.45   [lv1]
     lv2ldr                   SELF  0x0000   04.45   [lv2]
     isoldr                   SELF  0x0001   04.45   [Isolated SPU Module]
     appldr                   SELF  0x001C   04.45   [NPDRM Application]
     appldr                   SELF  0x001F   04.45   [Application]
     isoldr                   SELF  0x0100   04.45   [Isolated SPU Module]
     spp                      SPP   0x0000   04.46   
     lv1ldr                   SELF  0x0000   04.46   [lv1]
     lv2ldr                   SELF  0x0000   04.46   [lv2]
     isoldr                   SELF  0x0001   04.46   [Isolated SPU Module]
     appldr                   SELF  0x001C   04.46   [NPDRM Application]
     appldr                   SELF  0x001F   04.46   [Application]
     isoldr                   SELF  0x0100   04.46   [Isolated SPU Module]

  3. #243
    Registered User Rhynodry's Avatar
    Join Date
    Jul 2013
    Posts
    1
    Sponsored Links
    Sponsored Links
    Good morning, I think it failed on the slim. We are working on this, or else it has stopped working? Rumor has it takes a private key that is not in the console

  4. #244
    Member Gunner54's Avatar
    Join Date
    Nov 2007
    Posts
    87

    LV0 Loader (Extractor/Injector)

    I decided I would make a tool to extract and inject the loaders of lv0. Should be useful for some people.

    Download: [Register or Login to view links] / [Register or Login to view links]

    Here's the source:

    Code:
    /*
     * LV0 Loader (Extractor/Injector) - By : TheUnkn0wn
     */
     
    #include <Windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    DWORD LoadFile(char* FilePath, char** Output){
    DWORD Size = -1;
    	FILE* pFile = fopen(FilePath,"rb");
    		if(pFile){
    			fseek(pFile,0,SEEK_END);Size = ftell(pFile);rewind(pFile);*Output = (char*)malloc(Size);
    			fread(*Output,1,Size,pFile);
    			fclose(pFile);
    		}
    return Size;
    }
    
    void SaveFile(char* FileName, void* Data, DWORD Size){
    	FILE* pFile = fopen(FileName,"wb");
    		fwrite(Data,1,Size,pFile);
    	fclose(pFile);
    }
    
    DWORD FindSignature(BYTE* Data,DWORD DataLen,BYTE* Signature,DWORD SignatureLen){
    	for(DWORD Start=0;Start<DataLen;Start++){
    		for(DWORD i=0;i<SignatureLen;i++){
    			if(Signature[i] != 0xEE){
    				if(Data[Start+i] == Signature[i]){
    					if(i==SignatureLen-1)return Start;
    				}else{
    					break;
    				}
    			}
    		}
    	}
    return 0;
    }
    
    unsigned char* LV0;
    DWORD LV0_SIZE;
    
    //LV1LDR = SIGNATURE + 0x0C
    BYTE lv1ldr_signature[] = {0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
    
    //LV2LDR = SIGNATURE - 0x70
    BYTE lv2ldr_signature[] = {0x1F, 0xF0, 0x00, 0x00, 0x09, 0x00, 0x00, 0x01};
    
    //ISOLDR = SIGNATURE - 0x70
    BYTE isoldr_signature[] = {0x1F, 0xF0, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x01};
    
    //APPLDR = SIGNATURE - 0x70
    BYTE appldr_signature[] = {0x1F, 0xF0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x01};
    
    //SCE
    BYTE SCE_signature[] = {0x53, 0x43, 0x45, 0x00};
    
    struct LOADER_INFO {
    	unsigned char* Address;
    	DWORD Size;
    };
    
    LOADER_INFO GetLoader(int ldr){
    
    	LOADER_INFO ret;
    
    	//Initialize
    	ret.Address = 0;
    	ret.Size = 0;
    
    		//LV1LDR
    		if(ldr == 0){
    			DWORD Signature = FindSignature(LV0, LV0_SIZE, lv1ldr_signature, sizeof(lv1ldr_signature));
    				if(Signature > 0){
    					ret.Address = (unsigned char*)(Signature + 0x0C);
    					ret.Size = FindSignature((LV0 + (DWORD)ret.Address) + 1, (LV0_SIZE - (DWORD)ret.Address) - 1, SCE_signature, sizeof(SCE_signature)) + 1;
    				}else{
    					printf("Error : Could not find LV1LDR!\n");
    					return ret;
    				}
    
    		//LV2LDR
    		}else if(ldr == 1){
    			DWORD Signature = FindSignature(LV0, LV0_SIZE, lv2ldr_signature, sizeof(lv2ldr_signature));
    				if(Signature > 0){
    					ret.Address = (unsigned char*)(Signature - 0x70);
    					ret.Size = FindSignature((LV0 + (DWORD)ret.Address + 1), (LV0_SIZE - (DWORD)ret.Address - 1), SCE_signature, sizeof(SCE_signature)) + 1;
    				}else{
    					printf("Error : Could not find LV2LDR!\n");
    					return ret;
    				}
    
    		//ISOLDR
    		}else if(ldr == 2){
    			DWORD Signature = FindSignature(LV0, LV0_SIZE, isoldr_signature, sizeof(isoldr_signature));
    				if(Signature > 0){
    					ret.Address = (unsigned char*)(Signature - 0x70);
    					ret.Size = FindSignature((LV0 + (DWORD)ret.Address + 1), (LV0_SIZE - (DWORD)ret.Address - 1), SCE_signature, sizeof(SCE_signature)) + 1;
    				}else{
    					printf("Error : Could not find ISOLDR!\n");
    					return ret;
    				}
    
    		//APPLDR
    		}else if(ldr == 3){
    			DWORD Signature = FindSignature(LV0, LV0_SIZE, appldr_signature, sizeof(appldr_signature));
    				if(Signature > 0){
    					ret.Address = (unsigned char*)(Signature - 0x70);
    					ret.Size = FindSignature((LV0 + (DWORD)ret.Address + 1), (LV0_SIZE - (DWORD)ret.Address - 1), SCE_signature, sizeof(SCE_signature)) + 1;
    				}else{
    					printf("Error : Could not find APPLDR!\n");
    					return ret;
    				}
    		}
    
    	return ret;
    }
    
    void main(int argc, char *argv[]){
    
    	printf("LV0 Loader (Extractor/Injector) v1.0\nBy : TheUnkn0wn\n\n");
    
    	//Extract
    	if(argc == 4 && !strcmp(argv[1], "-x")){
    
    		if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv1") || !strcmp(argv[2], "lv2") || !strcmp(argv[2], "iso") || !strcmp(argv[2], "app")){
    
    			printf("Loading %s...\n\n", argv[3]);
    			LV0_SIZE = LoadFile(argv[3], (char**)&LV0);
    				if(LV0[0] != 0x7F){
    					printf("Error : LV0 MUST be decrypted first!\n\n");
    					goto EXIT;
    				}
    
    			if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv1")){
    				LOADER_INFO lv1ldr = GetLoader(0);
    					if(lv1ldr.Size > 0){
    						printf("LV1LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv1ldr.Address, lv1ldr.Size);
    							if(LV0[(DWORD)lv1ldr.Address] == 0x53){
    								SaveFile("lv1ldr.self", LV0+((DWORD)lv1ldr.Address), lv1ldr.Size);
    							}else{
    								SaveFile("lv1ldr-enc", LV0+((DWORD)lv1ldr.Address), lv1ldr.Size);
    							}
    					}
    			}
    
    			if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv2")){
    				LOADER_INFO lv2ldr = GetLoader(1);
    					if(lv2ldr.Size > 0){
    						printf("LV2LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv2ldr.Address, lv2ldr.Size);
    						SaveFile("lv2ldr.self", LV0+((DWORD)lv2ldr.Address), lv2ldr.Size);
    					}
    			}
    
    			if(!strcmp(argv[2], "all") || !strcmp(argv[2], "iso")){
    				LOADER_INFO isoldr = GetLoader(2);
    					if(isoldr.Size > 0){
    						printf("ISOLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",isoldr.Address, isoldr.Size);
    						SaveFile("isoldr.self", LV0+((DWORD)isoldr.Address), isoldr.Size);
    					}
    			}
    
    			if(!strcmp(argv[2], "all") || !strcmp(argv[2], "app")){
    				LOADER_INFO appldr = GetLoader(3);
    					if(appldr.Size > 0){
    						printf("APPLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",appldr.Address, appldr.Size);
    						SaveFile("appldr.self", LV0+((DWORD)appldr.Address), appldr.Size);
    					}
    			}
    
    			if(LV0)free(LV0);
    
    		}
    
    	//Inject
    	}else if(argc == 5 && !strcmp(argv[1], "-i")){
    
    		if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv1") || !strcmp(argv[2], "lv2") || !strcmp(argv[2], "iso") || !strcmp(argv[2], "app")){
    
    			printf("Loading %s...\n\n", argv[3]);
    			LV0_SIZE = LoadFile(argv[3], (char**)&LV0);
    				if(LV0[0] != 0x7F){
    					printf("Error : LV0 MUST be decrypted first!\n\n");
    					goto EXIT;
    				}
    
    				if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv1")){
    					LOADER_INFO lv1ldr = GetLoader(0);
    						if(lv1ldr.Size > 0){
    							printf("LV1LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv1ldr.Address, lv1ldr.Size);
    
    							unsigned char* LV1LDR;
    							DWORD LV1LDR_SIZE = LoadFile("lv1ldr-enc", (char**)&LV1LDR);
    
    								if(LV1LDR_SIZE <= lv1ldr.Size){
    									printf("Injecting LV1LDR...\n");
    									memset(LV0+((DWORD)lv1ldr.Address), 0x00, lv1ldr.Size);
    									memcpy(LV0+((DWORD)lv1ldr.Address), LV1LDR, LV1LDR_SIZE);
    								}else{
    									printf("Error : LV1LDR too big!\n\n");
    								}
    						}
    				}
    
    				if(!strcmp(argv[2], "all") || !strcmp(argv[2], "lv2")){
    					LOADER_INFO lv2ldr = GetLoader(1);
    						if(lv2ldr.Size > 0){
    							printf("LV2LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv2ldr.Address, lv2ldr.Size);
    							
    							unsigned char* LV2LDR;
    							DWORD LV2LDR_SIZE = LoadFile("lv2ldr.self", (char**)&LV2LDR);
    
    								if(LV2LDR_SIZE <= lv2ldr.Size){
    									printf("Injecting LV2LDR...\n");
    									memset(LV0+((DWORD)lv2ldr.Address), 0x00, lv2ldr.Size);
    									memcpy(LV0+((DWORD)lv2ldr.Address), LV2LDR, LV2LDR_SIZE);
    								}else{
    									printf("Error : LV2LDR too big!\n\n");
    								}
    						}
    				}
    
    				if(!strcmp(argv[2], "all") || !strcmp(argv[2], "iso")){
    					LOADER_INFO isoldr = GetLoader(2);
    						if(isoldr.Size > 0){
    							printf("ISOLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",isoldr.Address, isoldr.Size);
    
    							unsigned char* ISOLDR;
    							DWORD ISOLDR_SIZE = LoadFile("isoldr.self", (char**)&ISOLDR);
    
    								if(ISOLDR_SIZE <= isoldr.Size){
    									printf("Injecting ISOLDR...\n");
    									memset(LV0+((DWORD)isoldr.Address), 0x00, isoldr.Size);
    									memcpy(LV0+((DWORD)isoldr.Address), ISOLDR, ISOLDR_SIZE);
    								}else{
    									printf("Error : ISOLDR too big!\n\n");
    								}
    						}
    				}
    
    				if(!strcmp(argv[2], "all") || !strcmp(argv[2], "app")){
    					LOADER_INFO appldr = GetLoader(3);
    						if(appldr.Size > 0){
    							printf("APPLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",appldr.Address, appldr.Size);
    
    							unsigned char* APPLDR;
    							DWORD APPLDR_SIZE = LoadFile("appldr.self", (char**)&APPLDR);
    
    								if(APPLDR_SIZE <= appldr.Size){
    									printf("Injecting APPLDR...\n");
    									memset(LV0+((DWORD)appldr.Address), 0x00, appldr.Size);
    									memcpy(LV0+((DWORD)appldr.Address), APPLDR, APPLDR_SIZE);
    								}else{
    									printf("Error : APPLDR too big!\n\n");
    								}
    						}
    				}
    
    			SaveFile(argv[4], LV0, LV0_SIZE);
    
    			if(LV0)free(LV0);
    		}
    
    	//View
    	}else if(argc == 3 && !strcmp(argv[1], "-v")){
    
    			printf("Loading %s...\n\n", argv[2]);
    			LV0_SIZE = LoadFile(argv[2], (char**)&LV0);
    				if(LV0[0] != 0x7F){
    					printf("Error : LV0 MUST be decrypted first!\n\n");
    					goto EXIT;
    				}
    
    			LOADER_INFO lv1ldr = GetLoader(0);
    				if(lv1ldr.Size > 0){
    					printf("LV1LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv1ldr.Address, lv1ldr.Size);
    				}
    
    			LOADER_INFO lv2ldr = GetLoader(1);
    				if(lv2ldr.Size > 0){
    					printf("LV2LDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",lv2ldr.Address, lv2ldr.Size);
    				}
    
    			LOADER_INFO isoldr = GetLoader(2);
    				if(isoldr.Size > 0){
    					printf("ISOLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",isoldr.Address, isoldr.Size);
    				}
    
    			LOADER_INFO appldr = GetLoader(3);
    				if(appldr.Size > 0){
    					printf("APPLDR\nAddress : 0x%08X\nSize : %d Bytes\n\n",appldr.Address, appldr.Size);
    				}
    
    			if(LV0)free(LV0);
    	}else{
    
    		printf("-x [loader] [lv0] - Extract loaders\n-i [loader] [lv0-in] [lv0-out] - Inject loaders\n-v [lv0] - View loaders\n\nLoaders - all, lv1, lv2, iso, app\n\n");
    
    	}
    
    EXIT:
    	return;
    }
    Attached Thumbnails<br><br> Attached Thumbnails

    clip (2013-07-11 at 01.20.06).png  
    Last edited by Gunner54; 07-11-2013 at 05:21 PM

  5. #245
    Forum Moderator PS3 News's Avatar
    Join Date
    Apr 2005
    Posts
    27,639
    I have also added it to the main article for those keeping track. Thanks and +Rep Gunner54.

 

Sponsored Links
Page 25 of 25 FirstFirst ... 15232425

Tags for this Thread

Affiliates - Contact Us - PS3 Downloads - Privacy Statement - Site Rules - Top - © 2014 PlayStation 3 News