Slynk on NPDRM Basic Information and a PS3 IDA Tutorial

Esto es un Copy paste de PS3New para descargar los archivos pasate por el post origuinal en el siguiente enlace

http://www.ps3news.com/ps3-hacks-jailbr ... -tutorial/

First off, I will not help you obtain a copy of IDA. Go buy it.

http://www.mediafire.com/?kb3s14zi6hramrx

Extract the contents into your IDA folder. I don't take credit for these plugins and loaders.

Loading a File

There are two file types I'll teach you to load. SPU and ELF files.

SPU files can only loaded in IDA 32bit mode. When you load IDA choose "Go" and drag the file onto IDA. Make sure elf is highlighted at the top. In processor type, choose "IBM SPU Cell Processor: spu." Click set. Click OK. "Undefined or unknown...blabla" yes. You should be good to go.

Elf files can be loaded in either 32 or 64 bit mode. When you load IDA choose "Go" and drag the file onto IDA. Make sure PlayStation 3 ELF is highlighted at the top. Don't mess with the processor type. Kernel option 1 check "Create function if data xref data-> code32 exists.

Optional: I don't know what these do but I turn them on anyways XD In kernel option 2 choose "Coagulate data segments in the final pass", "Perform 'no-return' analysis", and "Perform full stack pointer analysis."

Click OK. Sometimes you get a better result from running the analyze_self script. (File->IDC File->C:/Program Files/IDA/idc/analyze_self.idc) Hit yes, copy the TOC Address it shows you and click OK. Go to Options->General->Analysis->Processor specific analysis options. Type the TOC address in (I use 0: instead of 0x to be safe. No clue if it makes a difference.) While you're at it click "Create subi instructions. Click OK. Click Reanalyze Program. Click OK. And wait.

You'll know when a script is done because at the bottom left it's say "AU: idle".

IDA Basics

Just a few things. The program is expansive and I'd love to get to know more about it but here's a few things I know. Hex view and IDA view are connected. That means if you find a string in hex view, you can see it in IDA view. This won't show you magically where it's used at but sometimes, that string is xrefed. If under the string you see "# DATA XREF: " you can right click the ":off_XXXX" at the end, and choose XREF To or From. To, will give you a graph of any functions that have a call "to" that offset. From give's a graph of offset's called "from" that offset (mostly only useful for viewing a graph of where all a function leads to.)

In IDA view, you can search for either an immediate value, a string, or a byte sequence. I've never "not" checked "find all occurrences." Don't know why you wouldn't want to. It'll return a list of occurrences in its own window.

If you're lucky, the file you scanned will have some of the functions named (something other than sub_, nullsub_, or start). These are known functions that are defined in the ps3 sdk.

When exiting, always make sure, unless you WANT to re analyze the whole file again, to choose one of the Pack database options and Collect garbage.

NPDRM Basic Info
Posted by Slynk | Posted in Security | Posted on 2:23 AM
0

I'd like to begin this post with a few comments.

Only a little bit of this is my own findings, a lot of this info was found from other sources.
NPDRM discussion does not have to be a topic of piracy, it can be used in conjunction with signing/encrypting homebrew if it is fully documented one day.
This is mostly to bring together the bits of info scattered across the interwebs.

NPDRM Types

NP 3 is a free licensed app. It has no license check. No edata/riff. Just install and use. This can be trial software as well.

NP 2 is a locally licensed app. First time activation must take place online. After which you'll have an edata/riff for that app and somehow this is connected to your act.dat.

NP1 is a network licensed app. It requires network authentication every time it is launched.

The offset for determining the NPDRM type of a self is at the NPDRM Header offset + 0x1C.

NPDRM Security

NPDRM as well as edata use AES, ECDSA, and CMAC for authenticity. These keys, with the exception of the CMAC key, are out there in the ether and can be found without much effort for someone who knows what they're doing. The specifics of the algorithm are still being researched but a few people have already figured it out; but of course they won't share their info.

AES and ECDSA are handle by appldr like always. CMAC is handle by one of vsh's modules. (Don't know which one, just adding it for completeness.)

Another form of security used in NPDRM is called a k_license. This is a 16 byte key that the developer makes that functions as sort of a "project key". It's used in all npdrm encrypted files within the project to prevent one of the files from being replaced by another project's file. It is also referred to as an SCE NPDRM Key.

NPDRM Header

The current known structure of the NPDRM Header:


typedef struct
{
byte[4] block_type; // this is 3(NPDRM)
byte[4] block_size; // this is 0x90(sizeof(Self_NPDRM))
byte[4] unknown1; // So far always 0
byte[4] unknown2; // So far always 0
byte[4] magic; // 0x4E504400(NPD)
byte[4] unknown3; // So far always 1
byte[4] license; // 1 Network License, 2 Local License, 3 Free
byte[4] type; // 1 Executable, 21 Update for Disc Based Game
byte[0x30] titleid;
byte[0x10] hash_unknown;
byte[0x10] hash1;
byte[0x10] hash2;
byte[0x10] padding;
} Self_NPDRM




