CFWLoad 1.0


Newserator
 Share

Messages recommandés

on peut pas lancer une MAJ sur une clef emulée.

il faudrait pour ça que la console boot directement sur le dev_flash de l'USB et non celui du DD.

La seule personne qui pouvait decompresser et modifier un PUP etait Geohot (il avait la clef HMAC) puisqu'il a fait un hybrid FW en changeant le CORE OS qui se trouve dans le PUP du 3.21 par celui du 3.15.

Lien vers le commentaire
Partager sur d'autres sites

on peut pas lancer une MAJ sur une clef emulée.

il faudrait pour ça que la console boot directement sur le dev_flash de l'USB et non celui du DD.

La seule personne qui pouvait decompresser et modifier un PUP etait Geohot (il avait la clef HMAC) puisqu'il a fait un hybrid FW en changeant le CORE OS qui se trouve dans le PUP du 3.21 par celui du 3.15.

faudrait un reboot en mode custom firmware.... puisque boot directement c'est risqué sans avoir un dump de nands.

ps: Laissez le arriver le gt5 :)

Modifié par titus360
Lien vers le commentaire
Partager sur d'autres sites

Dites, après avoir dumpé mon LV2.bin, je regardais les sources, en passant, et je me demandais s'il n'y avait pas moyen d'adapter ça pour qu'au lieu de mapper à /dev/usb00X , on mappe à /dev_hdd0/custom_firmware ou /dev_sd pour les possesseurs d'un PS3 disposant d'un lecteur de cartes SD (ça serait très pratique, intégré, discret)

Ici, si je comprends bien, il s'agit de modifications hexadécimales effectuées au sein du kernel en mémoire c'est ça?

