I just wanted to mention that using this tool on a 64-bit windows 7 install it will not see my hdd unless I open CMD as administrator, looks like it requires elevated privileges.
For anyone running into frustrations that was the ticket for me. I am going to reach out to aldo and fill him in because his tool requires elevation and it won't stack elevation for the ps3 exe so it won't work for me.
To quote: I've been working on this for 3 weeks now.
It allows you a fast connection between ps3 and pc to make function calls and syscalls and some other stuff. It will come in handy for for people who are reversing vsh and quickly want to call a function.
The download contains a .sprx, a C++ dll. a C# dll and I've included a C# library with some examples to understand how it works.
Credits to deank and 3141card
From the included ReadMe file: Load RemoteSystem.sprx on your ps3 using PRX Loader. Add RSYS_Net.dll as reference to your project and add RSYSLib.cs
Understanding this file is needed if you want to use the functions RSYSSyscall and RSYSCall. Both functions have String format as one of the arguments. This is needed if I want to use __arglist (equivalent to ellipsis (const char* format, ...).
This syscall takes 2 arguments. First one is an int and second one is a output byte array.. our format string would look like this:
p%i is an output pointer with size %i. In this case it is 16 so it is this:
This is then how you'd call the function.
Byte out_buffer = new Byte; // our output variable
UInt64 int_ret; // the value returned by the syscall will be stored in this variable.
RSYS.Syscall("i p16", 879, out int_ret, __arglist(0x10001, out_buffer));
The variable out_buffer will contain what the syscall returned.
Float types and integer types are swapped to big endian if the byte order of the host is little endian. When passing arrays, each element must be reversed if the byte order is little endian. RSYSLib contains some functions for fast conversion from little endian to big endian but it is up to the user to use them.
The difference between pointer 'p' and const pointer 'c' is that when using 'c' your variable won't get modified.