Difference between revisions of "NSKBL"

From Vita Development Wiki
Jump to navigation Jump to search
Line 91: Line 91:
  
 
In 3.60 this function is at 0x510124FD
 
In 3.60 this function is at 0x510124FD
 +
 +
=== sceKblIsCEXForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x8A416887
 +
|}
 +
 +
In 3.60 this function is at 0x510171B5
 +
 +
<source lang="C">
 +
int sceKblIsCEXForKernel(void);
 +
</source>
 +
 +
=== sceKblIsCEXJpFatForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xC3DDDE15
 +
|}
 +
 +
In 3.60 this function is at 0x51017175
 +
 +
<source lang="C">
 +
int sceKblIsCEXJpFatForKernel(void);
 +
</source>
  
 
=== sceKblIsDEXForKernel ===
 
=== sceKblIsDEXForKernel ===
Line 101: Line 129:
  
 
In 3.60 this function is at 0x51017159
 
In 3.60 this function is at 0x51017159
 +
 +
<source lang="C">
 +
int sceKblIsDEXForKernel(void);
 +
</source>
 +
 +
=== sceKblIsToolForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xB6C9ACF1
 +
|}
 +
 +
In 3.60 this function is at 0x51017139
 +
 +
<source lang="C">
 +
int sceKblIsToolForKernel(void);
 +
</source>
 +
 +
=== sceKblIsTestForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x943E7537
 +
|}
 +
 +
In 3.60 this function is at 0x5101711D
 +
 +
<source lang="C">
 +
int sceKblIsTestForKernel(void);
 +
</source>
  
 
=== sceKblLoadModuleForKernel ===
 
=== sceKblLoadModuleForKernel ===
Line 113: Line 173:
  
 
<source lang="C">
 
<source lang="C">
 
 
typedef struct SceModuleLoadList {
 
typedef struct SceModuleLoadList {
 
   const char *filename;
 
   const char *filename;
Line 119: Line 178:
  
 
int sceKblLoadModuleForKernel(const SceModuleLoadList *list, SceUID *uid, int count, int some_flag);
 
int sceKblLoadModuleForKernel(const SceModuleLoadList *list, SceUID *uid, int count, int some_flag);
 +
</source>
 +
 +
=== sceKblStartModuleForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9A92436E
 +
|}
 +
 +
In 3.60 this function is at 0x51001571
  
 +
<source lang="C">
 +
int sceKblStartModuleForKernel(SceUID *uid_list, int count, SceSize args, void *argp);
 
</source>
 
</source>
  
Line 173: Line 245:
  
 
<source lang="C">
 
<source lang="C">
 
 
int sceKblIsVITAForKernel(void);
 
int sceKblIsVITAForKernel(void);
 
 
</source>
 
</source>
  
=== sceKblIsCEXForKernel ===
+
=== sceKblIsDolceForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x8A416887
+
| 3.60 || 0xA7BD4417
 
|}
 
|}
  
In 3.60 this function is at 0x510171B5
+
In 3.60 this function is at 0x510172A1
  
 
<source lang="C">
 
<source lang="C">
 
+
int sceKblIsDolceForKernel(void);
int sceKblIsCEXForKernel(void);
 
 
 
 
</source>
 
</source>
  
=== sceKblIsTestForKernel ===
+
=== sceKblIsGenuineDolceForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x943E7537
+
| 3.60 || 0xB6D00D6D
 
|}
 
|}
  
In 3.60 this function is at 0x5101711D
+
In 3.60 this function is at 0x510171E5
  
 
<source lang="C">
 
<source lang="C">
 
+
int sceKblIsGenuineDolceForKernel(void);
int sceKblIsTestForKernel(void);
 
 
 
</source>
 
 
 
=== sceKblStartModuleForKernel ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0x9A92436E
 
|}
 
 
 
In 3.60 this function is at 0x51001571
 
 
 
<source lang="C">
 
 
 
int sceKblStartModuleForKernel(SceUID *uid_list, int count, SceSize args, void *argp);
 
 
 
 
</source>
 
</source>
  
Line 259: Line 309:
  
 
int SceKblForKernel_9F4F3F98(void);
 
int SceKblForKernel_9F4F3F98(void);
 
</source>
 
 
=== sceKblIsDolceForKernel ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0xA7BD4417
 