D'un coté, on retrouverais les offsets correspondants au mapping vers l'usb, de l'autre ce qui serait clair ne serait que l'affichage du texte dans le programme? (Qu'on pourrait aisément traduire je suppose?)

#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <assert.h>#include <string.h>#include <string>#include <dirent.h>#include <unistd.h>#include <fcntl.h>#include <time.h>#include <math.h>#include <stddef.h>#include <sys/process.h>#include <cell/cell_fs.h>#include <sys/spu_initialize.h>#include <cell/dbgfont.h>#include <cell/sysmodule.h>#include <cell/pad/libpad.h>#include <sysutil/sysutil_sysparam.h>#include <PSGL/psglu.h>#include "../common/gfxCommon.h"#include "../common/gfxObject.h"#define	BUTTON_SELECT		(1<<0)#define	BUTTON_L3			(1<<1)#define	BUTTON_R3			(1<<2)#define	BUTTON_START		(1<<3)#define	BUTTON_UP			(1<<4)#define	BUTTON_RIGHT		(1<<5)#define	BUTTON_DOWN			(1<<6)#define	BUTTON_LEFT			(1<<7)#define	BUTTON_L2			(1<<8)#define	BUTTON_R2			(1<<9)#define	BUTTON_L1			(1<<10)#define	BUTTON_R1			(1<<11)#define	BUTTON_TRIANGLE		(1<<12)#define	BUTTON_CIRCLE		(1<<13)#define	BUTTON_CROSS		(1<<14)#define	BUTTON_SQUARE		(1<<15)SYS_PROCESS_PARAM(1001, 0x10000)uint32_t new_pad;uint32_t old_pad;uint64_t devFlash = 0x5F666C6173680000ULL;	// "_flash"uint64_t devFlashO = 0x5F666C6173684F00ULL;	// "_flashO"uint64_t devUsbMap = 0x5F75736230303000ULL; // "_usb006"uint64_t appHome = 0x5F686F6D65000000ULL; // "_home"uint64_t appHomeFull = 0x6170705F686F6D65ULL;uint64_t devUsb0 = 0x6465765F75736230ULL;uint64_t devCF = 0x5F63660000000000ULL;uint64_t start = 0x80000000003EE470ULL;uint64_t end = 0x80000000003EF570ULL;unsigned int usb;void systemCallbackCheck(const uint64_t status, const uint64_t param, void *userdata){	(void)userdata;	(void)param;	switch (status)	{		case CELL_SYSUTIL_REQUEST_EXITGAME:			sys_process_exit(0);			break;		default:			break;	   }}int readPad( void ){	int ret;		uint32_t padd;	CellPadData databuf;	CellPadInfo infobuf;	static uint32_t old_info = 0;			ret = cellPadGetInfo( &infobuf );	if (ret != 0) 	{		old_pad = new_pad = 0;		return 1;	}	if (infobuf.status[0] == CELL_PAD_STATUS_DISCONNECTED) 	{		old_pad = new_pad = 0;		return 1;	}	if((infobuf.info & CELL_PAD_INFO_INTERCEPTED) && (!(old_info & CELL_PAD_INFO_INTERCEPTED)))	{		old_info = infobuf.info;	}	else 		if((!(infobuf.info & CELL_PAD_INFO_INTERCEPTED)) && (old_info & CELL_PAD_INFO_INTERCEPTED))		{			old_info = infobuf.info;			old_pad = new_pad = 0;			return 1;		}	ret = cellPadGetData( 0, &databuf );	if (ret != CELL_OK) 	{		old_pad = new_pad = 0;		return 1;	}	if (databuf.len == 0) 	{		new_pad = 0;		return 1;	}	padd = ( databuf.button[2] | ( databuf.button[3] << 8 ) );	new_pad = padd & (~old_pad);	old_pad = padd;	return 1;}void clear(){	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);}static inline void poke( uint64_t addr, uint64_t val){	system_call_2(7, addr, val); }static inline uint64_t peek(uint64_t address){	system_call_1(6, address);	return_to_user_prog(uint64_t);}void dumpLV2(const char *path){	FILE *output;	uint64_t temp;	uint64_t startpos;	uint64_t endpos;			startpos = 0x8000000000000000ULL;	endpos = 0x80000000007FFFFFULL;	output = fopen (path, "wb");			for (uint64_t i = startpos; i < endpos; i = i + sizeof(uint64_t))	{		temp = peek (i);		fwrite (&temp, sizeof(uint64_t), 1, output);	}			fclose (output);}uint64_t hexToULong(const char *chars){	return strtoull (chars,NULL,16);}int strLen(char *str){  int count = 0;  while (*str++) count++;  return count;}char *strToHexStr(char *str) { 	char *newstr = new char[16];	memset(newstr, 0, 16);	int len = strLen(str);		for(int i = 0; i < len; i++)	{		char *chrs = new char[2];		sprintf(chrs, "%02X", (char)str[i]);		strcat(newstr, chrs);	}		for(int i = len; i < 8; i++)		strcat(newstr, "00");		return(newstr); } uint64_t strToULong(char *str){	char *chars = strToHexStr(str);	return hexToULong(chars);}void dumpMounts(const char *path){	FILE *output;	uint64_t temp;	uint64_t startpos;	uint64_t endpos;		startpos = start;	endpos = end;	output = fopen (path, "wb");			for (uint64_t i = startpos; i < endpos; i = i + sizeof(uint64_t))	{		temp = peek (i);		fwrite (&temp, sizeof(uint64_t), 1, output);	}			fclose (output);}int main(){		// Initialize 6 SPUs but reserve 1 SPU as a raw SPU for PSGL	sys_spu_initialize(6, 1);	cellSysutilRegisterCallback(0, systemCallbackCheck, NULL);	cellSysmoduleLoadModule(CELL_SYSMODULE_IO);	cellSysmoduleLoadModule(CELL_SYSMODULE_FS);	cellPadInit(1);		// init PSGL and get the current system width and height	gfxInitGraphics();	// initalize the dbgFonts	dbgFontInit();	usb = 0;		char *device = new char[7];	while(1)	{		// check for exit		cellSysutilCheckCallback();				clear();				// read pad		readPad();				// check if syscall works		if(peek(0x80000000003EE470ULL) == 0xffffffff80010003ULL)			break; // quit the loop				if(old_pad & BUTTON_UP)			if(usb < 127)				usb++;				if(old_pad & BUTTON_DOWN)			if(usb > 0)				usb--;								if(old_pad & BUTTON_CROSS)		{			uint64_t addr = start;						bool found1 = false;			bool found2 = false;						while( addr != end )			{				uint64_t map = peek(addr);								if(map == devFlash)				{					found1 = true;					poke(addr, devUsbMap);				}				else if(map == devUsbMap)				{					found2 = true;					poke(addr, devFlash);				}								addr += 0x100;			}						char *chars = new char[255];						if(found1 || found2)				strcat(chars, "Patched!");			else				strcat(chars, "Failed.");							if(found1)				strcat(chars, "\n/dev_flash patched to /dev_usb%03d");							if(found2)				strcat(chars, "\n/dev_usb patched to /dev_flash");						strcat(chars, "\nPress O to continue");						cellDbgFontPrintf( 0.08f, 0.1f, 1.2f, 0xff606060, chars, usb);			cellDbgFontDraw();						psglSwap();					while(1)			{				readPad();								if(old_pad & BUTTON_CIRCLE)					break;			}						clear();			psglSwap();		}				if(old_pad & BUTTON_SQUARE)		{			uint64_t addr = start;						bool found1 = false;			bool found2 = false;						while( addr != end )			{				uint64_t map = peek(addr);								if(map == appHome)				{					found1 = true;					poke(addr - 3, devUsb0);					poke(addr, devUsbMap);				}				else if(map == devUsbMap)				{					found2 = true;					poke(addr - 3, appHomeFull);					poke(addr, appHome);				}								addr += 0x100;			}						char *chars = new char[255];						if(found1 || found2)				strcat(chars, "Patched!");			else				strcat(chars, "Failed.");							if(found1)				strcat(chars, "\n/app_home patched to /dev_usb%03d");							if(found2)				strcat(chars, "\n/dev_usb patched to /app_home");						strcat(chars, "\nPress O to continue");						cellDbgFontPrintf( 0.08f, 0.1f, 1.2f, 0xff606060, chars, usb);			cellDbgFontDraw();						psglSwap();					while(1)			{				readPad();								if(old_pad & BUTTON_CIRCLE)					break;			}						clear();			psglSwap();		}				if(old_pad & BUTTON_TRIANGLE)			break;					if(old_pad & BUTTON_SELECT)		{			cellDbgFontPrintf( 0.08f, 0.1f, 1.2f, 0xff606060, "Dumping mounts.bin and lv2.bin to /dev_usb%03d/", usb);			cellDbgFontDraw();						psglSwap();			char *path1 = new char[255];			sprintf(path1, "/dev_usb%03d/lv2.bin", usb);			char *path2 = new char[255];			sprintf(path2, "/dev_usb%03d/mounts.bin", usb);						dumpLV2(path1);			dumpMounts(path2);			clear();						cellDbgFontPrintf( 0.08f, 0.1f, 1.2f, 0xff606060, "Dump complete, press O to continue.");			cellDbgFontDraw();						psglSwap();					while(1)			{				readPad();								if(old_pad & BUTTON_CIRCLE)					break;			}						clear();			psglSwap();		}		// print help stuff		cellDbgFontPrintf( 0.08f, 0.1f, 1.2f, 0xff606060, "CFWLoad v1.0\n\nCurrent usb: /dev_usb%03d\n\nX - (Un)Patch /dev_flash as usb\nSquare - (Un)Patch /app_home as usb\nSelect - Dump lv2.bin & mounts.bin to usb\nUp/Down - Change USB\nTriangle - Exit\n\n\n- stoker25", usb);		cellDbgFontDraw();				// set the usb ulong		// this is done after printing the help so its the same as the user saw		sprintf(device, "_usb%03d", usb);		devUsbMap = strToULong(device);				// swap PSGL buffers		psglSwap();		sys_timer_usleep(250000);	}		sys_process_exit(0);	return 1;}

Modifié par tikilou
Lien vers le commentaire
Partager sur d'autres sites

Je ne sais pas peut etre bien, mais il me semble que ce lien est là pour charger le PL, hors si tu changes l'adresse meme si tu poses le PL dans ton repertoire, la faille par l'USB ne s'y trouvera pas.

Mais c'est à tenter

Lien vers le commentaire
Partager sur d'autres sites

Bonjour, qui la utiliser car moi j'essaie de l'utiliser avec le Pl3 fix de Kakarako,

je retourne aussitôt sur le Xmb, mais j'ai pas impression que sa à fonctionner, car aucun moment ma led de la clé usb ne cligniote!

Quel méthode utiliser vous pour copier le nand sur la clefs usb?

Je n'ai aucun autre fichier sur la clefs car je l'ai formater, je n'arrive même pas à atteindre le menu de CFWload.

Merci de me donner un coup de main svp.

Lien vers le commentaire
Partager sur d'autres sites

Oui, mais la j'ai pas de possibilité de dump ou de flash.

sa me fait un écran noir puis direct après retour au xmb.

Mais je vais réessayé la manip de Shakin, les icônes se trouve dans quel dossier?? (juste pour m'aider à utilisation de CFWLoad!)

Edit : (Pl3 Dev) c'est le Pl3 de Kakaroto ?

Modifié par Djoe45
Lien vers le commentaire
Partager sur d'autres sites

Question :

Emuler le fw 3.5 pour jouer un peu en ligne ?

Réponse :

Soyons logique : ;)

Pour ça faudrait avoir les fichiers 3.50 nécessaires (dev_flash...).

Pour avoir ces fameux fichiers, il faudrait une faille en 3.50.

Si on a une faille en 3.50 ça ne sert plus à rien d'émuler ce fw pour jouer en ligne, vu qu'il y a faille en 3.50.

C'est pas si bete que ça parce que sur PSP avec DevHook on pouvait le faire.

Lien vers le commentaire
Partager sur d'autres sites

Bon, perso j'ai tout tenté, aussi bien en Hermes V4B, qu'avec la dernière version du PL3 de kakaroto, j'ai bien dumpé mon /dev_flash, et tout mis sur une clé USB... Et à chaque fois même topo, méga plantage, et quand je redémarre la console, elle me demande l'autorisation d'envoyer un rapport d'erreur à Sony.

Lien vers le commentaire
Partager sur d'autres sites

ca mon avis tu peux courir pour récuperer les fichiers d'install comme ca ^^ il me semble que la console décompresse les fichiers une fois justement l'install lancée , par contre ce soft peut permettre d'émulé un firmware anterieur non? genre j'ai une 3.15 , je récupere le flash , et je l'emule sur une 3.41

A essayer :-) :

