SceSblACMgr: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
 
(198 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Secure block Attribute-Capability Manager
== Module ==
== Module ==


=== Known NIDs ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! Name !! World !! Privilege !! NID
! Version !! World !! Privilege
|-
| 1.69 || SceSblACMgr || Non-secure || Kernel || 0xB6E5AEBE
|-
|-
| 3.60 || SceSblACMgr || Non-secure || Kernel || 0x7474D6F9
| 0.931.010-3.740.011 || Non-secure || Kernel
|}
|}


Line 19: Line 18:
! Version !! Name !! World !! Visibility !! NID
! Version !! Name !! World !! Visibility !! NID
|-
|-
| 1.69 || [[SceSblACMgr#SceSblACMgrForKernel|SceSblACMgrForKernel]] || Non-secure || Kernel || 0x11F9B314
| 0.931.010-3.740.011 || [[SceSblACMgr#SceSblACMgrForKernel|SceSblACMgrForKernel]] || Non-secure || Kernel || 0x11F9B314
|-
| 0.931.010-3.740.011 || [[SceSblACMgr#SceSblACMgrForDriver|SceSblACMgrForDriver]] || Non-secure || Kernel || 0x9AD8E213
|-
| 0.931.010-3.740.011 || [[SceSblACMgr#SceSblACMgr|SceSblACMgr]] || Non-secure || User || 0xF069F219
|}
 
== Types ==
 
<source lang="C">
typedef struct st_attr_info_internal {
  SceUInt32 st_attr;
  int unk_0x04;
} st_attr_info_internal;
 
typedef struct st_attr_info {
  int index;                      // operation index
  st_attr_info_internal *st_attr;
  SceSize size;                  // 1 or 2 - size of st_attr
} st_attr_info;
</source>
 
== Notes ==
 
=== Common functions ===
 
FW 3.60 SceSblACMgr_0x570: sceSblACMgrHasAttribute
 
== Capability ==
 
Capability flags are stored on 0x20 bytes. Max bit number is 0xFF.
 
{| class="wikitable"
! Bit !! Class !! Name !! Description
|-
| 0 || privilege || root ||
|-
| 1 || privilege || system ||
|-
| 2 || privilege || game || Set on fSELF type 1.
|-
| 3 || privilege || nongame || Set on fSELF type 2.
|-
| 31 || ? || ? || Used by [[#SceSblACMgrForKernel_84604EED]].
|-
| 32 || ?debug level? || ?process dbg? || Bypass spawner privilege requirement and ignore shared secret.
|-
| 33 || ?debug level? || ?limited user? || Prohibits spawned attribute flag 17 at same time as self_type mask 0x20 and (genuine CEX or masked self_type != 0x10000). Error 0x800F0B35.
|-
| 34 || ?debug level? || ?remap? || VM function. Used by [[#SceSblACMgrForKernel_30575458]] ([[SceSysmem#sceKernelSysrootCheckRemapCodeForUserForKernel]]).
|-
| 35 || ?debug level? || ? ||
|-
| 52-55 || ? || ? || Set on fSELF type 1.
|-
| 56-59 || ? || ? || Set on fSELF type 2.
|-
| 96-127 || ? || ? || Always set (0xFFFFFFFF).
|-
| 128 || function || marlin || Used by [[#sceSblACMgrHasMarlinFlagForKernel]], [[#sceSblACMgrHasMarlinFlagForDriver]].
|-
|-
| 3.60 || [[SceSblACMgr#SceSblACMgrForKernel|SceSblACMgrForKernel]] || Non-secure || Kernel || 0x11F9B314
| 129 || function || magic_gate || Used by [[#sceSblACMgrHasMagicGateFlagForKernel]], [[#sceSblACMgrHasMagicGateFlagForDriver]].
|-
|-
| 1.69 || [[SceSblACMgr#SceSblACMgrForDriver|SceSblACMgrForDriver]] || Non-secure || Kernel || 0x9AD8E213
| 130 || function || udcd || Allows LoopBack Mount, Allows Udcd.
|-
|-
| 3.60 || [[SceSblACMgr#SceSblACMgrForDriver|SceSblACMgrForDriver]] || Non-secure || Kernel || 0x9AD8E213
| 131 || function || usb_serial ||
|-
|-
| 1.69 || [[SceSblACMgr#SceSblACMgr|SceSblACMgr]] || Non-secure || User || 0xF069F219
| 132 || function || virtual_machine ||
|-
|-
| 3.60 || [[SceSblACMgr#SceSblACMgr|SceSblACMgr]] || Non-secure || User || 0xF069F219
| 133 || function || force_open_msgpipe || Used by [[#SceSblACMgrForKernel_8241AB5C]] (and [[SceKernelThreadMgr#sceKernelOpenMsgPipe]]).
|-
| 134 || function || system_data_file_play_ready || Used by [[#sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel]], [[#sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver]].
|-
| 135 || function || system_data_file || Used by [[#sceSblACMgrHasSystemDataFileFlagForDriver]], [[#sceSblACMgrHasSystemDataFileFlagForDriver]]
|}
|}


== SceSblACMgrForKernel ==
== Attribute ==


Attribute flags are stored on 0x20 bytes. Max bit number is 0xFF.


=== PathId ===
{| class="wikitable"
! Bit !! Class !! Name !! Description
|-
| 0 || spawn_by || system ||
|-
| 1 || spawn_by || game ||
|-
| 2 || spawn_by || nongame ||
|-
| 16 || ? || coredump || Triggers a coredump when app crashes. Prohibits self_type mask 0x10000. Error 0x800F0B35.
|-
| 17 || ? || ? || Prohibits spawner capability flag 33 at same time as self_type mask 0x20 and (genuine CEX or masked self_type != 0x10000). Error 0x800F0B35.
|-
| 29 || platform || dex ||
|-
| 30 || platform || test, tool || Also supported by Diag.
|-
| 31 || platform || cex || Also supported by Diag.
|-
| 32 || mode || production || Requires production mode (Manufacturing mode).
|-
| 33 || mode || no_production || Prohibits production mode (Manufacturing mode). Set on fSELF type 1 and 2.
|-
| 34 || mode || qa_0xD_mask_1 || Requires QA flag 0xD mask 1.
|-
| 35 || mode || no_qa_0xD_mask_1 || Prohibits QA flag 0xD mask 1.
|-
| 36 || mode || some boot flag || Requires [[Second_Loader#Boot_type_indicator_for_slsk]] mask 0x20, but it seems this boot type is disabled in FW 3.60 release second_loader.
|-
| 37 || mode || qa_0xF_mask_1 || Requires QA flag 0xF mask 1.
|-
| 48 || "fself_related" || ? ||
|-
| 49 || "fself_related" || ? ||
|-
| 50 || "fself_related" || ? || Set on fSELF type 1.
|-
| 51 || "fself_related" || ? || Set on fSELF type 1.
|-
| 52 || "fself_related" || ? || Set on fSELF type 2.
|-
| 53 || "fself_related" || ? || Set on fSELF type 2.
|-
| 54 || "fself_related" || ? || Set on fSELF type 1 and 2.
|-
| 55 || "fself_related" || ? || Set on fSELF type 1 and 2.
|-
| 64 || media || ? || Media Type 9
|-
| 65 || media || sd0 || Set on fSELF type 1 and 2.
|-
| 66 || media || host0 || Set on fSELF type 1 and 2 only in Development Mode.
|-
| 67 || media || ? || Media Type 8
|-
| 68 || media || ux0 ||
|-
| 69 || media || gro0:app || Set on fSELF type 1 and 2 only in Release Mode.
|-
| 70 || media || gro0:patch || Set on fSELF type 1 and 2 only in Release Mode.
|-
| 71 || media || sa0 ||
|-
| 72 || media || mfa0 ||
|-
| 73 || media || mfb0 ||
|-
| 74 || media || lma0 ||
|-
| 75 || media || lmb0 ||
|-
| 76 || media || lmc0 ||
|-
| 77 || media || lmd0 ||
|-
| 78 || media || pd0 ||
|-
| 79 || media || ? || Maybe reserved or unused.
|-
| 80 || media || ?boot0? ?slb2? ||
|-
| 81 || media || os0 ||
|-
| 82 || media || vs0 ||
|-
| 83 || media || vd0 ||
|-
| 84 || media || tm0 ||
|-
| 85 || media || ur0 ||
|-
| 86 || media || ud0 ||
|-
| 87 || media || ? ||
|-
| 88 || media || ? ||
|-
| 89 || media || ux0:data ||
|-
| 90 || media || memcard (ux0:app) ||
|-
| 91 || media || memcard_patch (ux0:patch) ||
|-
| 92-95 || media || ? || Used by [[SceMagicGate]].
|-
| 96 || level or self_type || kernel ||
|-
| 97 || level or self_type || usermode ||
|-
| 98 || level or self_type || SM ||
|-
| 128 || ? || qa_0xB_mask_0x10 || On Test/Tool/Diag platform, it requires QA flag 0xB mask 0x10. Error 0x800F0B33.
|-
| 129 || ? || ? || Allows limited vs0 user drive access. Used by [[#SceSblACMgrForKernel_165C3C7A]], [[#SceSblACMgrForDriver_E79C7A8D]].
|-
| 136-223 || ? || ? || Never set?
|-
| 224-255 || ? || ? || Always set (0xFFFFFFFF).
|}


A code is passed in the header context to decrypt a SELF based on the path in which the SELF file must be located. This is likely a security feature to prevent SELFs that are designed to run from one path (for example <code>os0:</code>) from being copied and run from another path. It could also be used to select the key used in decryption.
== Media Type ==


A code is passed in the SceSblSmCommContext130 context buffer to decrypt a SELF based on the path in which the SELF file must be located. This is a security feature to prevent SELFs that are designed to run from one path (for example <code>os0:</code>) from being copied and run from another path.


{| class="wikitable"
{| class="wikitable"
! Path !! Media Type !! SELF Program Attribute Media Type Bit Number (0-255) !! Comment
|-
|-
! Path !! PathId !! comment
| ux0:user, ux0:/user || 0 || 0xFFFFFFFF (invalid) || Its bit number would read out of attribute (valid bits 0-255) so there is an early unsigned int check to avoid this Media Type in secure_kernel. It is so unlikely that this Media Type is embedded in SELF Program Attribute.
|-
|-
| ux0:user || 0 ||
| sd0 || 1 || 0x41 ||
|-
|-
| sd0 || 1 ||
| os0 || 2 || 0x51 ||
|-
|-
| os0 || 2 ||
| vs0 || 3 || 0x52 ||
|-
|-
| vs0 || 3 ||
| vd0 || 4 || 0x53 ||
|-
|-
| vd0 || 4 ||
| tm0 || 5 || 0x54 ||
|-
|-
| tm0 || 5 ||
| ur0 || 6 || 0x55 ||
|-
|-
| ur0 || 6 ||
| host0 || 7 || 0x42 || For usermode self_type, requires QA flag 0xD mask 2. For kernel or SM self_type, requires QA flag 0xE mask 1.
|-
|-
| host0 || 7 ||
| ? || 8 || 0x43 || Present in FWs 0.931.010-3.740.011 [[Secure Kernel]].
|-
|-
| boot0 || 10 || Found by Yifan in NSBL. Not findable and not working in 3.60 kernel. Could be the PathId for slb2 SELFs.
| ? || 9 || 0x40 || Present in FWs 0.931.010-3.740.011 [[Secure Kernel]].
|-
|-
| ud0 || 11 ||
| slb || 10 || 0x50 || like for kprx_auth_sm.self.
Also in external boot mode, the mediaType of self loaded by Kernel/User will be unconditionally set to this mediaType (10).
 
<s>Only set when kbl_param->boot_type_indicator_1 has flag 0x40, which seems to never happen on external (release) FWs. It is used to load SM (usually from os0:) instead of using sd0: Media Type.</s>
|-
|-
| ux0 || 12 ||
| ud0 || 11 || 0x56 ||
|-
|-
| gro0:app || 13 ||
| ux0 || 12 || 0x44 ||
|-
|-
| gro0:patch || 14 ||
| gro0:app, gro0:/app || 13 || 0x45 ||
|-
|-
| sa0 || 15 ||
| gro0:patch, gro0:/patch || 14 || 0x46 ||
|-
|-
| mfa0 || 16 ||
| sa0 || 15 || 0x47 ||
|-
|-
| mfb0 || 17 ||
| mfa0 || 16 || 0x48 ||
|-
|-
| lma0 || 18 ||
| mfb0 || 17 || 0x49 ||
|-
|-
| lmb0 || 19 ||
| lma0 || 18 || 0x4A ||
|-
|-
| lmc0 || 20 ||
| lmb0 || 19 || 0x4B ||
|-
|-
| lmd0 || 21 ||
| lmc0 || 20 || 0x4C ||
|-
|-
| pd0 || 22 ||
| lmd0 || 21 || 0x4D ||
|-
|-
| ux0:app || 23 ||
| pd0 || 22 || 0x4E ||
|-
|-
| ux0:patch || 24 ||
| ux0:app, ux0:/app || 23 || 0x5A ||
|-
|-
| ux0:data || 25 ||
| ux0:patch, ux0:/patch || 24 || 0x5B ||
|-
|-
| uma0 || 27 ||
| ux0:data, ux0:/data || 25 || 0x59 ||
|-
| ? || 26 || ? || Not present in FWs 0.931.010-3.740.011 [[Secure Kernel]] thus would return error 0x800F0B32. Certainly usable in non-secure kernel though.
|-
| uma0 || 27 || ? || Not present in FWs 0.931.010-3.740.011 [[Secure Kernel]] thus would return error 0x800F0B32. Usable in non-secure kernel though.
|}
|}


=== unk_02422F1F ===
<source lang="C">
// Code inspired by PSVita FWs 0.931.010-3.740.011 secure_kernel
uint32_t check_media_type_in_attribute(uint8_t *pAttribute, uint32_t media_type) {
  if (0x18 < media_type - 1) // This unsigned int check inhibits Media Type 0 because it has an invalid bit number (-1)
    return 0x800f0b32;
  uint32_t ret = 0x800F0B32; // Bad Media Type
  uint32_t bit_no = index_table[media_type];
  uint8_t media_type_byte = *(uint8_t *)pAttribute[bit_no >> 3];
  uint8_t media_type_mask = 1 << (~bit_no & 7);
  if (media_type_byte & media_type_mask != 0)
    ret = 0;
  return ret;
}
</source>
 
== SceSblACMgrForKernel ==
 
=== SceSblACMgrForKernel_F7524073 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x02422F1F
| 0.931 || 0xF7524073
|-
| 3.60 || not present
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 129);
Returns true if QA flag byte 9 mask 1 is set.


<source lang="C">
<source lang="C">SceBool SceSblACMgrForKernel_F7524073(void);</source>
int unk_02422F1F(SceUID pid);
</source>


=== unk_04C0ED3F ===
=== sceSblACMgrHasMarlinFlagForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x04C0ED3F
| 3.60 || 0x04C0ED3F
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 128);
return sceSblACMgrHasCapabilityForDriver(pid, 128);


<source lang="C">
<source lang="C">int sceSblACMgrHasMarlinFlagForKernel(SceUID pid);</source>
int unk_04C0ED3F(SceUID pid);
 
</source>
=== sceSblACMgrHasMagicGateFlagForKernel ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x02422F1F
|}
 
return sceSblACMgrHasCapabilityForDriver(pid, 129);
 
<source lang="C">int sceSblACMgrHasMagicGateFlagForKernel(SceUID pid);</source>


=== sceSblACMgrIsGameProgramForKernel ===
=== sceSblACMgrIsGameProgramForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x05FDC646
| 3.60 || 0x05FDC646
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id begins with 0x21 (NPDRM game) or 0x2F (SDK fSELF).
Returns true if program_authority_id begins with 0x21 (game) or 0x2F (fSELF).


<source lang="C">
<source lang="C">int sceSblACMgrIsGameProgramForKernel(SceUID pid);</source>
int sceSblACMgrIsGameProgramForKernel(SceUID pid);
</source>


=== unk_06BE9F0F ===
=== sceSblACMgrIsUnityRuntimeForPSMForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x06BE9F0F
| 3.60 || 0x06BE9F0F
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
?Returns true if sceSblACMgrIsSIEAppForDriver returns true.?


<source lang="C">
<source lang="C">int sceSblACMgrIsUnityRuntimeForPSMForKernel(SceUID pid);</source>
int unk_06BE9F0F(SceUID pid);
</source>


=== unk_0E489631 ===
=== sceSblACMgrHasUserDebugFlagForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0E489631
| 3.60 || 0x0E489631
|}
|}
This is a guessed name.


return sceSblACMgrHasCapabilityForDriver(pid, 32);
return sceSblACMgrHasCapabilityForDriver(pid, 32);


<source lang="C">
<source lang="C">int sceSblACMgrHasUserDebugFlagForKernel(SceUID pid);</source>
int unk_0E489631(SceUID pid);
</source>


=== unk_11C9158B ===
=== SceSblACMgrForKernel_11C9158B ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x11C9158B
| 0.931-3.60 || 0x11C9158B
|}
|}


<source lang="C">
A guessed name is sceSblACMgrGetFSAttributeByModeForKernel.


int unk_11C9158B(void* a1, void* a2);
Same as [[#SceSblACMgrForDriver_3B356B98]].


</source>
<source lang="C">int SceSblACMgrForKernel_11C9158B(void* input, void* output);</source>


=== unk_165C3C7A ===
=== SceSblACMgrForKernel_165C3C7A ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x165C3C7A
| 3.60 || 0x165C3C7A
|}
|}


<source lang="C">
A guessed name is sceSblACMgrIsVs0UserDriveAccessibleProgramForKernel.


int unk_165C3C7A(SceUID pid, char *maybe_path);
Same as [[#SceSblACMgrForDriver_E79C7A8D]].


</source>
<source lang="C">SceBool SceSblACMgrForKernel_165C3C7A(SceUID pid, const SceChar8 *path);</source>


=== unk_1948E9DB ===
=== SceSblACMgrForKernel_1948E9DB ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x1948E9DB
| 3.60 || 0x1948E9DB
|}
|}


returns 0
Equivalent of [[#SceSblACMgrForKernel_FBA1A256]].


<source lang="C">
<source lang="C">int SceSblACMgrForKernel_1948E9DB(void);</source>


int unk_1948E9DB();
=== SceSblACMgrForKernel_CCDBB74D ===
{| class="wikitable"
|-
! Version !! NID
|-
| 0.931-3.60 || 0xCCDBB74D
|}


</source>
<source lang="C">int SceSblACMgrForKernel_CCDBB74D(SceUID pid, st_attr_info *a2, void *a3);</source>


=== unk_1B160234 ===
=== SceSblACMgrForKernel_75AAF981 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x1B160234
| 0.931-3.60 || 0x75AAF981
|}
|}


<source lang="C">
A guessed name is sceSblACMgrIsAllowFSAttributeForKernel.


int unk_1B160234(SceUID pid, int *a2, int *a3, int flags);
Equivalent of [[#SceSblACMgrForKernel_BE5667C5]].


</source>
<source lang="C">int SceSblACMgrForKernel_75AAF981(SceUID pid, st_attr_info *a2, int a3);</source>


=== unk_2AE6CF27 ===
=== sceSblACMgrSetFSAttributeByAttributeWithMountPointForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x2AE6CF27
| 1.500.151-3.740.011 || 0x1B160234
|}
|}


<source lang="C">
<source lang="C">int sceSblACMgrSetFSAttributeByAttributeWithMountPointForKernel(SceUID pid, st_attr_info *a2, int *a3, int flags);</source>
 
int unk_2AE6CF27(SceUID pid, void* a2, int flags);
 
</source>


=== unk_30575458 ===
=== sceSblACMgrSetFSAttributeByModeForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x30575458
| 0.990-3.60 || 0x2AE6CF27
|}
|}


returns true if sceSblACMgrHasCapabilityForDriver(pid, 34) returns true (--> XX XX XX XX 2X),
Equivalent of [[#sceSblACMgrSetFSAttributeByModeForDriver]].


or returns SceSysrootForDriver_26AA237C(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.
<source lang="C">int sceSblACMgrSetFSAttributeByModeForKernel(SceUID pid, st_attr_info *a2, int flags);</source>


<source lang="C">
=== SceSblACMgrForKernel_30575458 ===
int unk_30575458(SceUID pid);
</source>
 
=== sceSblACMgrIsSystemForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x31C23B66
| 3.60 || 0x30575458
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 0);
returns true if sceSblACMgrHasCapabilityForDriver(pid, 34) returns true
 
or returns <code>SceSysrootForDriver_26AA237C();</code> if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


<source lang="C">
<source lang="C">int SceSblACMgrForKernel_30575458(SceUID pid);</source>
int sceSblACMgrIsSystemForKernel(SceUID pid);
</source>


=== sceSblACMgrIsSIEAppForKernel ===
=== sceSblACMgrIsKernelProgramForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x3388F595
| 3.60 || 0x31C23B66
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsSystemForKernel, sceSblACMgrIsRootProgramForKernel.


Returns true if self_auth_info->program_authority_id first 8 bytes equals ?0x28000000 or 0x22000000 or 0x21000000?
Equivalent of [[#sceSblACMgrIsKernelProgramForDriver]].


and if self_auth_info->program_authority_id last 8 bytes equals 0x1CD20010 or is lower.
<source lang="C">int sceSblACMgrIsKernelProgramForKernel(SceUID pid);</source>


See [[https://vitadevwiki.com/vita/AuthorityId#SIE_apps]]
=== sceSblACMgrIsPSMDevAssistantForKernel ===
 
<source lang="C">
int sceSblACMgrIsSIEAppForKernel(SceUID pid);
</source>
 
=== unk_356B9139 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x356B9139
| 3.60 || 0x3388F595
|}
|}


<source lang="C">
Temp name was sceSblACMgrIsSIEAppForKernel.


int unk_356B9139(int unused, char *maybe_path, int *a3);
Equivalent of [[#sceSblACMgrIsPSMDevAssistantForDriver]].


</source>
<source lang="C">int sceSblACMgrIsPSMDevAssistantForKernel(SceUID pid);</source>


=== sceSblACMgrIsAllowedExtendedMemoryForKernel ===
=== sceSblACMgrIsAllowLoopBackMountForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x384D20FD
| 3.60 || 0x384D20FD
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsAllowExtendedMemoryForKernel.


Returns true if self_auth_info->program_authority_id equals 0x280000000000001E (NPXS10010 - Videos) or 0x2800000000000010 (NPXS10104 - Mini Settings for QA) or 0x2800000000000031 (NPXS10036 - AVMediaService)
Equivalent of [[#sceSblACMgrIsAllowLoopBackMountForDriver]].


or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.
<source lang="C">SceBool sceSblACMgrIsAllowLoopBackMountForKernel(SceUID pid);</source>
 
<source lang="C">
int sceSblACMgrIsAllowedExtendedMemoryForKernel(SceUID pid);
</source>


=== sceSblACMgrIsNonGameProgramForKernel ===
=== sceSblACMgrIsNonGameProgramForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x3F99279F
| 3.60 || 0x3F99279F
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 3);
return sceSblACMgrHasCapabilityForDriver(pid, 3);


<source lang="C">
<source lang="C">int sceSblACMgrIsNonGameProgramForKernel(SceUID pid);</source>
int sceSblACMgrIsNonGameProgramForKernel(SceUID pid);
</source>


=== unk_410357AF ===
=== sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x410357AF
| 3.60 || 0x410357AF
|}
|}


returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true (--> XX XX XX XX  XX XX XX XX  X2),
returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true


or returns SceSysrootForDriver_E2515A08(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.
or returns SceSysrootForDriver_E2515A08(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


<source lang="C">
<source lang="C">int sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel(SceUID pid);</source>
int unk_410357AF(SceUID pid);
</source>


=== sceSblACMgrIsPspEmuForKernel ===
=== sceSblACMgrIsPspEmuForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x47B67F72
| 3.60 || 0x47B67F72
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).
Returns true if program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).


<source lang="C">
<source lang="C">int sceSblACMgrIsPspEmuForKernel(SceUID pid);</source>
int sceSblACMgrIsPspEmuForKernel(SceUID pid);
</source>


=== unk_48F4D5EE ===
=== SceSblACMgrForKernel_48F4D5EE ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x48F4D5EE
| 0.931-3.60 || 0x48F4D5EE
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 31);
Equivalent of [[#SceSblACMgrForKernel_84604EED]].


<source lang="C">
<source lang="C">SceBool SceSblACMgrForKernel_48F4D5EE(SceUID pid);</source>
int unk_48F4D5EE(SceUID pid);
</source>


=== unk_49509A83 ===
=== sceSblACMgrIsAllowProcessDebugForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x49509A83
| 3.60 || 0x49509A83
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name. Temp name was sceSblACMgrIsAllowCoredumpForKernel.
 
If self_auth_info->program_authority_id first 8 bytes equals 0x28000000
 
AND sceSblQafMgrIsAllowSystemAppDebugForDriver returns false
 
-> returns a bit flag (?number 16?) : ((signed int)(unsigned __int8)*(self_auth_info + (16 >> 3) - 104) >> (~(_BYTE)16 & 7)) & 1;
 
Else, if self_auth_info->program_authority_id first 8 bytes equals 0x22000000 or 0x21000000
 
AND SceSysrootForDriver_56D85EB0 returns true
 
AND SceQafMgrForDriver_694D1096 returns true
 
-> returns 1
 
Else,
 
-> returns a bit flag (?number 16?) : ((signed int)(unsigned __int8)*(self_auth_info + (16 >> 3) - 104) >> (~(_BYTE)16 & 7)) & 1;


<source lang="C">int sceSblACMgrIsAllowProcessDebugForKernel(SceUID pid);</source>


<source lang="C">
=== sceSblACMgrIsAllowCacheForKernel ===
int unk_49509A83(SceUID pid);
</source>
 
=== unk_4C4B7D6B ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x4C4B7D6B
| 3.60 || 0x4C4B7D6B
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Equivalent of SceSblACMgrForKernel_456DA7AC.
 
Returns true if [[SceSblACMgr#sceSblACMgrHasCapabilityForDriver|sceSblACMgrHasCapabilityForDriver]](pid, 3); returns true
 
or if self_auth_info->program_authority_id 8 last bytes equals 0x1CD20010 or is lower (SIE apps)
 
or 0x2800000000000044 (NPXS10085 - Videos) or 0x280000000000001E (NPXS10010 - Videos)


<source lang="C">
<source lang="C">int sceSblACMgrIsAllowCacheForKernel(SceUID pid);</source>
int unk_4C4B7D6B(SceUID pid);
</source>


=== sceSblACMgrIsNonGameOrGameProgramForDriver ===
=== sceSblACMgrIsNonGameOrGameProgramForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x570D6AD3
| 3.60 || 0x570D6AD3
|}
|}


Line 448: Line 610:
or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.
or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.


<source lang="C">
<source lang="C">int sceSblACMgrIsNonGameOrGameProgramForDriver(SceUID pid);</source>
int sceSblACMgrIsNonGameOrGameProgramForDriver(SceUID pid);
</source>


=== sceSblACMgrIsFselfForKernel ===
=== sceSblACMgrIsFselfForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x5AC59172
| 3.60 || 0x5AC59172
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id begins with 0x2F (SDK fSELF).
Returns true if program_authority_id begins with 0x2F (fSELF).


<source lang="C">
<source lang="C">int sceSblACMgrIsFselfForKernel(SceUID pid);</source>
int sceSblACMgrIsFselfForKernel(SceUID pid);
</source>


=== unk_5E6BA11C ===
=== sceSblACMgrHasSystemDataFileFlagForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x5E6BA11C
| 3.60 || 0x5E6BA11C
|}
|}


<source lang="C">
return sceSblACMgrHasCapabilityForDriver(pid, 135);
 
int unk_5E6BA11C(SceUID pid);


</source>
<source lang="C">int sceSblACMgrHasSystemDataFileFlagForKernel(SceUID pid);</source>


=== unk_7529E364 ===
=== SceSblACMgrForKernel_7529E364 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x7529E364
| 3.60 || 0x7529E364
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
Returns true if [[SceSblACMgr#sceSblACMgrIsGameProgramForDriver|sceSblACMgrIsGameProgramForDriver]] returns true


int unk_7529E364(SceUID pid);
or if [[SceSblACMgr#sceSblACMgrIsAllowMsMountForDriver|sceSblACMgrIsAllowMsMountForDriver]] returns true.


</source>
<source lang="C">int SceSblACMgrForKernel_7529E364(SceUID pid);</source>


=== unk_75AAF981 ===
=== sceSblACMgrGetPaidForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x75AAF981
| 0.931 || not present
|-
| 3.60 || 0x7C2AF978
|}
|}


<source lang="C">
Temp name was sceSblACMgrGetProcessProgramAuthIdForKernel, sceSblACMgrGetSelfAuthInfoForKernel, sceSblACMgrGetProcessSelfAuthInfoForKernel.
 
int unk_75AAF981(SceUID pid, void* a2, int a3);


</source>
<source lang="C">int sceSblACMgrGetPaidForKernel(SceUID pid, SceUInt64 *pPaid);</source>


=== sceSblACMgrGetSelfAuthInfoForKernel ===
=== SceSblACMgrForKernel_7F294A09 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x7C2AF978
| 3.60 || 0x7F294A09
|}
|}


Wrapper to [[SceSysmem#sceSysrootGetSelfInfoForKernel|sceSysrootGetSelfInfoForKernel]].
Uses [[SceSysmem#sceKernelSysrootGetProcessSelfAuthInfoForKernel|sceKernelSysrootGetProcessSelfAuthInfoForKernel]].


<source lang="C">
attribute + 0x10
int sceSblACMgrGetSelfAuthInfoForKernel(SceUID pid, SceSelfInfo* self_auth_info);
 
</source>
Uses [[SceSysmem#SceKernelCheckDipswForDriver|SceKernelCheckDipswForDriver]](159); // is development mode
 
<source lang="C">int SceSblACMgrForKernel_7F294A09(SceUID pid, char *maybe_path);</source>


=== unk_7F294A09 ===
=== SceSblACMgrForKernel_8241AB5C ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x7F294A09
| 3.60 || 0x8241AB5C
|}
|}


<source lang="C">
<source lang="C">int SceSblACMgrForKernel_8241AB5C(SceUID pid, int a2);</source>
 
int unk_7F294A09(SceUID pid, char *maybe_path);


</source>
=== sceSblACMgrIsSystemProgramForKernel ===
 
=== unk_8241AB5C ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x8241AB5C
| 0.931.010-3.740.011 || 0x930CD037
|}
|}


<source lang="C">
Temp name was sceSblACMgrIsShellForKernel.


int unk_8241AB5C(SceUID pid, int a2);
Used by "scePfsACConvertModeForRedirect".
 
</source>
 
=== sceSblACMgrIsShellForKernel ===
{| class="wikitable"
|-
! Version !! World !! NID
|-
| 3.60 || non-secure || 0x930CD037
|}


return sceSblACMgrHasCapabilityForDriver(pid, 1);
return sceSblACMgrHasCapabilityForDriver(pid, 1);


<source lang="C">
<source lang="C">int sceSblACMgrIsSystemProgramForKernel(SceUID pid);</source>
int sceSblACMgrIsShellForKernel(SceUID pid);
</source>


=== sceSblACMgrIsAllowedVirtualMachineForKernel ===
=== sceSblACMgrIsAllowVirtualMachineForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x96403142
| 3.60 || 0x96403142
|}
|}


If sceSblACMgrHasCapabilityForDriver(pid, 132) (--> XX XX XX XX  XX XX XX XX  X8) returns true
This is a guessed name.
 
If sceSblACMgrHasCapabilityForDriver(pid, 132) returns true


-> returns true
-> returns true
Line 582: Line 728:
-> returns SceSysrootForDriver_26AA237C(1);
-> returns SceSysrootForDriver_26AA237C(1);


<source lang="C">
<source lang="C">int sceSblACMgrIsAllowVirtualMachineForKernel(SceUID pid);</source>
int sceSblACMgrIsAllowedVirtualMachineForKernel(SceUID pid);
</source>


=== sceSblACMgrIsPSMRuntimeForKernel ===
=== sceSblACMgrIsPSMRuntimeForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x966B3738
| 3.60 || 0x966B3738
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))
Returns true if program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))


or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)
or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)


<source lang="C">
<source lang="C">int sceSblACMgrIsPSMRuntimeForKernel(SceUID pid);</source>
int sceSblACMgrIsPSMRuntimeForKernel(SceUID pid);
</source>


=== sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel ===
=== sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x98B28671
| 3.60 || 0x98B28671
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name.


Returns true if self_auth_info->program_authority_id first 8 bytes equals 0x28008000
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
Returns true if program_authority_id first 8 bytes equals 0x28008000


(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self
(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self
Line 620: Line 764:
OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).
OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).


<source lang="C">
<source lang="C">int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel(SceUID pid);</source>
int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel(SceUID pid);
</source>


=== sceSblACMgrHasCapabilityForKernel ===
=== sceSblACMgrHasCapabilityForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x9EDAF856
| 3.60 || 0x9EDAF856
|}
|}


<source lang="C">
<source lang="C">int sceSblACMgrHasCapabilityForKernel(SceUID pid, int bit);</source>
 
int sceSblACMgrHasCapabilityForKernel(SceUID pid, int bit);
 
</source>


=== sceSblACMgrIsWebCoreOrWebKitProcessForKernel ===
=== sceSblACMgrIsWebCoreOrWebKitProcessForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xA7C3001D
| 3.60 || 0xA7C3001D
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name.
 
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)
Returns true if program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)


OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)
OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)


<source lang="C">
<source lang="C">int sceSblACMgrIsWebCoreOrWebKitProcessForKernel(SceUID pid);</source>
int sceSblACMgrIsWebCoreOrWebKitProcessForKernel(SceUID pid);
</source>


=== sceSblACMgrIsMiniSettingsForQAForKernel ===
=== sceSblACMgrIsAllowUdcdForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xAF6F208E
| 3.60 || 0xAF6F208E
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsMiniSettingsForQAForKernel.


Returns true if self_auth_info->program_authority_id equals 0x2800000000000010 (NPXS10104 - Mini Settings for QA)
Equivalent of [[#sceSblACMgrIsAllowUdcdForDriver]].


or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.
<source lang="C">SceBool sceSblACMgrIsAllowUdcdForKernel(SceUID pid);</source>
 
<source lang="C">
int sceSblACMgrIsMiniSettingsForQAForKernel(SceUID pid);
</source>


=== unk_A50FDA27 ===
=== SceSblACMgrForKernel_A50FDA27 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xA50FDA27
| 3.60 || 0xA50FDA27
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


int unk_A50FDA27(SceUID pid);
-> returns self_auth_info.attribute bit flag number 16 from left (---> XX XX 8X)


</source>
<source lang="C">int SceSblACMgrForKernel_A50FDA27(SceUID pid);</source>


=== sceSblACMgrIsDevelopmentModeForKernel ===
=== sceSblACMgrIsDevelopmentModeForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xBBA13D9C
| 0.931-3.60 || 0xBBA13D9C
|}
|}


Returns [[SceKernelThreadMgr#sceKernelCheckDipswForDriver|sceKernelCheckDipswForDriver]](159, a1, a2);
Returns [[SceKernelThreadMgr#sceKernelCheckDipswForDriver|sceKernelCheckDipswForDriver]](159);


<source lang="C">
<source lang="C">int sceSblACMgrIsDevelopmentModeForKernel(void);</source>
int sceSblACMgrIsDevelopmentModeForKernel(int a1, int a2);
</source>


=== sceSblACMgrIsPSMDevAssistantForKernel ===
=== sceSblACMgrIsPSMDevAssistantForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xC90A9216
| 3.60 || 0xC90A9216
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Equivalent of sceSblACMgrIsPSMDevAssistantForDriver.
 
Returns true if self_auth_info->program_authority_id equals 0x210000101CD20007 (PCSI00007 - PlayStation®Mobile Development Assistant)
 
or returns SceSysrootForDriver_26AA237C(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


<source lang="C">
<source lang="C">int sceSblACMgrIsPSMDevAssistantForKernel(SceUID pid);</source>
int sceSblACMgrIsPSMDevAssistantForKernel(SceUID pid);
</source>


=== unk_CCDBB74D ===
=== sceSblACMgrGetMediaTypeForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xCCDBB74D
| 0.931-3.60 || 0xD442962E
|}
|}


<source lang="C">
Temp name was sceSblACMgrGetPathIdForKernel.


int unk_CCDBB74D(SceUID pid, void* a2, void *a3);
<source lang="C">int sceSblACMgrGetMediaTypeForKernel(const char *path, SceUInt32 *pMediaType);</source>


</source>
=== sceSblACMgrIsAllowUsbSerialForKernel ===
 
=== sceSblACMgrGetPathIdForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xD442962E
| 3.60 || 0xDC49E160
|}
|}


<source lang="C">
returns true if sceSblACMgrHasCapabilityForDriver(pid, 1) returns true
 
AND sceSblACMgrHasCapabilityForDriver(pid, 131) returns true
 
or returns SceSysrootForDriver_26AA237C(1); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


int sceSblACMgrGetPathIdForKernel(const char *path, int* pathId);
<source lang="C">int sceSblACMgrIsAllowUsbSerialForKernel(SceUID pid);</source>
</source>


=== unk_DC49E160 ===
=== sceSblACMgrIsPsNowClientForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xDC49E160
| 3.60 || 0xE273ED8C
|}
|}


<source lang="C">
Equivalent of sceSblACMgrIsPsNowClientForDriver.


int unk_DC49E160(SceUID pid);
<source lang="C">int sceSblACMgrIsPsNowClientForKernel(SceUID pid);</source>


</source>
=== sceSblACMgrIsAllowMsMountForKernel ===
 
=== unk_E273ED8C ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xE273ED8C
| 3.60 || 0xF5AD56E4
|}
|}


<source lang="C">
Temp name was sceSblACMgrIsNotSandboxedForKernel.


int unk_E273ED8C(SceUID pid);
Equivalent of sceSblACMgrIsAllowMsMountForDriver.


</source>
<source lang="C">SceBool sceSblACMgrIsAllowMsMountForKernel(SceUID pid);</source>


=== sceSblACMgrIsNotSandboxedForKernel ===
=== sceSblACMgrIsSceShellForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xF5AD56E4
| 3.60 || 0xF9FEF5F0
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


int sceSblACMgrIsNotSandboxedForKernel(SceUID pid);
Returns true if program_authority_id equals 0x2800000000000001 (NPXS19999 - SceShell)


</source>
<source lang="C">int sceSblACMgrIsSceShellForKernel(SceUID pid);</source>


=== unk_F9FEF5F0 ===
=== SceSblACMgrForKernel_FBA1A256 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xF9FEF5F0
| 0.931-3.60 || 0xFBA1A256
|}
|}


<source lang="C">
Returns 0. Probably used in very old firmwares and patched in new firmwares by making it return always false.


int unk_F9FEF5F0(SceUID pid);
<source lang="C">SceBool SceSblACMgrForKernel_FBA1A256(void);</source>


</source>
=== SceSblACMgrForKernel_FB2AC5B4 ===
 
=== unk_FBA1A256 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xFBA1A256
| 3.60 || 0xFB2AC5B4
|}
|}


returns 0
<source lang="C">int SceSblACMgrForKernel_FB2AC5B4(SceUID pid, char *maybe_path);</source>
 
<source lang="C">
 
int unk_FBA1A256();
 
</source>


=== unk_FB2AC5B4 ===
=== SceSblACMgrForKernel_356B9139 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xFB2AC5B4
| 0.931-3.60 || 0x356B9139
|}
|}


<source lang="C">
Equivalent of SceSblACMgrForKernel_FF7125DE.


int unk_FB2AC5B4(SceUID pid, char *maybe_path);
<source lang="C">int SceSblACMgrForKernel_356B9139(int unused, const char *path, int *a3);</source>
 
</source>


== SceSblACMgrForDriver ==
== SceSblACMgrForDriver ==
Line 838: Line 953:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0139FC20
| 3.60 || 0x0139FC20
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name.
 
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)
Returns true if program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)


OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)
OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)


<source lang="C">
<source lang="C">int sceSblACMgrIsWebCoreOrWebKitProcessForDriver(SceUID pid);</source>
int sceSblACMgrIsWebCoreOrWebKitProcessForDriver(SceUID pid);
</source>


=== unk_0606B87E ===
=== sceSblACMgrIsAllowUsbSerialForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0606B87E
| 3.60 || 0x062CAEB2
|}
|}


<source lang="C">
returns true if sceSblACMgrHasCapabilityForDriver(pid, 1) returns true


int unk_0606B87E(int a1, int a2, int *a3);
AND sceSblACMgrHasCapabilityForDriver(pid, 131) returns true


</source>
or returns SceSysrootForDriver_26AA237C(1); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


=== unk_062CAEB2 ===
<source lang="C">int sceSblACMgrIsAllowUsbSerialForDriver(SceUID pid);</source>
{| class="wikitable"
|-
! Version !! World !! NID
|-
| 3.60 || non-secure || 0x062CAEB2
|}
 
<source lang="C">
 
int unk_062CAEB2(SceUID pid);
 
</source>


=== sceSblACMgrIsPSMRuntimeForDriver ===
=== sceSblACMgrIsPSMRuntimeForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x091F7247
| 3.60 || 0x091F7247
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))
Returns true if program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))


