VHBL (Vita Half Byte Loader) is an open source tool to load PSP homebrews on the Playstation Vita.
VHBL can be downloaded at http://wololo.net/wagic/vhbl
#162670 by yifanlu
Sat Sep 01, 2012 1:36 am
So I'm trying to write a Vita loader which I codenamed UVL (userland vita loader). The goal is basically what HBL is for PSP, an ELF loader that can resolve NIDs and syscalls.

Source -> https://github.com/yifanlu/UVLoader
Documentation -> http://yifanlu.github.com/UVLoader/modules.html

As of right now, I have not tried compiling the code yet. It's mostly just pieces of code for things like the ELF parsher, resolving NIDs using module exports and syscalls from both imports and exports and etc. I am basically looking for people with experience in HBL to help me finish this. Currently, I am missing code to clean the memory (releasing heap pointers, unloading all modules, deleting threads, etc). But mostly, I want critiques on the current code and how things could be improved or if any of my assumptions in the code could prove false. I have tried to make the loader very portable (for other future exploits) by having lots of error checks and only using functions imported from sceLibKernel (if you want more information, PM me). If you want to help, just fork the code and send me a pull request when you're done.

EDIT: Progress update, everything compiles now, but I have yet "tested" it on a Vita. The main problem right now is that the base address 0x81000000 is read only by the game that's loaded. If someone knows how to free that memory or set it to be writeable, contact me.

EDIT 2 (9/14/12): Latest progress: viewtopic.php?f=53&t=13841&start=20#p169201

P.S: If you want to help, it would be awesome if you take a look at this! http://yifan.lu/coding_standard.html

(also, please keep discussion technical. thanks!)
Advertising
Last edited by yifanlu on Sat Sep 15, 2012 1:27 am, edited 3 times in total.
#162693 by rafael707
Sat Sep 01, 2012 2:42 am
yifanlu wrote:So I'm trying to write a Vita loader which I codenamed UVL (userland vita loader). The goal is basically what HBL is for PSP, an ELF loader that can resolve NIDs and syscalls.

Source -> https://github.com/yifanlu/UVLoader
Documentation -> http://yifanlu.github.com/UVLoader/modules.html

As of right now, I have not tried compiling the code yet. It's mostly just pieces of code for things like the ELF parsher, resolving NIDs using module exports and syscalls from both imports and exports and etc. I am basically looking for people with experience in HBL to help me finish this. Currently, I am missing code to clean the memory (releasing heap pointers, unloading all modules, deleting threads, etc). But mostly, I want critiques on the current code and how things could be improved or if any of my assumptions in the code could prove false. I have tried to make the loader very portable (for other future exploits) by having lots of error checks and only using functions imported from sceLibKernel (which should be loaded by every game). If you want to help, just fork the code and send me a pull request when you're done.

P.S: If you want to help, it would be awesome if you take a look at this! http://yifan.lu/coding_standard.html

(also, please keep discussion technical. thanks!)


get on irc: #pspcommunity im sure someone can help you, good luck too you
Advertising
#163086 by yifanlu
Sun Sep 02, 2012 2:27 am
I thank all of you for your support, but please let us focus on this loader and nothing else at this time. Thank you. (I was going to post this in the development section for HBL but there doesn't seem to be much activity there).

EDIT: Thanks Davee for spreading the word http://lolhax.org/2012/09/02/psvita-nat ... cmon-devs/
#164410 by febag
Wed Sep 05, 2012 3:11 am
This is some interesting news. I have class really early tomorrow, but I will take a look at the code later.

Been doing some PSP homebrew for fun. Maybe I can use what I learned to do something more interesting.

Nice work man, thanks for sharing.
#164417 by wuldorf1975
Wed Sep 05, 2012 4:03 am
I haven't done much hardware programming since the classic Game Boy (mix of C and assembly), but I have been hoping to get involved with understanding the Vita better (if only to understand a modern machine with an OS) and I'm happy to help keep this alive in whatever small way I can, even if just as a sounding board or code review.
#164419 by yifanlu
Wed Sep 05, 2012 4:23 am
An update on the progress. UVL can now be compiled successfully. After polishing it some more, I'll try to run it. Still no memory cleanup code and no memory allocation code, but the comments are pretty, documentation is complete, and debug logging is verbose.
#164556 by dridri
Wed Sep 05, 2012 12:00 pm
@kenzodragon :
First I'm back to finish my OpenIdea CMA, then after that I'm thinking about an USB Mass Storage program on the UVL, I don't know if there are USB raw functions usable in user-mode but I'll take a look at this.
#164612 by Xeeynamo
Wed Sep 05, 2012 6:59 pm
What type of developer are you searching? I have a bit of experience on PRX and EBOOT developing, I code from 4 years and currently I'm working on a OpenGL 2D game. I did a bit of programming with 65C816 for SNES, Motorola 68K for Sega MD and x86. I have no exprience with ARM and MIPS. Never tried to put myself into psp/psv hacking scene because I don't know where to start... If you want a C programmer that can fix the code, add some features or debugging code I can give you my help.
#164893 by dridri
Thu Sep 06, 2012 10:12 am
If you want to compile your own elfs/binaries (for example UVLoader) here a simple way to compile basic ARM (without any headers) :
Download binutils => http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz
and gcc-core => http://ftp.gnu.org/gnu/gcc/gcc-4.6.3/gc ... 6.3.tar.gz (I didn't find gcc-core of the last version)

You need a linux or cygwin installation that can compile gcc, then just follow these steps :
Build binutils :
./configure --target=arm-elf --prefix=/usr/local/arm --program-prefix=arm-
make
make install

Build GCC-Core :
mkdir build
cd build
../configure --prefix=/usr/local/arm --program-prefix=arm- --target=arm-elf --with-gcc --with-gnu-ld --with-gnu-as --disable-threads --disable-nls --enable-languages=c --disable-shared --without-x --enable-interpreter --without-stdlib --without-headers --enable-bootstrap --disable-libmudflap --disable-libssp --disable-libgomp
make all-gcc
make install-gcc


Your ARM toolchain will be installed in /usr/local/arm (you can change this in the ./configure commands)
The binaries will have 'arm-' prefix (ex arm-gcc)

When linking your programs, use flag -nostdlib (otherwise it will make a not found error on crt0) and a void start() function as entry point
The only available headers are basic ones : float.h, std{arg/def/bool/int/...}.h, limits.h, arm_neon.h (SIMD engine), ...

Who is online

Users browsing this forum: No registered users and 1 guest