How to call a Syscall By deroad

wenos dias gente no he visto esto por aqui y me parece interesante postearlo, si esta repetido cerrad el hilo: [rtfm]
copy/paste google:

[Tutorial] Cómo llamar a un syscall por deroad

Publicado por GregoryRasputin, en adelante, @ 08:02

PS3HaX Homebrew deroad desarrollador siempre es contribuir a la escena ya sea PS3 o la escena del PS Vita, que ha publicado algunos interesantes aplicaciones homebrew PS3, contribuyó a la Wikis PS3/Vita Dev y ha escrito algunos tutoriales impresionantes, aquí está uno de ellos, que se ha actualizado recientemente:

En informática, una llamada al sistema (también conocido como syscall) es como un programa solicita un servicio desde el núcleo de un sistema operativo. Esto puede incluir servicios de hardware (por ejemplo, relacionados con el acceso al disco duro), crear y ejecutar nuevos procesos y la comunicación con los servicios del núcleo integral (como la programación). Las llamadas al sistema proporcionan la interfaz entre un proceso y el sistema operativo.
( Wikipedia - llamadas al sistema )

Con PSL1GHT podemos llamar a todas las llamadas al sistema 989.
es muy sencillo para llamar a uno, pero lo que necesita saber cuántos parámetros que necesita, hay algunas llamadas al sistema que necesita sólo un parámetro, hay otros que necesitan 8 parámetros.

Usted puede encontrar la lista de llamadas al sistema con los números de los parámetros aquí: llamadas al sistema Ps3DevWiki

Una vez que sepa el número de los parámetros que necesita (y el tipo de los parámetros si se escriben), usted está listo para llamar a uno:

Lo primero que añadir lo siguiente son:

# Include <ppu-lv2.h>

A continuación, puede llamar a la llamada al sistema:

lv2syscall N (number_of_the_syscall, parámetros ...);
Cambio de N con el número de los parámetros, y que el número de la llamada al sistema que usted tiene que llamar a los parámetros.
algunos ejemplos:

Apagar la PS3:
1) Mira en el wiki dev y verás que la llamada al sistema para apagar la PS3 es el número 379 (sys_sm_shutdown) y quiere 4 parámetros:
2) Así que ahora puedo llamar a la syscall con 4 parámetros:

lv2syscall 4 (379 SHUTDOWN_PARAM, 0,0,0);
Ahora en el wiki que dice, que el valor de cierre es 0 × 0 × 1100 o 100, por lo que yo escriba va:
lv2syscall4 (379,0 × 100,0,0,0)

Ahora bien, si llaman a esto en un homebrew estúpido como:
# Include <ppu-lv2.h>
int main () {
lv2syscall4 (379,0 × 100,0,0,0);
return 0;
}

lo que realmente se apaga la PS3.

Ahora bien, si no está seguro de que entiende completamente esto, voy a hacer otro ejemplo:
Obtiene la hora actual:
Ahora bien, este ejemplo viene desde el SDK de PSL1GHT:

esta es la función que obtener la hora actual en la PS3.

# Include <ppu-lv2.h>
s32 sysGetCurrentTime (U64 * s, U64 * ns)
{
lv2syscall2 (145, (U64) seg, (U64) nseg);
return_to_user_prog (S32);
}

ahora usa 2 parámetros por lo que llama lv2syscall2, entonces necesita los parámetros que tendrá el valor de segundos y nanosegundos. ahora, en esta función se puede ver que se pida la devolución de este syscall, para llamar a cualquier devolución de una llamada al sistema determinado, sólo tiene que pedir llamando al:

return_to_user_prog (type_of_the_variable);

es necesario definir el tipo de la variable de retorno. en ese caso era S32 (int alias firmado).
por lo que llama:
return_to_user_prog (S32);

si se trataba de un entero normal, tuvo que llamar a:
return_to_user_prog (int);

para compilar correctamente es necesario añadir, simplemente las siguientes banderas:

-Llv2

Visita la fuente oficial aquí:
Bienvenido a Tutoriales PS3

También puede visitar el blog de los desarrolladores aquí:
/ Dev/ram0

Read more: http://translate.googleusercontent.com/ ... z1lm6DhxWC

http://ps3tutorials.wikispaces.com/How+to+call+Syscalls
Un tema interesante para aquel que se quiere ir metiendo en desarrollar para la ps3 como hobby. Poquito a poquito
Pero macho... Esfuerzate un poco en quitar los gazapos de Google Translator... Signed int... Entero firmado... [buuuaaaa]
2 respuestas