or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)
or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)


<source lang="C">
<source lang="C">int sceSblACMgrIsPSMRuntimeForDriver(SceUID pid);</source>
int sceSblACMgrIsPSMRuntimeForDriver(SceUID pid);
</source>


=== unk_0924896F ===
=== sceSblACMgrIsPsNowClientForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0924896F
| 3.60 || 0x0924896F
|}
|}


<source lang="C">
Derived from [[SceAppMgr#sceAppMgrIsPsNowClient|sceAppMgrIsPsNowClient]].
 
int unk_0924896F(SceUID pid);


</source>
<source lang="C">int sceSblACMgrIsPsNowClientForDriver(SceUID pid);</source>


=== sceSblACMgrIsSystemForDriver ===
=== sceSblACMgrIsKernelProgramForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0948F41C
| 3.60 || 0x0948F41C
|}
|}
Temp name was sceSblACMgrIsSystemForDriver, sceSblACMgrIsRootProgramForDriver.
Equivalent of [[#sceSblACMgrIsKernelProgramForKernel]].


return sceSblACMgrHasCapabilityForDriver(pid, 0);
return sceSblACMgrHasCapabilityForDriver(pid, 0);


<source lang="C">
<source lang="C">int sceSblACMgrIsKernelProgramForDriver(SceUID pid);</source>
int sceSblACMgrIsSystemForDriver(SceUID pid);
</source>


=== sceSblACMgrIsNotSandboxedForDriver ===
=== sceSblACMgrIsAllowMsMountForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x0B6E6CD7
| 3.60 || 0x0B6E6CD7
|}
|}