Manip avec 2 disk dur :

- Laisser le firmware 3.50 s'intaller à 1% (ou a peine plus), débrancher la mappe du disk dur (pas l'alim)

- Rebooter avec le 2ieme DD, lancer le serveur ftp, brancher la mappe sur le 1ier DD

- Récuperer le firmware décrypter qui doit être dans un repertoire temporaire effacer a chaque boot.

Lien vers le commentaire
Partager sur d'autres sites

C'est ce que j'ai fait pourtant... J'ai formaté la clé en Fat32, j'ai copié l'intégralité du contenu /dev_flash à la racine de la clé USB, et ensuite j'ai utilisé l'homebrew... :-/
En ayant que l'intérieur du dev_flash, rien d'autre ? pas un .pkg qui traine ou je ne sais quoi.

edit : j'avais mal lu. Ok bah je ne vois pas. :/

Modifié par zouzzz
Lien vers le commentaire
Partager sur d'autres sites

A essayer :-) :

Manip avec 2 disk dur :

- Laisser le firmware 3.50 s'intaller à 1% (ou a peine plus), débrancher la mappe du disk dur (pas l'alim)

- Rebooter avec le 2ieme DD, lancer le serveur ftp, brancher la mappe sur le 1ier DD

- Récuperer le firmware décrypter qui doit être dans un repertoire temporaire effacer a chaque boot.

