s32 svcGetProcessInfo(s64* out, Handle process, u32 type);
s32 svcConnectToPort(volatile Handle* out, const char* portName);
s32 svcSendSyncRequest(Handle session);
+Result svcOpenProcess(Handle* process, u32 processId);
s32 svcGetProcessId(u32 *out, Handle handle);
s32 svcGetThreadId(u32 *out, Handle handle);
s32 svcOutputDebugString(const char* str, int length);
+Result svcCreatePort(Handle* portServer, Handle* portClient, const char* name, s32 maxSessions);
+Result svcDebugActiveProcess(Handle* debug, u32 processId);
+Result svcGetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount);
+Result svcReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size);
+Result svcMapProcessMemory(Handle process, u32 startAddr, u32 endAddr);
+Result svcUnmapProcessMemory(Handle process, u32 startAddr, u32 endAddr);
+Result svcQueryProcessMemory(MemInfo* info, PageInfo* out, Handle process, u32 addr);
svc 0x32
bx lr
+.global svcOpenProcess
+.type svcOpenProcess, %function
+svcOpenProcess:
+ push {r0}
+ svc 0x33
+ pop {r2}
+ str r1, [r2]
+ bx lr
+
.global svcGetProcessId
.type svcGetProcessId, %function
svcGetProcessId:
ldr r3, [sp], #4
str r1, [r3]
bx lr
+
+.global svcCreatePort
+.type svcCreatePort, %function
+svcCreatePort:
+ push {r0, r1}
+ svc 0x47
+ ldr r3, [sp, #0]
+ str r1, [r3]
+ ldr r3, [sp, #4]
+ str r2, [r3]
+ add sp, sp, #8
+ bx lr
+
+.global svcDebugActiveProcess
+.type svcDebugActiveProcess, %function
+svcDebugActiveProcess:
+ push {r0}
+ svc 0x60
+ pop {r2}
+ str r1, [r2]
+ bx lr
+
+.global svcGetProcessList
+.type svcGetProcessList, %function
+svcGetProcessList:
+ push {r0, r1}
+ svc 0x65
+ ldr r3, [sp, #0]
+ str r1, [r3]
+ ldr r3, [sp, #4]
+ str r2, [r3]
+ add sp, sp, #8
+ bx lr
+
+.global svcReadProcessMemory
+.type svcReadProcessMemory, %function
+svcReadProcessMemory:
+ svc 0x6A
+ bx lr
+
+.global svcMapProcessMemory
+.type svcMapProcessMemory, %function
+svcMapProcessMemory:
+ svc 0x71
+ bx lr
+
+.global svcUnmapProcessMemory
+.type svcUnmapProcessMemory, %function
+svcUnmapProcessMemory:
+ svc 0x72
+ bx lr
+
+.global svcQueryProcessMemory
+.type svcQueryProcessMemory, %function
+svcQueryProcessMemory:
+ push {r0, r1, r4-r6}
+ svc 0x7D
+ ldr r6, [sp]
+ stm r6, {r1-r4}
+ ldr r6, [sp, #4]
+ str r5, [r6]
+ add sp, sp, #8
+ pop {r4-r6}
+ bx lr