<source lang="C">
Temp name was sceSblACMgrIsNotSandboxedForDriver.
 
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
Returns true if program_authority_id equals :
 
0x2800000000000013 (NPXS100028 - ScePspEmu)
 
OR 0x2800000000007009 (NPXS10069 - ScePspEmu old/testkit)
 
OR 0x2800000000000010 (NPXS10104 - Mini Settings For QA)
 
OR 0x280000000000002D (NPXS10026 - CMA)
 
OR 0x2800000000000022 (NPXS10027 - SceGameManual)
 
OR 0x2800000000000039 (NPXS10079 - Daily Checker BG)


int sceSblACMgrIsNotSandboxedForDriver(SceUID pid);
OR 0x2800000000000001 (NPXS19999 - SceShell)


</source>
<source lang="C">SceBool sceSblACMgrIsAllowMsMountForDriver(SceUID pid);</source>


=== sceSblACMgrIsGameProgramForDriver ===
=== sceSblACMgrIsGameProgramForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x1298C647
| 3.60 || 0x1298C647
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Derived from [[SceAppMgr#sceAppMgrIsGameProgram|sceAppMgrIsGameProgram]].


Returns true if self_auth_info->program_authority_id begins with 0x21 (NPDRM game) or 0x2F (SDK fSELF).
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


<source lang="C">
Returns true if program_authority_id begins with 0x21 (game) or 0x2F (fSELF).
int sceSblACMgrIsGameProgramForDriver(SceUID pid);
 
</source>
<source lang="C">int sceSblACMgrIsGameProgramForDriver(SceUID pid);</source>


=== sceSblACMgrIsAllowedVirtualMachineForDriver ===
=== sceSblACMgrIsAllowVirtualMachineForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x2A29453C
| 3.60 || 0x2A29453C
|}
|}