|}
 
 
In 3.60 this function is at 0x510172A1
 
 
<source lang="C">
 
 
int sceKblIsDolceForKernel(void);
 
  
 
</source>
 
</source>
Line 289: Line 323:
  
 
<source lang="C">
 
<source lang="C">
 
 
int sceKblGetCpuIdForKernel(void);
 
int sceKblGetCpuIdForKernel(void);
 
</source>
 
 
=== sceKblIsToolForKernel ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0xB6C9ACF1
 
|}
 
 
In 3.60 this function is at 0x51017139
 
 
<source lang="C">
 
 
int sceKblIsToolForKernel(void);
 
 
</source>
 
 
=== sceKblIsGenuineDolceForKernel ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0xB6D00D6D
 
|}
 
 
In 3.60 this function is at 0x510171E5
 
 
<source lang="C">
 
 
int sceKblIsGenuineDolceForKernel(void);
 
 
 
</source>
 
</source>
  
Line 341: Line 341:
  
 
int SceKblForKernel_C011935A(void);
 
int SceKblForKernel_C011935A(void);
 
</source>
 
 
=== sceKblIsCEXJpFatForKernel ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0xC3DDDE15
 
|}
 
 
In 3.60 this function is at 0x51017175
 
 
<source lang="C">
 
 
int sceKblIsCEXJpFatForKernel(void);
 
  
 
</source>
 
</source>
Line 381: Line 365:
  
 
<source lang="C">
 
<source lang="C">
 
 
int sceKblCheckDipswForKernel(int bit);
 
int sceKblCheckDipswForKernel(int bit);
 
 
</source>
 
</source>
  
Line 399: Line 381:
  
 
<source lang="C">
 
<source lang="C">
 
 
int sceKblIsAllowKernelDebugForKernel(void);
 
int sceKblIsAllowKernelDebugForKernel(void);
 
 
</source>
 
</source>
  
Line 417: Line 397:
  
 
<source lang="C">
 
