ELF import table

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
m0skit0
Posts: 191
Joined: Tue Jun 02, 2009 8:58 pm

ELF import table

Post by m0skit0 »

Hi there, me again

As I said, I'm trying to make an eboot loader from an exploit. I've managed to load the program section from the ELF. Now the thing is to resolve the imports table. And sincerely, my ignorance about this on PSP is absolute, except for understanding what an import table is, of course. And I guess it has something to do with the symbol table too...

I have also read that you can use the import table of the game being exploited to do the resolving. I guess if a function is not imported in the game, you'll not be able to resolve it, right?

And also, how relocating works on PRXs? I understand the concept of relocation sections, and that the symbols there needs to be relocated, but how it is done I cannot figure out.

:(
The Incredible Bill Gates wrote:The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers.
m0skit0
Posts: 191
Joined: Tue Jun 02, 2009 8:58 pm

Post by m0skit0 »

Ok, the imports table is .lib.stub, in case someone has the same question. It's explained here: http://hitmen.c02.at/files/yapspd/psp_d ... ec26.2.2.6

Relocation next.
The Incredible Bill Gates wrote:The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers.
sauron_le_noir
Posts: 203
Joined: Sat Jul 05, 2008 8:03 am

Post by sauron_le_noir »

thx tyranid has also provide macros to handle function that must be imported

Code: Select all

.macro IMPORT_START module, flags_ver

	.set push
	.section .rodata.sceResident, "a"
	.word   0
__stub_modulestr_\module:
	.asciz  "\module"
	.align  2

	.section .lib.stub, "a", @progbits
	.global __stub_module_\module
__stub_module_\module:
	.word   __stub_modulestr_\module
	.word   \flags_ver
	.word   0x5
	.word   __executable_start
	.word   __executable_start

	.set pop
.endm

.macro IMPORT_FUNC module, funcid, funcname

	.set push
	.set noreorder

	.extern __stub_module_\module
	.section .sceStub.text, "ax", @progbits
	.globl  \funcname
	.type   \funcname, @function
	.ent    \funcname, 0
\funcname:
	.word   __stub_module_\module
	.word   \funcid
	.end    \funcname
	.size   \funcname, .-\funcname

	.section .rodata.sceNid, "a"
	.word   \funcid

	.set pop
.endm

.macro IMPORT_FUNC_WITH_ALIAS module, funcid, funcname, alias

	.set push
	.set noreorder

	.extern __stub_module_\module
	.section .sceStub.text, "ax", @progbits
	.globl  \alias
	.type   \alias, @function
\alias:
	.globl  \funcname
	.type   \funcname, @function
	.ent    \funcname, 0
\funcname:
	.word   __stub_module_\module
	.word   \funcid
	.end    \funcname
	.size   \funcname, .-\funcname

	.section .rodata.sceNid, "a"
	.word   \funcid

	.set pop
.endm
m0skit0
Posts: 191
Joined: Tue Jun 02, 2009 8:58 pm

Post by m0skit0 »

Thanks to your for sharing that too, mon ami :)
The Incredible Bill Gates wrote:The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers.
Post Reply