If sceSblACMgrHasCapabilityForDriver(pid, 132) (--> XX XX XX XX  XX XX XX XX  X8) returns true
This is a guessed name.
 
If sceSblACMgrHasCapabilityForDriver(pid, 132) returns true


-> returns true
-> returns true
Line 973: Line 1,092:
-> returns SceSysrootForDriver_26AA237C(1);
-> returns SceSysrootForDriver_26AA237C(1);


<source lang="C">
<source lang="C">int sceSblACMgrIsAllowVirtualMachineForDriver(SceUID pid);</source>
int sceSblACMgrIsAllowedVirtualMachineForDriver(SceUID pid);
 
</source>
=== SceSblACMgrForDriver_2E992B02 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x2E992B02
|}
 
<source lang="C">int SceSblACMgrForDriver_2E992B02(SceUID pid);</source>


=== unk_2E992B02 ===
=== sceSblACMgrIsFselfForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x2E992B02
| 3.60 || 0x426A4E8C
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


int unk_2E992B02(SceUID pid);
Returns true if program_authority_id begins with 0x2F (fSELF).


</source>
<source lang="C">int sceSblACMgrIsFselfForDriver(SceUID pid);</source>


=== unk_3B356B98 ===
=== sceSblACMgrGetMediaTypeForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x3B356B98
| 0.931-3.60 || 0x4322F188
|}
|}


<source lang="C">
<source lang="C">int sceSblACMgrGetMediaTypeForDriver(const char *path, int *pMediaType);</source>


int unk_3B356B98(void* a1, void* a2);
=== sceSblACMgrIsAllowCacheForDriver ===
 
</source>
 
=== sceSblACMgrIsFselfForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x426A4E8C
| 3.60 || 0x456DA7AC
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id begins with 0x2F (SDK fSELF).
Returns true:
* if [[SceSblACMgr#sceSblACMgrHasCapabilityForDriver|sceSblACMgrHasCapabilityForDriver]](pid, 3); returns true
* or if program_authority_id is between 0x0x210000101CD20007 and 0x0x21000010‭1CD20009‬ (PSM Dev Assistant apps)
* or if fSELF and SceSysrootForDriver_26AA237C returns true


<source lang="C">
<source lang="C">SceBool sceSblACMgrIsAllowCacheForDriver(SceUID pid);</source>
int sceSblACMgrIsFselfForDriver(SceUID pid);
</source>


=== sceSblACMgrGetPathIdForDriver ===
=== SceSblACMgrForDriver_48CFCEA2 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x4322F188
| 3.60 || 0x48CFCEA2
|}
|}
<source lang="C">


int sceSblACMgrGetPathIdForDriver(const char *path, int* pathId);
<source lang="C">int SceSblACMgrForDriver_48CFCEA2(SceUID pid, int *a2, int *a3, int flags);</source>


</source>
=== sceSblACMgrIsAllowProcessDebugForDriver ===
 
=== unk_456DA7AC ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x456DA7AC
| 3.60 || 0x4CBD6156
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name. Temp name was sceSblACMgrIsAllowCoredumpForDriver.


Returns true if [[SceSblACMgr#sceSblACMgrHasCapabilityForDriver|sceSblACMgrHasCapabilityForDriver]](pid, 3); returns true
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


or if self_auth_info->program_authority_id 8 last bytes equals 0x1CD20010 or is lower (SIE apps)
Returns true:
* if program_authority_id first 8 bytes equals 0x28000000 AND sceSblQafMgrIsAllowSystemAppDebugForDriver returns false
* if self_auth_info.attribute flag 16 is set
* if program_authority_id first 8 bytes equals 0x22000000 or 0x21000000 AND SceSysrootForDriver_56D85EB0 returns true AND SceQafMgrForDriver_694D1096 returns true


or 0x2800000000000044 (NPXS10085 - Videos) or 0x280000000000001E (NPXS10010 - Videos)
<source lang="C">int sceSblACMgrIsAllowProcessDebugForDriver(SceUID pid);</source>
 
<source lang="C">
int unk_456DA7AC(SceUID pid);
</source>


=== unk_48CFCEA2 ===
=== SceSblACMgrForDriver_84604EED ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x48CFCEA2
| 0.931-3.60 || 0x84604EED
|}
|}


<source lang="C">
return sceSblACMgrHasCapabilityForDriver(pid, 31);


int unk_48CFCEA2(SceUID pid, int *a2, int *a3, int flags);
<source lang="C">SceBool SceSblACMgrForDriver_84604EED(SceUID pid);</source>


</source>
=== sceSblACMgrIsAllowLoopBackMountForDriver ===
 
=== unk_4CBD6156 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x4CBD6156
| 3.60 || 0x4DB7F512
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsAllowExtendedMemoryForDriver.


If self_auth_info->program_authority_id first 8 bytes equals 0x28000000
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


AND sceSblQafMgrIsAllowSystemAppDebugForDriver returns false
Returns true if program_authority_id equals 0x280000000000001E (NPXS10010 - Videos) or 0x2800000000000010 (NPXS10104 - Mini Settings for QA) or 0x2800000000000031 (NPXS10036 - AVMediaService) or 0x220000101CC73883 (a certain nongame program???)


-> returns a bit flag (?number 16?) : ((signed int)(unsigned __int8)*(self_auth_info + (16 >> 3) - 104) >> (~(_BYTE)16 & 7)) & 1;
or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.


Else, if self_auth_info->program_authority_id first 8 bytes equals 0x22000000 or 0x21000000
<source lang="C">SceBool sceSblACMgrIsAllowLoopBackMountForDriver(SceUID pid);</source>


AND SceSysrootForDriver_56D85EB0 returns true
=== sceSblACMgrIsUnityRuntimeForPSMForDriver ===
 
{| class="wikitable"
AND SceQafMgrForDriver_694D1096 returns true
|-
 
! Version !! NID
-> returns 1
|-
 
| 3.60 || 0x5C4BC352
Else,
|}


-> returns a bit flag (?number 16?) : ((signed int)(unsigned __int8)*(self_auth_info + (16 >> 3) - 104) >> (~(_BYTE)16 & 7)) & 1;
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


<source lang="C">int sceSblACMgrIsUnityRuntimeForPSMForDriver(SceUID pid);</source>


<source lang="C">
=== SceSblACMgrForDriver_5F9AF49C ===
int unk_4CBD6156(SceUID pid);
</source>
 
=== sceSblACMgrIsAllowedExtendedMemoryForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x4DB7F512
| 3.60 || 0x5F9AF49C
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
might sceSblACMgrIsMediaAccessibleProgram.
 
[[SceAppMgr]] will pass some drive list to this function and if it returns SCE_FALSE, it will add invalid overlay for that drive.


Returns true if self_auth_info->program_authority_id equals 0x280000000000001E (NPXS10010 - Videos) or 0x2800000000000010 (NPXS10104 - Mini Settings for QA) or 0x2800000000000031 (NPXS10036 - AVMediaService)
Checks if program_authority_id begins with 0x21 (game) or with 0x2F (fSELF) and does different things accordingly.


or if sceSblACMgrHasCapabilityForDriver(pid, 130) (--> XX XX XX XX  XX XX XX XX  2X) returns true.
Calls sceKernelCheckDipswForDriver(159) and does different things according to the result.


<source lang="C">
<source lang="C">int SceSblACMgrForDriver_5F9AF49C(SceUID pid, const char *drive);</source>
int sceSblACMgrIsAllowedExtendedMemoryForDriver(SceUID pid);
</source>


=== unk_5C4BC352 ===
=== SceSblACMgrForDriver_3B356B98 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x5C4BC352
| 0.931-3.60 || 0x3B356B98
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Maybe sceSblACMgrGetFSAttributeByModeForDriver.