C'est une idée mais je ne suis pas sur qu'il y ai 2 nappes sur le DD de la PS3 vu que c'est du 2.5" certainement auto-alimenté.

donc lorsque tu debrancheras la nappe ça posera une erreur et ça t'enverras c.....

Lien vers le commentaire
Partager sur d'autres sites

A essayer :-) :

Manip avec 2 disk dur :

- Laisser le firmware 3.50 s'intaller à 1% (ou a peine plus), débrancher la mappe du disk dur (pas l'alim)

- Rebooter avec le 2ieme DD, lancer le serveur ftp, brancher la mappe sur le 1ier DD

- Récuperer le firmware décrypter qui doit être dans un repertoire temporaire effacer a chaque boot.

C'est une idée mais je ne suis pas sur qu'il y ai 2 nappes sur le DD de la PS3 vu que c'est du 2.5" certainement auto-alimenté.

donc lorsque tu debrancheras la nappe ça posera une erreur et ça t'enverras c.....

Si y'a que ça qui t'arrete, tu peux sortir le fer a souder pour recuperer les fils d'alim, on n'est plus à ça pret :-)

Lien vers le commentaire
Partager sur d'autres sites

la derniere fois que j'ai sortie mon fer à souder j'ai flingué ma xbox360 et j'ai du m'en racheter une autre,

et vu que je tiens d'avatange à mes PS3 qu'à mes 360, je préfererais eviter de les exposer à ma maladresse hihihi

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share