I hear there's plenty of more info in the official sdk for anyone who legally owns it as well. Anyway, I'll post more if anything else comes to light. ^^



Traducido con el google

Carga de un archivo

Hay dos tipos de archivos voy a enseñar que cargue. SPU y archivos ELF.

archivos SPU sólo se puede cargar en la AIF modo de 32 bits. Cuando se carga la AIF elegir "Go" y arrastre el archivo a la AIF. Asegúrese de que los elf se destaca en la parte superior. En el tipo de procesador, seleccione "IBM SPU de la célula del procesador:. SPU" Haga clic en conjunto. Haga clic en Aceptar. "Indefinido o desconocido blabla ..." sí. Usted debe ser bueno para ir.

Elf archivos se pueden cargar en cualquier modo de 32 o 64 bits. Cuando se carga la AIF elegir "Go" y arrastre el archivo a la AIF. Asegúrese de que PlayStation 3 ELF se destaca en la parte superior. No se metan con el tipo de procesador. opción de un núcleo de verificación "Crear la función si los datos de referencia externa de datos-> code32 existe.

Opcional: No sé lo que estos hacen, pero yo les enciende todos modos XD En la opción del núcleo 2 elegir "segmentos de datos en Coagula la final pasar "," Realizar el análisis de 'no retorno' ", y" Realizar la plena análisis puntero de pila ".

Haga clic en Aceptar. A veces se obtiene un mejor resultado de ejecutar el analyze_self script. (Archivo-> IDC Archivo-> C: / Archivos de programa / AIF / IDC / analyze_self.idc) Hit sí, copia la dirección de TOC se le muestra y haga clic en Aceptar. Ir a Opciones-> General-> Análisis-> opciones de análisis específicos del procesador. Escriba la dirección de TOC en (utilizo 0:. 0x en lugar de estar a salvo no desvela si se hace una diferencia.) Mientras estás en ello haga clic en "Crear instrucciones subi. Haga clic en Aceptar. Haga clic en el Programa Volver a analizar. Haga clic en Aceptar. Y esperar.

Usted sabrá cuando un script se hace porque en la parte inferior izquierda es decir "de la UA: ociosa".

Fundamentos de la AIF

Sólo un par de cosas. El programa es amplio y me encantaría llegar a saber más sobre ello, pero aquí hay un par de cosas que conozco. ver hexagonal y ver la AIF están conectados. Esto significa que si usted encuentra una cadena en la vista hexadecimal, se puede ver en la vista de la AIF. Esto no le mostrará arte de magia, donde se utiliza a veces, pero, esa cadena es xrefed. Si en la cadena que ves "# DATA XREF:" puede hacer clic en el ": off_XXXX" al final, y elija XREF Para o De la. A, le dará una gráfica de las funciones que tiene una llamada "a" que compensan. De dar un gráfico de la compensación que se llama "de" que compensan (en su mayoría sólo es útil para ver un gráfico de una función en todos los conduce.)

En vista de la AIF, se puede buscar o bien un valor inmediato, una cadena, o un byte secuencia. Nunca he "no" marcó "encontrará todas las ocurrencias." No sé por qué no le gustaría. Se va a devolver una lista de sucesos que en su propia ventana.

Si tienes suerte, el archivo que se han explorado algunas de las funciones con nombre (algo que no sea subíndices, nullsub_, o iniciar). Estos se conocen las funciones que se definen en el SDK de PS3.

Al salir, asegúrese siempre de que, a menos que quiera volver a analizar el archivo entero de nuevo, para elegir una de las opciones de base de datos de paquete y liberación de recursos.

NPDRM Información Básica

Tipos NPDRM

NP 3 es una aplicación con licencia libre. No tiene ninguna verificación de licencia. No edata / riff. Sólo tiene que instalar y usar. Esto puede ser el software de prueba así.

NP 2 es una aplicación con licencia local. activación por primera vez debe tener lugar en línea. Después de lo cual tendrá un edata / riff de esa aplicación y de alguna manera esto está conectado a su act.dat.

NP1 es un red aplicación de la licencia. Requiere red autenticación cada vez que se puso en marcha.

El desplazamiento para determinar el tipo NPDRM de un auto se encuentra en la cabecera NPDRM desplazamiento + 0x1C.

NPDRM Seguridad

NPDRM así como AES edata uso, ECDSA y CMAC para confirmar su autenticidad. Estas claves, con la excepción de la tecla CMAC, están ahí fuera en el éter y se puede encontrar sin mucho esfuerzo para alguien que sabe lo que están haciendo. Los detalles del algoritmo todavía se están investigando, pero algunas personas ya lo han descubierto, pero de Por supuesto que no comparten su información.