?Returns true if sceSblACMgrIsSIEAppForDriver returns true.?
Same as [[#SceSblACMgrForKernel_11C9158B]].


<source lang="C">
<source lang="C">int SceSblACMgrForDriver_3B356B98(void* input, void* output);</source>
int unk_5C4BC352(SceUID pid);
</source>


=== unk_5F9AF49C ===
=== sceFatfsACSetFSAttributeByPermissionForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x5F9AF49C
| 3.60 || 0x6210D745
|}
|}


Checks if program_authority_id begins with 0x21 (NPDRM game) or with 0x2F (SDK fSELF) and does different things accordingly.
Temp name was sceSblACMgrSetFSAttributeByModeForDriver.


Calls sceKernelCheckDipswForDriver(159, a2, a3, a4) and does different things according to the result.
<source lang="C">int sceFatfsACSetFSAttributeByPermissionForDriver(SceUID pid, st_attr_info *a2, int flags);</source>
 
<source lang="C">
int unk_5F9AF49C(SceUID pid, char *unk_buf);
</source>


=== unk_6210D745 ===
=== sceSblACMgrGetFSAttributeByThreadAccessLevelForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x6210D745
| 0.931-3.60 || 0x0606B87E
|}
|}


<source lang="C">
<source lang="C">int sceSblACMgrGetFSAttributeByThreadAccessLevelForDriver(int a1, int a2, int *a3);</source>
 
int unk_6210D745(SceUID pid, void* a2, int flags);
 
</source>


=== sceSblACMgrIsNonGameProgramForDriver ===
=== sceSblACMgrIsNonGameProgramForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x6C5AB07F
| 3.60 || 0x6C5AB07F
|}
|}
Derived from [[SceAppMgr#sceAppMgrIsNonGameProgram|sceAppMgrIsNonGameProgram]].


return sceSblACMgrHasCapabilityForDriver(pid, 3);
return sceSblACMgrHasCapabilityForDriver(pid, 3);


<source lang="C">
<source lang="C">int sceSblACMgrIsNonGameProgramForDriver(SceUID pid);</source>
int sceSblACMgrIsNonGameProgramForDriver(SceUID pid);
</source>


=== unk_6D8A88B7 ===
=== SceSblACMgrForDriver_6D8A88B7 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x6D8A88B7
| 3.60 || 0x6D8A88B7
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
Returns true if [[SceSblACMgr#sceSblACMgrIsGameProgramForDriver|sceSblACMgrIsGameProgramForDriver]] returns true


int unk_6D8A88B7(SceUID pid);
or if [[SceSblACMgr#sceSblACMgrIsAllowMsMountForDriver|sceSblACMgrIsAllowMsMountForDriver]] returns true.


</source>
<source lang="C">int SceSblACMgrForDriver_6D8A88B7(SceUID pid);</source>


=== unk_84604EED ===
=== sceSblACMgrIsSystemProgramForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x84604EED
| 0.931-3.60 || 0x8612B243
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 31);
Temp name was sceSblACMgrIsShellForDriver.
 
<source lang="C">
int unk_84604EED(SceUID pid);
</source>
 
=== sceSblACMgrIsShellForDriver ===
{| class="wikitable"
|-
! Version !! World !! NID
|-
| 3.60 || non-secure || 0x8612B243
|}


return sceSblACMgrHasCapabilityForDriver(pid, 1);
return sceSblACMgrHasCapabilityForDriver(pid, 1);


<source lang="C">
<source lang="C">int sceSblACMgrIsSystemProgramForDriver(SceUID pid);</source>
int sceSblACMgrIsShellForDriver(SceUID pid);
</source>


=== sceSblACMgrIsNonGameOrGameProgramForKernel ===
=== sceSblACMgrIsNonGameOrGameProgramForKernel ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x8A54DF3A
| 3.60 || 0x8A54DF3A
|}
|}


Line 1,233: Line 1,326:
or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.
or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.


<source lang="C">
<source lang="C">int sceSblACMgrIsNonGameOrGameProgramForKernel(SceUID pid);</source>
int sceSblACMgrIsNonGameOrGameProgramForKernel(SceUID pid);
</source>


=== sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver ===
=== sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x962CD237
| 3.60 || 0x962CD237
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
This is a guessed name.
 
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id first 8 bytes equals 0x28008000
Returns true if program_authority_id first 8 bytes equals 0x28008000


(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self
(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self
Line 1,253: Line 1,346:
OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).
OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).


<source lang="C">
<source lang="C">int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver(SceUID pid);</source>
int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver(SceUID pid);
</source>


=== sceSblACMgrGetSelfAuthInfoForDriver ===
=== sceSblACMgrGetPaidForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x96AF69BD
| 0.931 || not present
|-
| 3.60 || 0x96AF69BD
|}
|}


Wrapper to [[SceSysmem#sceSysrootGetSelfInfoForKernel|sceSysrootGetSelfInfoForKernel]].
Temp name was sceSblACMgrGetProcessProgramAuthIdForDriver, sceSblACMgrGetSelfAuthInfoForDriver, sceSblACMgrGetProcessSelfAuthInfoForDriver.


<source lang="C">
<source lang="C">int sceSblACMgrGetPaidForDriver(SceUID pid, SceUInt64 *pPaid);</source>
int sceSblACMgrGetSelfAuthInfoForDriver(SceUID pid, SceSelfInfo* self_auth_info);
</source>


=== unk_991FDC15 ===
=== sceSblACMgrIsSceShellForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0x991FDC15
| 3.60 || 0x991FDC15
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


int unk_991FDC15(SceUID pid);
Returns true if program_authority_id equals 0x2800000000000001 (NPXS19999 - SceShell)


</source>
<source lang="C">int sceSblACMgrIsSceShellForDriver(SceUID pid);</source>


=== unk_A27E47A7 ===
=== sceSblACMgrHasMagicGateFlagForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xA27E47A7
| 3.60 || 0xA27E47A7
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 129);
return sceSblACMgrHasCapabilityForDriver(pid, 129);


<source lang="C">
<source lang="C">int sceSblACMgrHasMagicGateFlagForDriver(SceUID pid);</source>
int unk_A27E47A7(SceUID pid);
</source>


=== sceSblACMgrIsSIEAppForDriver ===
=== sceSblACMgrIsPSMDevAssistantForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xA67E8E5B
| 3.60 || 0xA67E8E5B
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsSIEAppForDriver.
 
Returns true if self_auth_info->program_authority_id first 8 bytes equals ?0x28000000 or 0x22000000 or 0x21000000?


and if self_auth_info->program_authority_id last 8 bytes equals 0x1CD20010 or is lower.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


See [[https://vitadevwiki.com/vita/AuthorityId#SIE_apps]]
Returns true if program_authority_id is between 0x210000101CD20007 and 0x210000101CD20009 (PSM Dev Assistant apps).


<source lang="C">
<source lang="C">int sceSblACMgrIsPSMDevAssistantForDriver(SceUID pid);</source>
int sceSblACMgrIsSIEAppForDriver(SceUID pid);
</source>


=== unk_A92CD636 ===
=== sceSblACMgrHasSystemDataFileFlagForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xA92CD636
| 3.60 || 0xA92CD636
|}
|}


<source lang="C">
return sceSblACMgrHasCapabilityForDriver(pid, 135);


int unk_A92CD636(SceUID pid);
<source lang="C">int sceSblACMgrHasSystemDataFileFlagForDriver(SceUID pid);</source>


</source>
=== sceSblACMgrHasUserDebugFlagForDriver ===
 
=== unk_AD717E7A ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xAD717E7A
| 3.60 || 0xAD717E7A
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 32);
This is a guessed name.


<source lang="C">
Used by [[SceDeci4pLoadp]], [[SceDeci4pDbgp]]


int unk_AD717E7A(SceUID pid);
return sceSblACMgrHasCapabilityForDriver(pid, 32);


</source>
<source lang="C">int sceSblACMgrHasUserDebugFlagForDriver(SceUID pid);</source>


=== unk_AE1AF154 ===
=== sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xAE1AF154
| 3.60 || 0xAE1AF154
|}
|}


returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true (--> XX XX XX XX  XX XX XX XX  X2),
returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true


or returns SceSysrootForDriver_E2515A08(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.
or returns SceSysrootForDriver_E2515A08(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


<source lang="C">
<source lang="C">int sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver(SceUID pid);</source>
int unk_AE1AF154(SceUID pid);
</source>


=== unk_B12CEAA8 ===
=== SceSblACMgrForDriver_B12CEAA8 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xB12CEAA8
| 3.60 || 0xB12CEAA8
|}
|}


<source lang="C">
Seems to check some bit flags.


int unk_B12CEAA8(SceUID pid, void* a2, void *a3);
Used by SceExfatfs in VFS implementation functions: sceVfsNodeChstatForDriver and sceVfsNodeChstatByFdForDriver


</source>
<source lang="C">int SceSblACMgrForDriver_B12CEAA8(SceUID pid, st_attr_info *a1, st_attr_info *a2);</source>


=== unk_B836CF13 ===
=== SceSblACMgrForDriver_B836CF13 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xB836CF13
| 3.60 || 0xB836CF13
|}
|}


<source lang="C">
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


int unk_B836CF13(SceUID pid);
-> returns self_auth_info.attribute bit flag number 16 from left (---> XX XX 8X)


</source>
<source lang="C">int SceSblACMgrForDriver_B836CF13(SceUID pid);</source>


=== unk_BE5667C5 ===
=== SceSblACMgrForDriver_BE5667C5 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xBE5667C5
| 0.931-3.60 || 0xBE5667C5
|}
|}


<source lang="C">
<source lang="C">int SceSblACMgrForDriver_BE5667C5(SceUID pid, st_attr_info *a2, int a3);</source>
 
int unk_BE5667C5(SceUID pid, void* a2, int a3);
 
</source>


=== sceSblACMgrHasCapabilityForDriver ===
=== sceSblACMgrHasCapabilityForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xC2D1F2FC
| 3.60 || 0xC2D1F2FC
|}
|}


<source lang="C">
<source lang="C">int sceSblACMgrHasCapabilityForDriver(SceUID pid, int bit);</source>
 
int sceSblACMgrHasCapabilityForDriver(SceUID pid, int a2);
 
</source>


=== sceSblACMgrIsPSMDevAssistantForDriver ===
=== sceSblACMgrIsPSMDevAssistantForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xC98D82EE
| 3.60 || 0xC98D82EE
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x210000101CD20007 (PCSI00007 - PlayStation®Mobile Development Assistant)
Returns true if program_authority_id equals 0x210000101CD20007 (PCSI00007 - PlayStation®Mobile Development Assistant)
 
