GameVicioFórum
GameVicioFórum

Custom Firmware = Pirataria?

Fórum GameVicio » PSP » Custom Firmware = Pirataria?
Custom Firmware = Pirataria?
Warlock Kyo
Warlock_Kyo arrow_drop_down
    star_borderstar_border
    Novato
    ID: #193910
    Membro desde
    # Custom Firmware = Pirataria?
    Resposta de Warlock_Kyo.

    Olá a todos,

    apesar de novato por aqui, sou participante aciduo de outros foruns sobre o PSP (ElOtroLado, QJ, Ketchup e PS2Dev). Além de um participante pouco aciduo da Scene HomeBrew.

    Não creio que os Custom Firmware atuais ( partindo do 3.52 M33 ) possam ser considerados piratas, pois os executaveis originais da sony não são modificados. Seu principio de funcionamento é bastante simples: um ELF estacio é escrito no boot loader, e ao fleshear a memoria principal (flash 0) são escritos alguns arquivos adicionais que fornecem as funcionalidades do CFW (Custom Firmware) tais como Recovery menu, suporte a homebrew, e também o tão polemico No UMD Driver.

    Para os que não conhecem a fundo o proprio firmware da sony inclui o NP 9660 (um ISO fs). A diferença desse iso fs para os "custom" é a possibiliddade de uso de uma iso comprimida através de uma zlib (iso mesmo um mero zip).

    O verdadeiro objetivo dos CFW é a execução de aplicações homebrew e também a utilização de cópias de segurança de títulos legalmente adiquiridos.

    vou dar o exemplo de um amigo meu que por acidente ejetou o UMD durante a atualizaçao 3.52 3.70 de um PSP PFAT. Oq ele ganhou? um "Brick"! Infelizmente foi necessario fazer modicifaçoes  na bateria dele para que pudessemos reviver o tijolo. Com o CFW bastaria entrar no recovery e rodar alguma aplicaçao homebrew de recovery. Outra vantagem do recovery é a possibilidade de recuperar-se de pseudo-bricks que são muito comuns durante as versoes de teste dos homebrew.

    Muito obrigado por lerem meu tópico, e por favor opinem!

    PS: Não é uma apologia a pirataria muito menos ao uso do CFW. Aos Usuários do CFW recomendo o USO CONSCIENTE. Nada de isos se vc nao tem o umd

    PSP1: FAT TA069 + PSP2TV: 1.50->1.51->1.52->2.00->1.50 PoC + DevHook->1.50->2.71 SE Rev C->3.03 Rev B->3.40 OE (brick)->1.50->3.51 M33-7->3.52 M33-4->3.71 M33-2->3.72HX-2->1.50->3.52 M33-4->3.71 M33-4->3.73 HX->1.50->3.52 M33-4->3.71 M33-4->3.80 M33BETA

    PSP2: FAT TA071 + Undiluted Platinum: Flash Interna: 2.00->2.50->2.82->3.03->3.40->3.51->3.80

                                                          Undiluted:1.50 PoC->3.03 OE->3.10 OE Rev A2->3.40 OE Rev A-> 3.52 M33-4->3.71 M33-4

    PSP3: FAT TA086: 3.70->3.71 M33-4 + IRShell 3.8 (Corrupted IDStorage  :mad: ) => Ainda trabalhando na solução

    PSP4: SLIM TA085 (Cheia de Bad Blocks vindos de fábrica):3.60->3.60 M33->3.71 M33-4

    Incontaveis UMDs  :p (nenhuma iso)

    Tio Pilo
    -Tio Pilo- arrow_drop_down
      starstarstarstar
      Sabe Pouco
      ID: #203527
      Membro desde
      Masculino, 32 anos
      # Re: Custom Firmware = Pirataria?
      Resposta de -Tio Pilo-.

      cara mesmo depois de ler seu post eu continuo pensando que CFW é pirataria mesmo

      porque você está modificando algo protegido por direito (deve ter algum direito que proteja os FW da sony  :biggrin: )

      mas é apenas minha opinião...

      Warlock Kyo
      Warlock_Kyo arrow_drop_down
        star_borderstar_border
        Novato
        ID: #211096
        Membro desde
        # Re: Custom Firmware = Pirataria?
        Resposta de Warlock_Kyo.

        veja pelo seguinte lado.

        voce fez um "hello world" no seu pc. para isso vc utilizou vamos supor por comodidade apenas ferramenteas livres (mingw), e ambiente windows.

        apartir do momento que o executavel foi gerado e executado vc passou a utilizar parte do codigo da precompilado da microsoft (o loader e o prompt que as bibliotecas sdt usam nao são nativos do seu programa). mas o seu programa nao é pirata. é apenas caseiro.

        o CFW funciona mais ou menos da mesma forma, o loader da sony continua sem ser modificado, mas alguns novos arquivos sao escrito na flash0 e carregados no boot.

        Conversei com DAX alguns dias atraz a esse respeito, e ele foi categorico em dizer que o CFW dele sí tem isoFS como um incentivo a tradução dos titulos e uso de copia de segurança. Ele mesmo não usa isos da net.

        :biggrin:

        Tio Pilo
        -Tio Pilo- arrow_drop_down
          starstarstarstar
          Sabe Pouco
          ID: #211598
          Membro desde
          Masculino, 32 anos
          # Re: Custom Firmware = Pirataria?
          Resposta de -Tio Pilo-.

          eh cara olhando por esse lado ai até tem sentido

          mas sei lah vamos ver tbm o que o povo do fórum axa.. :wink:

          Anônimo
          Anônimo arrow_drop_down
            ID: #263875
            Membro desde
            # Re: Custom Firmware = Pirataria?
            Resposta de Anônimo.

            pense comigo, vc acabou de criar algo, uma coisa legal tpo um PSP cm potencia de PS3 e comodidade de PSP, pense cmg, PS3P(PLaystation 3 POrtable) dai vm um carinha pega tdo q vc invento, vende sm da nda pra vc...

            vc ia fik feliz?

            isso é pirataria pra mim

            e sobre o firmware da Sony, se a Sony deixar um firmware mais personalizavel tdo ok

            mas se ela bloqea mais, dai nda ok...

            Warlock Kyo
            Warlock_Kyo arrow_drop_down
              star_borderstar_border
              Novato
              ID: #276748
              Membro desde
              # Re: Custom Firmware = Pirataria?
              Resposta de Warlock_Kyo.

              nossa.. aprende a escrever.. não entendi nada do que você quis dizer

              romulobousquet
              romulo.bousquet arrow_drop_down
                starstarstarstarstarstarstar
                Manja Muito
                ID: #280204
                Membro desde
                # Re: Custom Firmware = Pirataria?
                Resposta de romulo.bousquet.

                Traduz aí porque está dificil hehe

                PS3 40GB | 1x Sixaxis | 1x DualShock3 | Home Teacher 5.1 | LCD Samsung 40' Full HD

                Games: F1 | Motorstorm | Motorstorm Pacific Rift | Grid | Burnout Paradise | GTA IV | MGS4 | COD4 | DMC4 | PES08 | FIFA09 | Siren: Blood Curse | Tekken 5 DR | Ratchet Clarck: Quest for Booty | Virtua Fighter 5 | Little Big Planet | Warhawk | GT5 Prologue | Pain.

                Tio Pilo
                -Tio Pilo- arrow_drop_down
                  starstarstarstar
                  Sabe Pouco
                  ID: #284754
                  Membro desde
                  Masculino, 32 anos
                  # Re: Custom Firmware = Pirataria?
                  Resposta de -Tio Pilo-.

                  [quote author=lupotterish link=topic=26242.msg263875#msg263875 date=1208552865]

                  pense comigo, vc acabou de criar algo, uma coisa legal tpo um PSP cm potencia de PS3 e comodidade de PSP, pense cmg, PS3P(PLaystation 3 POrtable) dai vm um carinha pega tdo q vc invento, vende sm da nda pra vc...

                  vc ia fik feliz?

                  isso é pirataria pra mim

                  e sobre o firmware da Sony, se a Sony deixar um firmware mais personalizavel tdo ok

                  mas se ela bloqea mais, dai nda ok...

                  [/quote]

                  vou tentar dar uma mãozinha.. :biggrin:

                  > pense comigo, você acabou de  criar algo muito bom, exemplo: um PSP com configuração de PS3, e você patentia, pois então vem uma pessoa e começa a vender cópias do seu produto sem te pagar os direitos autorais.. você não gostaria disso...

                  <

                  estou certo lupotterish?

                  só não entendi qual é a relação com o firmware, poderia explicar pra gente de outra forma mais clara?

                  flw fera

                  abs

                  Diego Angellove
                  Diego-Angellove arrow_drop_down
                    starstarstarstarstarstarstarstarstarstar
                    GameViciado Junior

                    O futuro pertence aos fiéis e aos justos!

                    ID: #290748
                    Membro desde
                    Masculino, 30 anos
                    # Re: Custom Firmware = Pirataria?
                    Resposta de Diego-Angellove.

                    [quote author=-Tio Pilo- link=topic=26242.msg203527#msg203527 date=1200620272]

                    cara mesmo depois de ler seu post eu continuo pensando que CFW é pirataria mesmo

                    porque você está modificando algo protegido por direito (deve ter algum direito que proteja os FW da sony  :biggrin: )

                    mas é apenas minha opinião...

                    [/quote]

                    Concordo!

                    Isso é algo inaceitável!

                    Warlock Kyo
                    Warlock_Kyo arrow_drop_down
                      star_borderstar_border
                      Novato
                      ID: #295646
                      Membro desde
                      # Re: Custom Firmware = Pirataria?
                      Resposta de Warlock_Kyo.

                      Para aqueles que conhecem esse é um codigo (ja bastante conhecido)...

                      como pode ser observado.... o original não é modificado fisicamente. mas sim apenas na ram, apos o mesmo ser carregado

                      o mesmo não é de minha autoria... apenas estou reproduzindo (com autorização dos autores)

                      #include <pspsdk.h>

                      int Main(void *, void *, void *, void *);

                      int Reboot_Entry(void *a0, void *a1, void *a2, void *a3)

                      {

                      return Main(a0, a1, a2, a3);

                      }

                      #define JAL_OPCODE 0x0C000000

                      #define J_OPCODE 0x08000000

                      #define MIPS_JAL(IMM) (0xC000000 + (u32)(IMM)&0x3FFFFFF)

                      #define MIPS_ADDI(RT,RS,IMM)    (0x24000000|(RS<<21)|(RT<<16)|((u32)(IMM)&0xffff))

                      #define MAKE_CALL(a, f) _sw(JAL_OPCODE | (((u32)(f) >> 2)  & 0x03ffffff), a);

                      //#define CHANGE_FUNC(a, f) _sw(J_OPCODE | (((u32)(f) & 0x3FFFFFFF) >> 2), a); _sw(0, a+4);

                      int (* Real_Reboot)(void *a0, void *a1, void *a2, void *a3) = (void *)0x88600000;

                      int (* sceBootLfatOpen)(char *file) = (void *)0x88607EAC;

                      int (* DcacheClear340)(void) = (void *)0x886027C0;

                      int (* IcacheClear340)(void) = (void *)0x8860218C;

                      int (* DcacheClear150)(void) = (void *)0x88c02c64;

                      int (* IcacheClear150)(void) = (void *)0x88c02c90;

                      int (* sceKernelCheckExecFile)(void *buf, int *check);

                      #define XD 0x95

                      static const u8 key_data_340[0x10] =

                      {

                      0x3B^XD, 0x9B^XD, 0x1A^XD, 0x56^XD, 0x21^XD, 0x80^XD, 0x14^XD, 0xED^XD,

                      0x8E^XD, 0x8B^XD, 0x08^XD, 0x42^XD, 0xFA^XD, 0x2C^XD, 0xDC^XD, 0x3A^XD

                      };

                      static void buld_key_param(const u8 *key_real)

                      {

                      int i;

                      u8 *dst  = (u8 *)(0xbfc00200 - 0x35231452); // KEY param

                      u8 *src  = (u8 *)(0x88611E80 - 0x35231452); // KEY seed

                      // key seed

                      for(i=0;i<0x10;i++)

                      {

                      dst[0x35231452+i] = src[0x35231452+i] ^ key_real ^ XD;

                      }

                      }

                      int memcmp(u8 *m1, u8 *m2, int size)

                      {

                      int i;

                      for (i = 0; i < size; i++)

                      {

                      if (m1 != m2)

                      return m2 - m1;

                      }

                      return 0;

                      }

                      void ClearCaches340()

                      {

                      DcacheClear340();

                      IcacheClear340();

                      }

                      void ClearCaches150()

                      {

                      DcacheClear150();

                      IcacheClear150();

                      }

                      int sceBootLfatOpenPatched(char *file)

                      {

                      if (memcmp(file, "/kd", 3) == 0)

                      {

                      file[2] = 'n';

                      }

                      else if (memcmp(file, "/vsh/module", 11) == 0)

                      {

                      file[5] = 'n';

                      }

                      return sceBootLfatOpen(file);

                      }

                      int sceKernelCheckExecFilePatched(void *buf, int *check)

                      {

                      int res;

                      int isPlain;

                      int index;

                      isPlain = (((u32 *)buf)[0] == 0x464C457F); /* ELF */

                      if (isPlain)

                      {

                      if (check[0x44/4] != 0)

                      {

                      check[0x48/4] = 1;

                      return 0;

                      }

                      }

                      res = sceKernelCheckExecFile(buf, check);

                      if (isPlain)

                      {

                      index = check[0x4C/4];

                      if (check[0x4C/4] < 0)

                      {

                      index += 3;

                      }

                      if ((check[8/4] == 0x20) ||

                      ((check[8/4] > 0x20) && (check[8/4] < 0x52)))

                      {

                      if ((((u32 *)buf)[index / 4] & 0x0000FF00))

                      {

                      check[0x44/4] = 1;

                      check[0x58/4] = ((u32 *)buf)[index / 4] & 0xFFFF;

                      return 0;

                      }

                      }

                      }

                      return res;

                      }

                      int PatchLoadCore340(void *a0, void *a1, void *a2, int (* module_start)(void *, void *, void *))

                      {

                      u32 text_addr = ((u32)module_start) - 0x0BB8;

                      // Patch within sceKernelLoadModuleBootLoadCore function

                      // Replace call sceKernelCheckExecFile with our own

                      MAKE_CALL(text_addr+0x15C8, sceKernelCheckExecFilePatched);

                      MAKE_CALL(text_addr+0x1618, sceKernelCheckExecFilePatched);

                      // Patch within sceKernelProbeExecutableObject function

                      // Replace call sceKernelCheckExecFile with our own

                      MAKE_CALL(text_addr+0x468C, sceKernelCheckExecFilePatched);

                      ClearCaches340();

                      sceKernelCheckExecFile = (void *)(text_addr+0x3FB4);

                      return module_start(a0, a1, a2);

                      }

                      int PatchLoadCore150(void *a0, void *a1, int (* module_start)(void *, void *))

                      {

                      /* No Plain Module Check Patch */

                      _sw(0x340D0001, 0x880152e0);

                      ClearCaches150();

                      return module_start(a0, a1);

                      }

                      int Main(void *a0, void *a1, void *a2, void *a3)

                      {

                      if (memcmp((void *)0x88c16CB2, "19196", 5) != 0)

                      {

                      // Patch within sceKernelBootLoadFileFlash function

                      // Replace call to sceBootLfatOpen with our own ('/kd' to '/kn')

                      MAKE_CALL(0x88600094, sceBootLfatOpenPatched);

                      // Patch within sceKernelCheckPspConfig function

                      // Patch ~PSP header check (enable non ~PSP config file)

                      _sw(0xafa50000, 0x8860514C);

                      _sw(0x20a30000, 0x88605150);

                      // patch KDebugForKernel_24C32559 to always return 1

                      _sw(0x03e00008, 0x88600FA0);

                      _sw(0x24020001, 0x88600FA4);

                      // Patch within sceKernelBootLoadFileFlash function

                      // Patch sceBootLfatfsMount fail errors

                      _sw(0, 0x8860008c);

                      // patch within kactivate function

                      // Patch call to LoadCore module_start

                      _sw(MIPS_ADDI(7, 21, 0), 0x88604C2C);

                      _sw(MIPS_JAL(PatchLoadCore340), 0x88604C30);

                      _sw(MIPS_ADDI(29, 8, 0), 0x88604C34);

                      // Patch hash check errors

                      _sw(0, 0x88604084);

                      _sw(0, 0x886040DC);

                      // Patch nand decryption

                      _sw(0xAC60C7E0, 0x88610742);

                      // key generation

                      buld_key_param(key_data_340);

                      ClearCaches340();

                      }

                      else

                      {

                      /* Patch the call to LoadCore module_start */

                      // 88c00fec: mov $v0, $s2 -> mov $a2, $s2 (module_start)

                      // 88c00ff0: mov $a0, $s5

                      // 88c00ff4: mov $a1, $sp

                      // 88c00ff8: jr  $v0 -> jal PatchLoadCore150

                      // 88c00ffc: mov $sp, $s6

                      _sw(0x02403021, 0x88c00fec);

                      MAKE_CALL(0x88c00ff8, PatchLoadCore150);

                      Real_Reboot = (void *)0x88c00000;

                      ClearCaches150();

                      }

                      return Real_Reboot(a0, a1, a2, a3);

                      }

                      Fórum GameVicio » PSP » Custom Firmware = Pirataria?