<source lang="C">
 
 
typedef struct SceKblSomeSysrootInfo {
 
typedef struct SceKblSomeSysrootInfo {
 
uint32_t data[4];
 
uint32_t data[4];
Line 423: Line 402:
  
 
int SceKblForKernel_D3A516D5(SceKblSomeSysrootInfo *some_flag);
 
int SceKblForKernel_D3A516D5(SceKblSomeSysrootInfo *some_flag);
 
 
</source>
 
</source>
  

Revision as of 15:37, 19 November 2019

NSBL is a program that performs emmc setup, base kernel module loading, etc. when vita boot

Module

The non-secure kernel bootloader contains an embedded and likely stripped version of SceSysmem, SceKernelModulemgr, SceSblSmschedProxy, SceExcpmgr, SceKernelIntrMgr, SceProcessmgr (maybe), SceSdif, SceIofilemgr (Simple version?), and some other core drivers.

How to debug NSBL

NSBL reads from sd0: instead, if a read error(?) Occurs in os0: during vita startup.

but, in order to generate os0: read errors, os0: must be damaged in some way, so there must be a way to physically recover vita.

Libraries

Known NIDs

Version Name World Visibility NID
3.60 SceKblForKernel Non-secure Kernel 0xD0FC2991

SceKblForKernel

SceKblForKernel_0x08E9FAEB

Version NID
3.60 0x08E9FAEB

In 3.60 this function is at 0x510172BD

SceKblForKernel_0x13A5ABEF

Version NID
3.60 0x13A5ABEF

In 3.60 this function is at 0x510137A9

SceKblForKernel_0x161D6FCC

Version NID
3.60 0x161D6FCC

In 3.60 this function is at 0x510123DD

SceKblForKernel_0x1DB28F02

Version NID
3.60 0x1DB28F02

In 3.60 this function is at 0x510123A1

SceKblForKernel_0x261F2747

Version NID
3.60 0x261F2747

Related to initialization?

In 3.60 this function is at 0x51001321

int SceKblForKernel_0x261F2747(void);

SceKblForKernel_0x314AA770

Version NID
3.60 0x314AA770

In 3.60 this function is at 0x510124FD

sceKblIsCEXForKernel

Version NID
3.60 0x8A416887

In 3.60 this function is at 0x510171B5

int sceKblIsCEXForKernel(void);

sceKblIsCEXJpFatForKernel

Version NID
3.60 0xC3DDDE15

In 3.60 this function is at 0x51017175

int sceKblIsCEXJpFatForKernel(void);

sceKblIsDEXForKernel

Version NID
3.60 0x5945F065

In 3.60 this function is at 0x51017159

int sceKblIsDEXForKernel(void);

sceKblIsToolForKernel

Version NID
3.60 0xB6C9ACF1

In 3.60 this function is at 0x51017139

int sceKblIsToolForKernel(void);

sceKblIsTestForKernel

Version NID
3.60 0x943E7537

In 3.60 this function is at 0x5101711D

int sceKblIsTestForKernel(void);

sceKblLoadModuleForKernel

Version NID
3.60 0x6D7A1F18

In 3.60 this function is at 0x51001551

typedef struct SceModuleLoadList {
  const char *filename;
} __attribute__((packed)) SceModuleLoadList;

int sceKblLoadModuleForKernel(const SceModuleLoadList *list, SceUID *uid, int count, int some_flag);

sceKblStartModuleForKernel

Version NID
3.60 0x9A92436E

In 3.60 this function is at 0x51001571

int sceKblStartModuleForKernel(SceUID *uid_list, int count, SceSize args, void *argp);

SceKblForKernel_0x752E7EEC

Version NID
3.60 0x752E7EEC

Debug function, same to SceDebugForDriver_1A3F2AA4

In 3.60 this function is at 0x51013841

SceKblForKernel_0x79241ACF

Version NID
3.60 0x79241ACF

Related to initialization?

In 3.60 this function is at 0x51001345

int SceKblForKernel_0x79241ACF(void);

SceKblForKernel_0x807B4437

Version NID
3.60 0x807B4437

In 3.60 this function is at 0x510124E5

sceKblIsVITAForKernel

Version NID
3.60 0x838466E9

In 3.60 this function is at 0x51017299

int sceKblIsVITAForKernel(void);

sceKblIsDolceForKernel

Version NID
3.60 0xA7BD4417

In 3.60 this function is at 0x510172A1

int sceKblIsDolceForKernel(void);

sceKblIsGenuineDolceForKernel

Version NID
3.60 0xB6D00D6D

In 3.60 this function is at 0x510171E5

int sceKblIsGenuineDolceForKernel(void);

SceKblForKernel_0x9B868276

Version NID
3.60 0x9B868276

return value is ptr?

In 3.60 this function is at 0x51013765

int SceKblForKernel_9B868276(void);

SceKblForKernel_0x9F4F3F98 (set some state?)

Version NID
3.60 0x9F4F3F98

set some state?

In 3.60 this function is at 0x51001561

int SceKblForKernel_9F4F3F98(void);

sceKblGetCpuIdForKernel

Version NID
3.60 0xB506A10E

In 3.60 this function is at 0x510147C9

int sceKblGetCpuIdForKernel(void);

SceKblForKernel_0xC011935A

Version NID
3.60 0xC011935A

get some info?

In 3.60 this function is at 0x51013921

int SceKblForKernel_C011935A(void);

SceKblForKernel_0xC7B77991

Version NID
3.60 0xC7B77991

In 3.60 this function is at 0x5101297D

sceKblCheckDipswForKernel

Version NID
3.60 0xC8F4DE71

In 3.60 this function is at 0x51015851

int sceKblCheckDipswForKernel(int bit);

sceKblIsAllowKernelDebugForKernel

Version NID
3.60 0xCE94F329

same to sceQafMgrIsAllowKernelDebugForDriver

In 3.60 this function is at 0x51016FD1

int sceKblIsAllowKernelDebugForKernel(void);

SceKblForKernel_0xD3A516D5

Version NID
3.60 0xD3A516D5

get some device info function

In 3.60 this function is at 0x510128AD

typedef struct SceKblSomeSysrootInfo {
	uint32_t data[4];
} __attribute__((packed)) SceKblSomeSysrootInfo;

int SceKblForKernel_D3A516D5(SceKblSomeSysrootInfo *some_flag);

sceKblCpuSwitchInterruptsForKernel

Version NID
3.60 0xDDB3A1A8

In 3.60 this function is at 0x51003554

void sceKblCpuSwitchInterruptsForKernel(void);

SceKblForKernel_0xF7AF8690

Version NID
3.60 0xF7AF8690

In 3.60 this function is at 0x5100124D