AND [[SceSblACMgr#sceSblACMgrIsPSMRuntimeForDriver|sceSblACMgrIsPSMRuntimeForDriver]] returns true.


or returns SceSysrootForDriver_26AA237C(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.
or returns SceSysrootForDriver_26AA237C(void); if [[SceSblACMgr#sceSblACMgrIsFselfForDriver|sceSblACMgrIsFselfForDriver]] returns true.


<source lang="C">
<source lang="C">int sceSblACMgrIsPSMDevAssistantForDriver(SceUID pid);</source>
int sceSblACMgrIsPSMDevAssistantForDriver(SceUID pid);
</source>


=== sceSblACMgrIsMiniSettingsForQAForDriver ===
=== sceSblACMgrIsAllowUdcdForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xD0E11C89
| 3.60 || 0xD0E11C89
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Temp name was sceSblACMgrIsMiniSettingsForQAForDriver.


Returns true if self_auth_info->program_authority_id equals 0x2800000000000010 (NPXS10104 - Mini Settings for QA)
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.
 
Returns true if program_authority_id equals 0x2800000000000010 (NPXS10104 - Mini Settings for QA)
 
or if program_authority_id equals 0x220000101CC73883 (a certain nongame program???)


or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.
or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.


<source lang="C">
<source lang="C">SceBool sceSblACMgrIsAllowUdcdForDriver(SceUID pid);</source>
int sceSblACMgrIsMiniSettingsForQAForDriver(SceUID pid);
</source>


=== unk_D7AD8471 ===
=== SceSblACMgrForDriver_D7AD8471 ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xD7AD8471
| 3.60 || 0xD7AD8471
|}
|}


<source lang="C">
<source lang="C">int SceSblACMgrForDriver_D7AD8471(SceUID pid, char *maybe_path);</source>
 
int unk_D7AD8471(SceUID pid, char *maybe_path);
 
</source>


=== unk_E79C7A8D ===
=== SceSblACMgrForDriver_E79C7A8D ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xE79C7A8D
| 3.60 || 0xE79C7A8D
|}
|}


<source lang="C">
A guessed name is sceSblACMgrIsVs0UserDriveAccessibleProgramForDriver.


int unk_E79C7A8D(SceUID pid, char *maybe_path);
Same as [[#SceSblACMgrForKernel_165C3C7A]].


</source>
<source lang="C">SceBool SceSblACMgrForDriver_E79C7A8D(SceUID pid, const SceChar8 *path);</source>


=== sceSblACMgrIsDevelopmentModeForDriver ===
=== sceSblACMgrIsDevelopmentModeForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xE87D1777
| 0.931-3.60 || 0xE87D1777
|}
|}


Returns [[SceKernelThreadMgr#sceKernelCheckDipswForDriver|sceKernelCheckDipswForDriver]](159, a1, a2);
Derived from [[SceAppMgr#sceAppMgrIsDevelopmentMode|sceAppMgrIsDevelopmentMode]].
 
Returns [[SceKernelThreadMgr#sceKernelCheckDipswForDriver|sceKernelCheckDipswForDriver]](159);


<source lang="C">
<source lang="C">int sceSblACMgrIsDevelopmentModeForDriver(void);</source>
int sceSblACMgrIsDevelopmentModeForDriver(int a1, int a2);
</source>


=== unk_F5AE24AC ===
=== sceSblACMgrHasMarlinFlagForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xF5AE24AC
| 3.60 || 0xF5AE24AC
|}
|}


return sceSblACMgrHasCapabilityForDriver(pid, 128);
return sceSblACMgrHasCapabilityForDriver(pid, 128);


<source lang="C">
<source lang="C">int sceSblACMgrHasMarlinFlagForDriver(SceUID pid);</source>
int unk_F5AE24AC(SceUID pid);
</source>


=== sceSblACMgrIsPspEmuForDriver ===
=== sceSblACMgrIsPspEmuForDriver ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xFD00C72A
| 3.60 || 0xFD00C72A
|}
|}


Calls [[SceSblACMgr#sceSblACMgrGetSelfAuthInfoForDriver|sceSblACMgrGetSelfAuthInfoForDriver]] to get self_auth_info.
Calls [[SceSblACMgr#sceSblACMgrGetPaidForDriver|sceSblACMgrGetPaidForDriver]] to get program_authority_id.


Returns true if self_auth_info->program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).
Returns true if program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).


<source lang="C">
<source lang="C">int sceSblACMgrIsPspEmuForDriver(SceUID pid);</source>
int sceSblACMgrIsPspEmuForDriver(SceUID pid);
</source>


=== unk_FF7125DE ===
=== SceSblACMgrForDriver_FF7125DE ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 3.60 || non-secure || 0xFF7125DE
| 0.931-3.60 || 0xFF7125DE
|}
|}


<source lang="C">
Gets some info for path.


int unk_FF7125DE(int unused, char *maybe_path, int *a3);
<source lang="C">int SceSblACMgrForDriver_FF7125DE(int unused, const char *path, int *a3);</source>
 
</source>


== SceSblACMgr ==
== SceSblACMgr ==


=== _sceSblACMgrIsGameProgram ===
=== _sceSblACMgrIsGameProgram ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! World !! NID
! Version !! NID
|-
|-
| 1.69 || non-secure || 0x3C17A7F7
| 0.931.010-3.740.011 || 0x3C17A7F7
|-
| 3.60 || non-secure || 0x3C17A7F7
|}
|}


<source lang="C">
<source lang="C">int _sceSblACMgrIsGameProgram(int *result);</source>
 
int _sceSblACMgrIsGameProgram(int *result);
 
</source>


[[Category:ARM]]
[[Category:Kernel]]
[[Category:Modules]]
[[Category:Modules]]
[[Category:Kernel]]
[[Category:Library]]

Latest revision as of 16:12, 8 June 2024

Secure block Attribute-Capability Manager

Module

Version World Privilege
0.931.010-3.740.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.931.010-3.740.011 SceSblACMgrForKernel Non-secure Kernel 0x11F9B314
0.931.010-3.740.011 SceSblACMgrForDriver Non-secure Kernel 0x9AD8E213
0.931.010-3.740.011 SceSblACMgr Non-secure User 0xF069F219

Types

typedef struct st_attr_info_internal {
  SceUInt32 st_attr;
  int unk_0x04;
} st_attr_info_internal;

typedef struct st_attr_info {
  int index;                      // operation index
  st_attr_info_internal *st_attr;
  SceSize size;                   // 1 or 2 - size of st_attr
} st_attr_info;

Notes

Common functions

FW 3.60 SceSblACMgr_0x570: sceSblACMgrHasAttribute

Capability

Capability flags are stored on 0x20 bytes. Max bit number is 0xFF.

Bit Class Name Description
0 privilege root
1 privilege system
2 privilege game Set on fSELF type 1.
3 privilege nongame Set on fSELF type 2.
31 ? ? Used by #SceSblACMgrForKernel_84604EED.
32 ?debug level? ?process dbg? Bypass spawner privilege requirement and ignore shared secret.
33 ?debug level? ?limited user? Prohibits spawned attribute flag 17 at same time as self_type mask 0x20 and (genuine CEX or masked self_type != 0x10000). Error 0x800F0B35.
34 ?debug level? ?remap? VM function. Used by #SceSblACMgrForKernel_30575458 (SceSysmem#sceKernelSysrootCheckRemapCodeForUserForKernel).
35 ?debug level? ?
52-55 ? ? Set on fSELF type 1.
56-59 ? ? Set on fSELF type 2.
96-127 ? ? Always set (0xFFFFFFFF).
128 function marlin Used by #sceSblACMgrHasMarlinFlagForKernel, #sceSblACMgrHasMarlinFlagForDriver.
129 function magic_gate Used by #sceSblACMgrHasMagicGateFlagForKernel, #sceSblACMgrHasMagicGateFlagForDriver.
130 function udcd Allows LoopBack Mount, Allows Udcd.
131 function usb_serial
132 function virtual_machine
133 function force_open_msgpipe Used by #SceSblACMgrForKernel_8241AB5C (and SceKernelThreadMgr#sceKernelOpenMsgPipe).
134 function system_data_file_play_ready Used by #sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel, #sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver.
135 function system_data_file Used by #sceSblACMgrHasSystemDataFileFlagForDriver, #sceSblACMgrHasSystemDataFileFlagForDriver

Attribute

Attribute flags are stored on 0x20 bytes. Max bit number is 0xFF.

Bit Class Name Description
0 spawn_by system
1 spawn_by game
2 spawn_by nongame
16 ? coredump Triggers a coredump when app crashes. Prohibits self_type mask 0x10000. Error 0x800F0B35.
17 ? ? Prohibits spawner capability flag 33 at same time as self_type mask 0x20 and (genuine CEX or masked self_type != 0x10000). Error 0x800F0B35.
29 platform dex
30 platform test, tool Also supported by Diag.
31 platform cex Also supported by Diag.
32 mode production Requires production mode (Manufacturing mode).
33 mode no_production Prohibits production mode (Manufacturing mode). Set on fSELF type 1 and 2.
34 mode qa_0xD_mask_1 Requires QA flag 0xD mask 1.
35 mode no_qa_0xD_mask_1 Prohibits QA flag 0xD mask 1.
36 mode some boot flag Requires Second_Loader#Boot_type_indicator_for_slsk mask 0x20, but it seems this boot type is disabled in FW 3.60 release second_loader.
37 mode qa_0xF_mask_1 Requires QA flag 0xF mask 1.
48 "fself_related" ?
49 "fself_related" ?
50 "fself_related" ? Set on fSELF type 1.
51 "fself_related" ? Set on fSELF type 1.
52 "fself_related" ? Set on fSELF type 2.
53 "fself_related" ? Set on fSELF type 2.
54 "fself_related" ? Set on fSELF type 1 and 2.
55 "fself_related" ? Set on fSELF type 1 and 2.
64 media ? Media Type 9
65 media sd0 Set on fSELF type 1 and 2.
66 media host0 Set on fSELF type 1 and 2 only in Development Mode.
67 media ? Media Type 8
68 media ux0
69 media gro0:app Set on fSELF type 1 and 2 only in Release Mode.
70 media gro0:patch Set on fSELF type 1 and 2 only in Release Mode.
71 media sa0
72 media mfa0
73 media mfb0
74 media lma0
75 media lmb0
76 media lmc0
77 media lmd0
78 media pd0
79 media ? Maybe reserved or unused.
80 media ?boot0? ?slb2?
81 media os0
82 media vs0
83 media vd0
84 media tm0
85 media ur0
86 media ud0
87 media ?
88 media ?
89 media ux0:data
90 media memcard (ux0:app)
91 media memcard_patch (ux0:patch)
92-95 media ? Used by SceMagicGate.
96 level or self_type kernel
97 level or self_type usermode
98 level or self_type SM
128 ? qa_0xB_mask_0x10 On Test/Tool/Diag platform, it requires QA flag 0xB mask 0x10. Error 0x800F0B33.
129 ? ? Allows limited vs0 user drive access. Used by #SceSblACMgrForKernel_165C3C7A, #SceSblACMgrForDriver_E79C7A8D.
136-223 ? ? Never set?
224-255 ? ? Always set (0xFFFFFFFF).

Media Type

A code is passed in the SceSblSmCommContext130 context buffer to decrypt a SELF based on the path in which the SELF file must be located. This is a security feature to prevent SELFs that are designed to run from one path (for example os0:) from being copied and run from another path.

Path Media Type SELF Program Attribute Media Type Bit Number (0-255) Comment
ux0:user, ux0:/user 0 0xFFFFFFFF (invalid) Its bit number would read out of attribute (valid bits 0-255) so there is an early unsigned int check to avoid this Media Type in secure_kernel. It is so unlikely that this Media Type is embedded in SELF Program Attribute.
sd0 1 0x41
os0 2 0x51
vs0 3 0x52
vd0 4 0x53
tm0 5 0x54
ur0 6 0x55
host0 7 0x42 For usermode self_type, requires QA flag 0xD mask 2. For kernel or SM self_type, requires QA flag 0xE mask 1.
? 8 0x43 Present in FWs 0.931.010-3.740.011 Secure Kernel.
? 9 0x40 Present in FWs 0.931.010-3.740.011 Secure Kernel.
slb 10 0x50 like for kprx_auth_sm.self.

Also in external boot mode, the mediaType of self loaded by Kernel/User will be unconditionally set to this mediaType (10).

Only set when kbl_param->boot_type_indicator_1 has flag 0x40, which seems to never happen on external (release) FWs. It is used to load SM (usually from os0:) instead of using sd0: Media Type.

ud0 11 0x56
ux0 12 0x44
gro0:app, gro0:/app 13 0x45
gro0:patch, gro0:/patch 14 0x46
sa0 15 0x47
mfa0 16 0x48
mfb0 17 0x49
lma0 18 0x4A
lmb0 19 0x4B
lmc0 20 0x4C
lmd0 21 0x4D
pd0 22 0x4E
ux0:app, ux0:/app 23 0x5A
ux0:patch, ux0:/patch 24 0x5B
ux0:data, ux0:/data 25 0x59
? 26 ? Not present in FWs 0.931.010-3.740.011 Secure Kernel thus would return error 0x800F0B32. Certainly usable in non-secure kernel though.
uma0 27 ? Not present in FWs 0.931.010-3.740.011 Secure Kernel thus would return error 0x800F0B32. Usable in non-secure kernel though.
// Code inspired by PSVita FWs 0.931.010-3.740.011 secure_kernel
uint32_t check_media_type_in_attribute(uint8_t *pAttribute, uint32_t media_type) {
  if (0x18 < media_type - 1) // This unsigned int check inhibits Media Type 0 because it has an invalid bit number (-1)
    return 0x800f0b32;
  uint32_t ret = 0x800F0B32; // Bad Media Type
  uint32_t bit_no = index_table[media_type];
  uint8_t media_type_byte = *(uint8_t *)pAttribute[bit_no >> 3];
  uint8_t media_type_mask = 1 << (~bit_no & 7);
  if (media_type_byte & media_type_mask != 0)
    ret = 0;
  return ret;
}

SceSblACMgrForKernel

SceSblACMgrForKernel_F7524073

Version NID
0.931 0xF7524073
3.60 not present

Returns true if QA flag byte 9 mask 1 is set.

SceBool SceSblACMgrForKernel_F7524073(void);

sceSblACMgrHasMarlinFlagForKernel

Version NID
3.60 0x04C0ED3F

return sceSblACMgrHasCapabilityForDriver(pid, 128);

int sceSblACMgrHasMarlinFlagForKernel(SceUID pid);

sceSblACMgrHasMagicGateFlagForKernel

Version NID
3.60 0x02422F1F

return sceSblACMgrHasCapabilityForDriver(pid, 129);

int sceSblACMgrHasMagicGateFlagForKernel(SceUID pid);

sceSblACMgrIsGameProgramForKernel

Version NID
3.60 0x05FDC646

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id begins with 0x21 (game) or 0x2F (fSELF).

int sceSblACMgrIsGameProgramForKernel(SceUID pid);

sceSblACMgrIsUnityRuntimeForPSMForKernel

Version NID
3.60 0x06BE9F0F

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

int sceSblACMgrIsUnityRuntimeForPSMForKernel(SceUID pid);

sceSblACMgrHasUserDebugFlagForKernel

Version NID
3.60 0x0E489631

This is a guessed name.

return sceSblACMgrHasCapabilityForDriver(pid, 32);

int sceSblACMgrHasUserDebugFlagForKernel(SceUID pid);

SceSblACMgrForKernel_11C9158B

Version NID
0.931-3.60 0x11C9158B

A guessed name is sceSblACMgrGetFSAttributeByModeForKernel.

Same as #SceSblACMgrForDriver_3B356B98.

int SceSblACMgrForKernel_11C9158B(void* input, void* output);

SceSblACMgrForKernel_165C3C7A

Version NID
3.60 0x165C3C7A

A guessed name is sceSblACMgrIsVs0UserDriveAccessibleProgramForKernel.

Same as #SceSblACMgrForDriver_E79C7A8D.

SceBool SceSblACMgrForKernel_165C3C7A(SceUID pid, const SceChar8 *path);

SceSblACMgrForKernel_1948E9DB

Version NID
3.60 0x1948E9DB

Equivalent of #SceSblACMgrForKernel_FBA1A256.

int SceSblACMgrForKernel_1948E9DB(void);

SceSblACMgrForKernel_CCDBB74D

Version NID
0.931-3.60 0xCCDBB74D
int SceSblACMgrForKernel_CCDBB74D(SceUID pid, st_attr_info *a2, void *a3);

SceSblACMgrForKernel_75AAF981

Version NID
0.931-3.60 0x75AAF981

A guessed name is sceSblACMgrIsAllowFSAttributeForKernel.

Equivalent of #SceSblACMgrForKernel_BE5667C5.

int SceSblACMgrForKernel_75AAF981(SceUID pid, st_attr_info *a2, int a3);

sceSblACMgrSetFSAttributeByAttributeWithMountPointForKernel

Version NID
1.500.151-3.740.011 0x1B160234
int sceSblACMgrSetFSAttributeByAttributeWithMountPointForKernel(SceUID pid, st_attr_info *a2, int *a3, int flags);

sceSblACMgrSetFSAttributeByModeForKernel

Version NID
0.990-3.60 0x2AE6CF27

Equivalent of #sceSblACMgrSetFSAttributeByModeForDriver.

int sceSblACMgrSetFSAttributeByModeForKernel(SceUID pid, st_attr_info *a2, int flags);

SceSblACMgrForKernel_30575458

Version NID
3.60 0x30575458

returns true if sceSblACMgrHasCapabilityForDriver(pid, 34) returns true

or returns SceSysrootForDriver_26AA237C(); if sceSblACMgrIsFselfForDriver returns true.

int SceSblACMgrForKernel_30575458(SceUID pid);

sceSblACMgrIsKernelProgramForKernel

Version NID
3.60 0x31C23B66

Temp name was sceSblACMgrIsSystemForKernel, sceSblACMgrIsRootProgramForKernel.

Equivalent of #sceSblACMgrIsKernelProgramForDriver.

int sceSblACMgrIsKernelProgramForKernel(SceUID pid);

sceSblACMgrIsPSMDevAssistantForKernel

Version NID
3.60 0x3388F595

Temp name was sceSblACMgrIsSIEAppForKernel.

Equivalent of #sceSblACMgrIsPSMDevAssistantForDriver.

int sceSblACMgrIsPSMDevAssistantForKernel(SceUID pid);

sceSblACMgrIsAllowLoopBackMountForKernel

Version NID
3.60 0x384D20FD

Temp name was sceSblACMgrIsAllowExtendedMemoryForKernel.

Equivalent of #sceSblACMgrIsAllowLoopBackMountForDriver.

SceBool sceSblACMgrIsAllowLoopBackMountForKernel(SceUID pid);

sceSblACMgrIsNonGameProgramForKernel

Version NID
3.60 0x3F99279F

return sceSblACMgrHasCapabilityForDriver(pid, 3);

int sceSblACMgrIsNonGameProgramForKernel(SceUID pid);

sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel

Version NID
3.60 0x410357AF

returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true

or returns SceSysrootForDriver_E2515A08(void); if sceSblACMgrIsFselfForDriver returns true.

int sceSblACMgrHasSystemDataFilePlayReadyFlagForKernel(SceUID pid);

sceSblACMgrIsPspEmuForKernel

Version NID
3.60 0x47B67F72

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).

