Editing NID

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 7: Line 7:
</source>
</source>


Suffixes can be found [https://psdevwiki.com/vita/index.php?title=Keys here], [https://www.psdevwiki.com/ps3/Keys#Modules here] and [https://wiki.henkaku.xyz/vita/NID here].
where suffixes can be found [https://playstationdev.wiki/psvitadevwiki/index.php?title=Keys#NID_generation_suffixes here].


== PSP ==
== PSP ==


PSP NIDs had no suffix until a certain System Software version around 3.50.
PSP NIDs had no suffix until a certain FW.


Since that version, the suffixes are unknown.
After that FW, the suffix is unknown.


== PS3 ==
== PS3 ==


=== Regular exports ===
=== Regular exports ===
ps3_nid_suffix: 6759659904250490566427499489741A


To calculate FNID value of exported/imported symbol from .PRX you need to take SHA-1 hash over concatenation of symbol's name and ps3_nid_suffix and then grab first 4 bytes from it and reverse these bytes (because of little-endian).
To calculate FNID value of exported/imported symbol from .PRX you need to take SHA-1 hash over concatenation of symbol's name and ps3_nid_suffix and then grab first 4 bytes from it and reverse these bytes (because of little-endian).
Line 32: Line 34:


=== NONAME exports ===
=== NONAME exports ===
ps3_noname_nid_suffix: 0xbc5eba9e042504905b64274994d9c41f


For import stubs with no names, you must use SHA1 over concatenation of symbol's name and ps3_noname_nid_suffix as an ascii string. Some examples of noname imports are module_start, module_info, and module_stop.
For import stubs with no names, you must use SHA1 over concatenation of symbol's name and ps3_noname_nid_suffix as an ascii string. Some examples of noname imports are module_start, module_info, and module_stop.
''SHA1''('module_info' + ps3_noname_nid_suffix) = '''1630f4d7'''0bf3df419db9d481983411fd3130482a = '''0xD7F43016'''
''SHA1''('module_info' + '0xbc5eba9e042504905b64274994d9c41f') = '''1630f4d7'''0bf3df419db9d481983411fd3130482a = '''0xD7F43016'''


== PS Vita ==
== PSVita ==


=== Regular exports ===
=== Regular exports ===


Suffix is per-library. Some old PS Vita modules use suffixless NIDs.
suffix is unknown.


=== NONAME exports ===
=== NONAME exports ===


Suffix is known from PS Vita armlibgen.exe executable reverse-engineering.
Suffix is known from PSVita armlibgen.exe.


= NID generation code =
= Generation code =


Here is some code in C# with the example "sys_crash_dump_get_user_log_area":
Here is some code in C# with the example "sys_crash_dump_get_user_log_area":
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)