Skip to content

Commit 90c9f8e

Browse files
committed
added resolve and hooking examples
1 parent 939e313 commit 90c9f8e

File tree

25 files changed

+936
-479
lines changed

25 files changed

+936
-479
lines changed

kern/file_hello_world/source/main.c

Lines changed: 0 additions & 18 deletions
This file was deleted.

kern/server_hello_world/source/main.c

Lines changed: 0 additions & 66 deletions
This file was deleted.

kernel/cache/source/main.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#include <stdlib.h>
2+
#include <stdio.h>
3+
4+
#include <ps4/kernel.h>
5+
6+
#define SERVER_PORT 5088
7+
8+
int main(int argc, char **argv)
9+
{
10+
Ps4KernelCache *c;
11+
void *m, *m2;
12+
int r;
13+
14+
Ps4KernelThread *td;
15+
Ps4KernelSocket *client;
16+
17+
if(ps4KernelIsInKernel() != PS4_OK)
18+
{
19+
printf("This is not a user space application.\n");
20+
return PS4_ERROR_IS_KERNEL_ELF;
21+
}
22+
23+
ps4KernelThreadGetCurrent(&td);
24+
r = ps4KernelSocketTCPServerCreateAcceptThenDestroy(td, &client, SERVER_PORT);
25+
26+
m = m2 = NULL;
27+
r = ps4KernelCacheCreate(&c);
28+
r = ps4KernelSocketPrint(td, client, "cache create: %p %i\n", c, r);
29+
30+
r = ps4KernelCacheGet(c, "foo", &m2);
31+
r = ps4KernelSocketPrint(td, client, "cache get foo m2: %p %i\n", m2, r);
32+
33+
m = (void *)42;
34+
r = ps4KernelCacheSet(c, "foo", m);
35+
r = ps4KernelSocketPrint(td, client, "cache set foo m: %p %i\n", m, r);
36+
37+
r = ps4KernelCacheGet(c, "foo", &m2);
38+
r = ps4KernelSocketPrint(td, client, "cache get foo m2: %p %i\n", m2, r);
39+
40+
r = ps4KernelCacheDelete(c, "foo");
41+
r = ps4KernelSocketPrint(td, client, "cache delete foo: %i\n", r);
42+
43+
r = ps4KernelCacheDelete(c, "bar");
44+
r = ps4KernelSocketPrint(td, client, "cache delete bar: %i\n", r);
45+
46+
m2 = NULL;
47+
r = ps4KernelCacheGet(c, "foo", &m2);
48+
r = ps4KernelSocketPrint(td, client, "cache get foo m2: %p %i\n", m2, r);
49+
50+
r = ps4KernelCacheDestroy(c);
51+
r = ps4KernelSocketPrint(td, client, "cache destroy: %p %i\n", m2, r);
52+
53+
// Global (rerun)
54+
55+
m = NULL;
56+
r = ps4KernelCacheGlobalGet("ps4.test.foo", &m);
57+
r = ps4KernelSocketPrint(td, client, "m: %p %i\n", m, r);
58+
59+
m = (void *)0x42;
60+
r = ps4KernelCacheGlobalSet("ps4.test.foo", m);
61+
r = ps4KernelSocketPrint(td, client, "m: %p %i\n", m, r);
62+
63+
m = NULL;
64+
r = ps4KernelCacheGlobalGet("ps4.test.foo", &m);
65+
r = ps4KernelSocketPrint(td, client, "m: %p %i\n", m, r);
66+
67+
//m = ps4KernelDlSym("sysctl_handle_64");
68+
//r = ps4KernelSocketPrint(td, client, "ps4KernelDlSym sysctl_handle_64: %p\n", m);
69+
70+
// uses a sub-cache called ps4.kernel.symbol.lookup
71+
r = ps4KernelSymbolLookup("sysctl_handle_64", &m);
72+
r = ps4KernelSocketPrint(td, client, "ps4KernelSymbolLookup sysctl_handle_64: %p %i\n", m, r);
73+
74+
m = NULL;
75+
r = ps4KernelCacheGlobalGet("ps4.kernel.symbol.lookup", &m);
76+
r = ps4KernelSocketPrint(td, client, "ps4.kernel.symbol.lookup: %p %i\n", m, r);
77+
78+
79+
r = ps4KernelSocketDestroy(client);
80+
81+
return EXIT_SUCCESS;
82+
}

0 commit comments

Comments
 (0)