int sceSblACMgrIsPspEmuForKernel(SceUID pid);

SceSblACMgrForKernel_48F4D5EE

Version NID
0.931-3.60 0x48F4D5EE

Equivalent of #SceSblACMgrForKernel_84604EED.

SceBool SceSblACMgrForKernel_48F4D5EE(SceUID pid);

sceSblACMgrIsAllowProcessDebugForKernel

Version NID
3.60 0x49509A83

This is a guessed name. Temp name was sceSblACMgrIsAllowCoredumpForKernel.

int sceSblACMgrIsAllowProcessDebugForKernel(SceUID pid);

sceSblACMgrIsAllowCacheForKernel

Version NID
3.60 0x4C4B7D6B

Equivalent of SceSblACMgrForKernel_456DA7AC.

int sceSblACMgrIsAllowCacheForKernel(SceUID pid);

sceSblACMgrIsNonGameOrGameProgramForDriver

Version NID
3.60 0x570D6AD3

Returns true if sceSblACMgrHasCapabilityForDriver(pid, 2); (IsGame) returns true

or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.

int sceSblACMgrIsNonGameOrGameProgramForDriver(SceUID pid);

sceSblACMgrIsFselfForKernel

Version NID
3.60 0x5AC59172

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id begins with 0x2F (fSELF).

int sceSblACMgrIsFselfForKernel(SceUID pid);

sceSblACMgrHasSystemDataFileFlagForKernel

Version NID
3.60 0x5E6BA11C

return sceSblACMgrHasCapabilityForDriver(pid, 135);

int sceSblACMgrHasSystemDataFileFlagForKernel(SceUID pid);

SceSblACMgrForKernel_7529E364

Version NID
3.60 0x7529E364

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if sceSblACMgrIsGameProgramForDriver returns true

or if sceSblACMgrIsAllowMsMountForDriver returns true.

int SceSblACMgrForKernel_7529E364(SceUID pid);

sceSblACMgrGetPaidForKernel

Version NID
0.931 not present
3.60 0x7C2AF978

Temp name was sceSblACMgrGetProcessProgramAuthIdForKernel, sceSblACMgrGetSelfAuthInfoForKernel, sceSblACMgrGetProcessSelfAuthInfoForKernel.

int sceSblACMgrGetPaidForKernel(SceUID pid, SceUInt64 *pPaid);

SceSblACMgrForKernel_7F294A09

Version NID
3.60 0x7F294A09

Uses sceKernelSysrootGetProcessSelfAuthInfoForKernel.

attribute + 0x10

Uses SceKernelCheckDipswForDriver(159); // is development mode

int SceSblACMgrForKernel_7F294A09(SceUID pid, char *maybe_path);

SceSblACMgrForKernel_8241AB5C

Version NID
3.60 0x8241AB5C
int SceSblACMgrForKernel_8241AB5C(SceUID pid, int a2);

sceSblACMgrIsSystemProgramForKernel

Version NID
0.931.010-3.740.011 0x930CD037

Temp name was sceSblACMgrIsShellForKernel.

Used by "scePfsACConvertModeForRedirect".

return sceSblACMgrHasCapabilityForDriver(pid, 1);

int sceSblACMgrIsSystemProgramForKernel(SceUID pid);

sceSblACMgrIsAllowVirtualMachineForKernel

Version NID
3.60 0x96403142

This is a guessed name.

If sceSblACMgrHasCapabilityForDriver(pid, 132) returns true

-> returns true

else if sceSblACMgrIsFselfForDriver returns true

-> returns SceSysrootForDriver_26AA237C(1);

int sceSblACMgrIsAllowVirtualMachineForKernel(SceUID pid);

sceSblACMgrIsPSMRuntimeForKernel

Version NID
3.60 0x966B3738

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))

or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)

int sceSblACMgrIsPSMRuntimeForKernel(SceUID pid);

sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel

Version NID
3.60 0x98B28671

This is a guessed name.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id first 8 bytes equals 0x28008000

(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self

OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).

int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForKernel(SceUID pid);

sceSblACMgrHasCapabilityForKernel

Version NID
3.60 0x9EDAF856
int sceSblACMgrHasCapabilityForKernel(SceUID pid, int bit);

sceSblACMgrIsWebCoreOrWebKitProcessForKernel

Version NID
3.60 0xA7C3001D

This is a guessed name.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)

OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)

int sceSblACMgrIsWebCoreOrWebKitProcessForKernel(SceUID pid);

sceSblACMgrIsAllowUdcdForKernel

Version NID
3.60 0xAF6F208E

Temp name was sceSblACMgrIsMiniSettingsForQAForKernel.

Equivalent of #sceSblACMgrIsAllowUdcdForDriver.

SceBool sceSblACMgrIsAllowUdcdForKernel(SceUID pid);

SceSblACMgrForKernel_A50FDA27

Version NID
3.60 0xA50FDA27

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

-> returns self_auth_info.attribute bit flag number 16 from left (---> XX XX 8X)

int SceSblACMgrForKernel_A50FDA27(SceUID pid);

sceSblACMgrIsDevelopmentModeForKernel

Version NID
0.931-3.60 0xBBA13D9C

Returns sceKernelCheckDipswForDriver(159);

int sceSblACMgrIsDevelopmentModeForKernel(void);

sceSblACMgrIsPSMDevAssistantForKernel

Version NID
3.60 0xC90A9216

Equivalent of sceSblACMgrIsPSMDevAssistantForDriver.

int sceSblACMgrIsPSMDevAssistantForKernel(SceUID pid);

sceSblACMgrGetMediaTypeForKernel

Version NID
0.931-3.60 0xD442962E

Temp name was sceSblACMgrGetPathIdForKernel.

int sceSblACMgrGetMediaTypeForKernel(const char *path, SceUInt32 *pMediaType);

sceSblACMgrIsAllowUsbSerialForKernel

Version NID
3.60 0xDC49E160

returns true if sceSblACMgrHasCapabilityForDriver(pid, 1) returns true

AND sceSblACMgrHasCapabilityForDriver(pid, 131) returns true

or returns SceSysrootForDriver_26AA237C(1); if sceSblACMgrIsFselfForDriver returns true.

int sceSblACMgrIsAllowUsbSerialForKernel(SceUID pid);

sceSblACMgrIsPsNowClientForKernel

Version NID
3.60 0xE273ED8C

Equivalent of sceSblACMgrIsPsNowClientForDriver.

int sceSblACMgrIsPsNowClientForKernel(SceUID pid);

sceSblACMgrIsAllowMsMountForKernel

Version NID
3.60 0xF5AD56E4

Temp name was sceSblACMgrIsNotSandboxedForKernel.

Equivalent of sceSblACMgrIsAllowMsMountForDriver.

SceBool sceSblACMgrIsAllowMsMountForKernel(SceUID pid);

sceSblACMgrIsSceShellForKernel

Version NID
3.60 0xF9FEF5F0

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000000001 (NPXS19999 - SceShell)

int sceSblACMgrIsSceShellForKernel(SceUID pid);

SceSblACMgrForKernel_FBA1A256

Version NID
0.931-3.60 0xFBA1A256

Returns 0. Probably used in very old firmwares and patched in new firmwares by making it return always false.

SceBool SceSblACMgrForKernel_FBA1A256(void);

SceSblACMgrForKernel_FB2AC5B4

Version NID
3.60 0xFB2AC5B4
int SceSblACMgrForKernel_FB2AC5B4(SceUID pid, char *maybe_path);

SceSblACMgrForKernel_356B9139

Version NID
0.931-3.60 0x356B9139

Equivalent of SceSblACMgrForKernel_FF7125DE.

int SceSblACMgrForKernel_356B9139(int unused, const char *path, int *a3);

SceSblACMgrForDriver

sceSblACMgrIsWebCoreOrWebKitProcessForDriver

Version NID
3.60 0x0139FC20

This is a guessed name.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000008003 (NPXS10017 and NPXS10037 - SceWebCore)

OR 0x2800000000008005 (NPXS10083 and SceWebKitProcess and NPXS10084 SceWebKitProcessMini)

int sceSblACMgrIsWebCoreOrWebKitProcessForDriver(SceUID pid);

sceSblACMgrIsAllowUsbSerialForDriver

Version NID
3.60 0x062CAEB2

returns true if sceSblACMgrHasCapabilityForDriver(pid, 1) returns true

AND sceSblACMgrHasCapabilityForDriver(pid, 131) returns true

or returns SceSysrootForDriver_26AA237C(1); if sceSblACMgrIsFselfForDriver returns true.

int sceSblACMgrIsAllowUsbSerialForDriver(SceUID pid);

sceSblACMgrIsPSMRuntimeForDriver

Version NID
3.60 0x091F7247

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x210000101CD2000A (PCSI00010 - Unity Runtime For PlayStation®Mobile (found inside a PSM .pkg))

or equals 0x2800C0101CD2000B (PCSI00011 - PSM Runtime)

int sceSblACMgrIsPSMRuntimeForDriver(SceUID pid);

sceSblACMgrIsPsNowClientForDriver

Version NID
3.60 0x0924896F

Derived from sceAppMgrIsPsNowClient.

int sceSblACMgrIsPsNowClientForDriver(SceUID pid);

sceSblACMgrIsKernelProgramForDriver

Version NID
3.60 0x0948F41C

Temp name was sceSblACMgrIsSystemForDriver, sceSblACMgrIsRootProgramForDriver.

Equivalent of #sceSblACMgrIsKernelProgramForKernel.

return sceSblACMgrHasCapabilityForDriver(pid, 0);

int sceSblACMgrIsKernelProgramForDriver(SceUID pid);

sceSblACMgrIsAllowMsMountForDriver

Version NID
3.60 0x0B6E6CD7