AES y ECDSA se manejan por appldr como siempre. CMAC es manejado por uno de los módulos de vsh. (No sé cuál, sólo añadiendo que está completo.)

Otra forma de seguridad utilizados en NPDRM se llama k_license. Esta es una de 16 byte clave que el desarrollador hace que funciona como una especie de "clave del proyecto". Se utiliza en todos los archivos cifrados npdrm dentro del proyecto para evitar que uno de los archivos de ser sustituido por otro archivo de proyecto. También se le conoce como una clave de SCE NPDRM.

NPDRM Encabezado

La actual estructura conocida de la cabecera NPDRM:
Código:

typedef struct

{

byte[4] block_type; / / esto es de 3 (NPDRM)

byte[4] block_size; / / esto es 0x90 (sizeof (Self_NPDRM))

byte[4] desconoce1; / / ahora lo tanto siempre es 0

byte[4] unknown2; / / ahora lo tanto siempre es 0

byte[4] magia; / / 0x4E504400 (NPD)

byte[4] unknown3; / / ahora lo tanto, siempre un

byte[4] licencia; / / 1 Red Licencia, 2 de licencia local, gratis 3

byte[4] Tipo / / un ejecutable, el 21 de Actualización para la base del disco del juego

byte[2] titleid [0x30];

byte[2] hash_unknown [0x10];

byte[2] hash1 [0x10];

byte[2] hash2 [0x10];

byte[2] relleno [0x10];

Self_NPDRM}


He oído que hay mucha más información en el SDK oficial para cualquier persona que legalmente de su propiedad también. De todos modos, voy a publicar más si todo lo demás sale a la luz. ^ ^
hola alguien podría explicarme en k consiste este avances por favor
saludos
EVILRAVER escribió:hola alguien podría explicarme en k consiste este avances por favor
saludos

No se si estará bien explicado, pero el NPDRM es algo asi como un modo de cifrado que tiene sony a parte de las claves que lo utiliza para firmar los PKGs como los juegos de la PSN, aunque tambien para otras cosas. Aun no lo he leido entero pero es sobre toda la informacion que tienen de ello y hay un archivo para descargar que no se si servirá para poder compilar alguno de los 3 tipos de NPDRM ... ya te diré cuando me informe mejor.

La verdad que me parece muy interesante este post, no por la piratería sino conocimiento de como funciona y poder firmar PKGs asi
bueno y digo yo todo lo que se a explicado aqui no llega a nada y ni para descrifar un eboot de una actualizacion de un juego

Un saludo
liox escribió:
Hay dos tipos de archivos voy a enseñar que cargue. SPU y archivos ELF.

archivos SPU sólo se puede cargar en la AIF modo de 32 bits. Cuando se carga la AIF elegir "Go" y arrastre el archivo a la AIF. Asegúrese de que los elfos se destaca en la parte superior. En el tipo de procesador, seleccione "IBM SPU de la célula del procesador:. SPU" Haga clic en conjunto. Haga clic en Aceptar. "Indefinido o desconocido blabla ..." sí. Usted debe ser bueno para ir.



Mejor deja el texto en ingles... por que no soy bueno para ir.
mdssmario escribió:
liox escribió:
Hay dos tipos de archivos voy a enseñar que cargue. SPU y archivos ELF.

archivos SPU sólo se puede cargar en la AIF modo de 32 bits. Cuando se carga la AIF elegir "Go" y arrastre el archivo a la AIF. Asegúrese de que los elfos se destaca en la parte superior. En el tipo de procesador, seleccione "IBM SPU de la célula del procesador:. SPU" Haga clic en conjunto. Haga clic en Aceptar. "Indefinido o desconocido blabla ..." sí. Usted debe ser bueno para ir.



Mejor deja el texto en ingles... por que no soy bueno para ir.


mdssmario:
me hiciste mear de la risa...... [plas] [plas] [plas] [plas] [plas] [plas] [plas] [plas] [plas] [plas]
mdssmario escribió:
liox escribió:
Hay dos tipos de archivos voy a enseñar que cargue. SPU y archivos ELF.

archivos SPU sólo se puede cargar en la AIF modo de 32 bits. Cuando se carga la AIF elegir "Go" y arrastre el archivo a la AIF. Asegúrese de que los elfos se destaca en la parte superior. En el tipo de procesador, seleccione "IBM SPU de la célula del procesador:. SPU" Haga clic en conjunto. Haga clic en Aceptar. "Indefinido o desconocido blabla ..." sí. Usted debe ser bueno para ir.



Mejor deja el texto en ingles... por que no soy bueno para ir.



Quizas es que no te has asegurado de que los elfos se destaquen en la parte superior... ;)
7 respuestas