Temp name was sceSblACMgrIsNotSandboxedForDriver.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals :

0x2800000000000013 (NPXS100028 - ScePspEmu)

OR 0x2800000000007009 (NPXS10069 - ScePspEmu old/testkit)

OR 0x2800000000000010 (NPXS10104 - Mini Settings For QA)

OR 0x280000000000002D (NPXS10026 - CMA)

OR 0x2800000000000022 (NPXS10027 - SceGameManual)

OR 0x2800000000000039 (NPXS10079 - Daily Checker BG)

OR 0x2800000000000001 (NPXS19999 - SceShell)

SceBool sceSblACMgrIsAllowMsMountForDriver(SceUID pid);

sceSblACMgrIsGameProgramForDriver

Version NID
3.60 0x1298C647

Derived from sceAppMgrIsGameProgram.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id begins with 0x21 (game) or 0x2F (fSELF).

int sceSblACMgrIsGameProgramForDriver(SceUID pid);

sceSblACMgrIsAllowVirtualMachineForDriver

Version NID
3.60 0x2A29453C

This is a guessed name.

If sceSblACMgrHasCapabilityForDriver(pid, 132) returns true

-> returns true

else if sceSblACMgrIsFselfForDriver returns true

-> returns SceSysrootForDriver_26AA237C(1);

int sceSblACMgrIsAllowVirtualMachineForDriver(SceUID pid);

SceSblACMgrForDriver_2E992B02

Version NID
3.60 0x2E992B02
int SceSblACMgrForDriver_2E992B02(SceUID pid);

sceSblACMgrIsFselfForDriver

Version NID
3.60 0x426A4E8C

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id begins with 0x2F (fSELF).

int sceSblACMgrIsFselfForDriver(SceUID pid);

sceSblACMgrGetMediaTypeForDriver

Version NID
0.931-3.60 0x4322F188
int sceSblACMgrGetMediaTypeForDriver(const char *path, int *pMediaType);

sceSblACMgrIsAllowCacheForDriver

Version NID
3.60 0x456DA7AC

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true:

  • if sceSblACMgrHasCapabilityForDriver(pid, 3); returns true
  • or if program_authority_id is between 0x0x210000101CD20007 and 0x0x21000010‭1CD20009‬ (PSM Dev Assistant apps)
  • or if fSELF and SceSysrootForDriver_26AA237C returns true
SceBool sceSblACMgrIsAllowCacheForDriver(SceUID pid);

SceSblACMgrForDriver_48CFCEA2

Version NID
3.60 0x48CFCEA2
int SceSblACMgrForDriver_48CFCEA2(SceUID pid, int *a2, int *a3, int flags);

sceSblACMgrIsAllowProcessDebugForDriver

Version NID
3.60 0x4CBD6156

This is a guessed name. Temp name was sceSblACMgrIsAllowCoredumpForDriver.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true:

  • if program_authority_id first 8 bytes equals 0x28000000 AND sceSblQafMgrIsAllowSystemAppDebugForDriver returns false
  • if self_auth_info.attribute flag 16 is set
  • if program_authority_id first 8 bytes equals 0x22000000 or 0x21000000 AND SceSysrootForDriver_56D85EB0 returns true AND SceQafMgrForDriver_694D1096 returns true
int sceSblACMgrIsAllowProcessDebugForDriver(SceUID pid);

SceSblACMgrForDriver_84604EED

Version NID
0.931-3.60 0x84604EED

return sceSblACMgrHasCapabilityForDriver(pid, 31);

SceBool SceSblACMgrForDriver_84604EED(SceUID pid);

sceSblACMgrIsAllowLoopBackMountForDriver

Version NID
3.60 0x4DB7F512

Temp name was sceSblACMgrIsAllowExtendedMemoryForDriver.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x280000000000001E (NPXS10010 - Videos) or 0x2800000000000010 (NPXS10104 - Mini Settings for QA) or 0x2800000000000031 (NPXS10036 - AVMediaService) or 0x220000101CC73883 (a certain nongame program???)

or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.

SceBool sceSblACMgrIsAllowLoopBackMountForDriver(SceUID pid);

sceSblACMgrIsUnityRuntimeForPSMForDriver

Version NID
3.60 0x5C4BC352

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

int sceSblACMgrIsUnityRuntimeForPSMForDriver(SceUID pid);

SceSblACMgrForDriver_5F9AF49C

Version NID
3.60 0x5F9AF49C

might sceSblACMgrIsMediaAccessibleProgram.

SceAppMgr will pass some drive list to this function and if it returns SCE_FALSE, it will add invalid overlay for that drive.

Checks if program_authority_id begins with 0x21 (game) or with 0x2F (fSELF) and does different things accordingly.

Calls sceKernelCheckDipswForDriver(159) and does different things according to the result.

int SceSblACMgrForDriver_5F9AF49C(SceUID pid, const char *drive);

SceSblACMgrForDriver_3B356B98

Version NID
0.931-3.60 0x3B356B98

Maybe sceSblACMgrGetFSAttributeByModeForDriver.

Same as #SceSblACMgrForKernel_11C9158B.

int SceSblACMgrForDriver_3B356B98(void* input, void* output);

sceFatfsACSetFSAttributeByPermissionForDriver

Version NID
3.60 0x6210D745

Temp name was sceSblACMgrSetFSAttributeByModeForDriver.

int sceFatfsACSetFSAttributeByPermissionForDriver(SceUID pid, st_attr_info *a2, int flags);

sceSblACMgrGetFSAttributeByThreadAccessLevelForDriver

Version NID
0.931-3.60 0x0606B87E
int sceSblACMgrGetFSAttributeByThreadAccessLevelForDriver(int a1, int a2, int *a3);

sceSblACMgrIsNonGameProgramForDriver

Version NID
3.60 0x6C5AB07F

Derived from sceAppMgrIsNonGameProgram.

return sceSblACMgrHasCapabilityForDriver(pid, 3);

int sceSblACMgrIsNonGameProgramForDriver(SceUID pid);

SceSblACMgrForDriver_6D8A88B7

Version NID
3.60 0x6D8A88B7

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if sceSblACMgrIsGameProgramForDriver returns true

or if sceSblACMgrIsAllowMsMountForDriver returns true.

int SceSblACMgrForDriver_6D8A88B7(SceUID pid);

sceSblACMgrIsSystemProgramForDriver

Version NID
0.931-3.60 0x8612B243

Temp name was sceSblACMgrIsShellForDriver.

return sceSblACMgrHasCapabilityForDriver(pid, 1);

int sceSblACMgrIsSystemProgramForDriver(SceUID pid);

sceSblACMgrIsNonGameOrGameProgramForKernel

Version NID
3.60 0x8A54DF3A

Returns true if sceSblACMgrHasCapabilityForDriver(pid, 2); (IsGame) returns true

or if sceSblACMgrHasCapabilityForDriver(pid, 3); (IsNonGame) returns true.

int sceSblACMgrIsNonGameOrGameProgramForKernel(SceUID pid);

sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver

Version NID
3.60 0x962CD237

This is a guessed name.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id first 8 bytes equals 0x28008000

(?0x2800800000000001? - never seen OR 0x2800800000000002 - gui_setupper.self

OR 0x2800800000000003 - cui_setupper.self OR 2800800000000015 - NPXS10082/spawn.self - Package Installer Spawn).

int sceSblACMgrIsUpdaterUISetupperOrPkgInstallerSpawnForDriver(SceUID pid);

sceSblACMgrGetPaidForDriver

Version NID
0.931 not present
3.60 0x96AF69BD

Temp name was sceSblACMgrGetProcessProgramAuthIdForDriver, sceSblACMgrGetSelfAuthInfoForDriver, sceSblACMgrGetProcessSelfAuthInfoForDriver.

int sceSblACMgrGetPaidForDriver(SceUID pid, SceUInt64 *pPaid);

sceSblACMgrIsSceShellForDriver

Version NID
3.60 0x991FDC15

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000000001 (NPXS19999 - SceShell)

int sceSblACMgrIsSceShellForDriver(SceUID pid);

sceSblACMgrHasMagicGateFlagForDriver

Version NID
3.60 0xA27E47A7

return sceSblACMgrHasCapabilityForDriver(pid, 129);

int sceSblACMgrHasMagicGateFlagForDriver(SceUID pid);

sceSblACMgrIsPSMDevAssistantForDriver

Version NID
3.60 0xA67E8E5B

Temp name was sceSblACMgrIsSIEAppForDriver.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id is between 0x210000101CD20007 and 0x210000101CD20009 (PSM Dev Assistant apps).

int sceSblACMgrIsPSMDevAssistantForDriver(SceUID pid);

sceSblACMgrHasSystemDataFileFlagForDriver

Version NID
3.60 0xA92CD636

return sceSblACMgrHasCapabilityForDriver(pid, 135);

int sceSblACMgrHasSystemDataFileFlagForDriver(SceUID pid);

sceSblACMgrHasUserDebugFlagForDriver

Version NID
3.60 0xAD717E7A

This is a guessed name.

Used by SceDeci4pLoadp, SceDeci4pDbgp

return sceSblACMgrHasCapabilityForDriver(pid, 32);

int sceSblACMgrHasUserDebugFlagForDriver(SceUID pid);

sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver

Version NID
3.60 0xAE1AF154

returns true if sceSblACMgrHasCapabilityForDriver(pid, 134) returns true

or returns SceSysrootForDriver_E2515A08(void); if sceSblACMgrIsFselfForDriver returns true.

int sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver(SceUID pid);

SceSblACMgrForDriver_B12CEAA8

Version NID
3.60 0xB12CEAA8

Seems to check some bit flags.

Used by SceExfatfs in VFS implementation functions: sceVfsNodeChstatForDriver and sceVfsNodeChstatByFdForDriver

int SceSblACMgrForDriver_B12CEAA8(SceUID pid, st_attr_info *a1, st_attr_info *a2);

SceSblACMgrForDriver_B836CF13

Version NID
3.60 0xB836CF13

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

-> returns self_auth_info.attribute bit flag number 16 from left (---> XX XX 8X)

int SceSblACMgrForDriver_B836CF13(SceUID pid);

SceSblACMgrForDriver_BE5667C5

Version NID
0.931-3.60 0xBE5667C5
int SceSblACMgrForDriver_BE5667C5(SceUID pid, st_attr_info *a2, int a3);

sceSblACMgrHasCapabilityForDriver

Version NID
3.60 0xC2D1F2FC
int sceSblACMgrHasCapabilityForDriver(SceUID pid, int bit);

sceSblACMgrIsPSMDevAssistantForDriver

Version NID
3.60 0xC98D82EE

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x210000101CD20007 (PCSI00007 - PlayStation®Mobile Development Assistant)

AND sceSblACMgrIsPSMRuntimeForDriver returns true.

or returns SceSysrootForDriver_26AA237C(void); if sceSblACMgrIsFselfForDriver returns true.

int sceSblACMgrIsPSMDevAssistantForDriver(SceUID pid);

sceSblACMgrIsAllowUdcdForDriver

Version NID
3.60 0xD0E11C89

Temp name was sceSblACMgrIsMiniSettingsForQAForDriver.

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000000010 (NPXS10104 - Mini Settings for QA)

or if program_authority_id equals 0x220000101CC73883 (a certain nongame program???)

or if sceSblACMgrHasCapabilityForDriver(pid, 130) returns true.

SceBool sceSblACMgrIsAllowUdcdForDriver(SceUID pid);

SceSblACMgrForDriver_D7AD8471

Version NID
3.60 0xD7AD8471
int SceSblACMgrForDriver_D7AD8471(SceUID pid, char *maybe_path);

SceSblACMgrForDriver_E79C7A8D

Version NID
3.60 0xE79C7A8D

A guessed name is sceSblACMgrIsVs0UserDriveAccessibleProgramForDriver.

Same as #SceSblACMgrForKernel_165C3C7A.

SceBool SceSblACMgrForDriver_E79C7A8D(SceUID pid, const SceChar8 *path);

sceSblACMgrIsDevelopmentModeForDriver

Version NID
0.931-3.60 0xE87D1777

Derived from sceAppMgrIsDevelopmentMode.

Returns sceKernelCheckDipswForDriver(159);

int sceSblACMgrIsDevelopmentModeForDriver(void);

sceSblACMgrHasMarlinFlagForDriver

Version NID
3.60 0xF5AE24AC

return sceSblACMgrHasCapabilityForDriver(pid, 128);

int sceSblACMgrHasMarlinFlagForDriver(SceUID pid);

sceSblACMgrIsPspEmuForDriver

Version NID
3.60 0xFD00C72A

Calls sceSblACMgrGetPaidForDriver to get program_authority_id.

Returns true if program_authority_id equals 0x2800000000000013 (NPXS10029) or 0x2800000000007009 (NPXS10069 - testkit/old PSPemu).

int sceSblACMgrIsPspEmuForDriver(SceUID pid);

SceSblACMgrForDriver_FF7125DE

Version NID
0.931-3.60 0xFF7125DE

Gets some info for path.

int SceSblACMgrForDriver_FF7125DE(int unused, const char *path, int *a3);

SceSblACMgr

_sceSblACMgrIsGameProgram

Version NID
0.931.010-3.740.011 0x3C17A7F7
int _sceSblACMgrIsGameProgram(int *result);