diff options
| author | spv420 <unomilliono@gmail.com> | 2022-04-24 13:08:55 -0400 |
|---|---|---|
| committer | spv420 <unomilliono@gmail.com> | 2022-04-24 13:08:55 -0400 |
| commit | 313627a7864d67e29a3655dd4a6077ac0481f3c1 (patch) | |
| tree | 714f13d602ebab9579f5a897ee5ca363e0cfbbef /tools | |
| parent | 7696be307f95423066348555f04546782e08ff22 (diff) | |
ohai nonfunctional wip kexp
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/build_native.sh | 6 | ||||
| -rw-r--r-- | tools/testlol.c | 73 |
2 files changed, 78 insertions, 1 deletions
diff --git a/tools/build_native.sh b/tools/build_native.sh index 20fb329..896562a 100644 --- a/tools/build_native.sh +++ b/tools/build_native.sh @@ -1,4 +1,8 @@ mkdir bin rm bin/thread_shit gcc thread_shit.c -o bin/thread_shit --std=c99 -ldid -S bin/thread_shit
\ No newline at end of file +ldid -S bin/thread_shit + +rm bin/testlol +gcc testlol.c -o bin/testlol --std=c99 +ldid -S bin/testlol
\ No newline at end of file diff --git a/tools/testlol.c b/tools/testlol.c new file mode 100644 index 0000000..9c56db3 --- /dev/null +++ b/tools/testlol.c @@ -0,0 +1,73 @@ +#include <mach/mach.h> +#include <stddef.h> +#include <stdio.h> +//#include <IOKit/IOKitLib.h> +//#include <IOKit/iokitmig.h> + +typedef struct __attribute__((__packed__)) { + uint32_t ip_bits; + uint32_t ip_references; + struct __attribute__((__packed__)) { + uint32_t data; + uint32_t pad; + uint32_t type; + } ip_lock; + struct __attribute__((__packed__)) { + struct __attribute__((__packed__)) { + struct __attribute__((__packed__)) { + uint32_t flags; + uintptr_t waitq_interlock; + uint64_t waitq_set_id; + uint64_t waitq_prepost_id; + struct __attribute__((__packed__)) { + uintptr_t next; + uintptr_t prev; + } waitq_queue; + } waitq; + uintptr_t messages; + natural_t seqno; + natural_t receiver_name; + uint16_t msgcount; + uint16_t qlimit; + } port; + uintptr_t imq_klist; + } ip_messages; + natural_t ip_flags; + uintptr_t ip_receiver; + uintptr_t ip_kobject; + uintptr_t ip_nsrequest; + uintptr_t ip_pdrequest; + uintptr_t ip_requests; + uintptr_t ip_premsg; + uint64_t ip_context; + natural_t ip_mscount; + natural_t ip_srights; + natural_t ip_sorights; +} kport_t; + +int main(int argc, char* argv[]) { + printf("var MACH_PORT_RIGHT_RECEIVE = 0x%x;\n", MACH_PORT_RIGHT_RECEIVE); + printf("var MACH_MSG_TYPE_MAKE_SEND = 0x%x;\n", MACH_MSG_TYPE_MAKE_SEND); + printf("var MACH_PORT_LIMITS_INFO = 0x%x;\n", MACH_PORT_LIMITS_INFO); + printf("var MACH_PORT_LIMITS_INFO_COUNT = 0x%x;\n", MACH_PORT_LIMITS_INFO_COUNT); + printf("var kport_size = 0x%x;\n", sizeof(kport_t)); + kport_t kport[2] = {}; + uintptr_t *ptr = (uintptr_t*)(kport + 1); + kport->ip_bits = 0x80000002; // IO_BITS_ACTIVE | IOT_PORT | IKOT_TASK + kport->ip_references = 100; + kport->ip_lock.type = 0x11; + kport->ip_messages.port.qlimit = 777; + kport->ip_receiver = 0x12345678; // dummy + kport->ip_srights = 99; + + printf("var kport_ip_bits%x = 0x%x;\n", 4, offsetof(kport_t, ip_bits)); + printf("var kport_ip_references%x = 0x%x;\n", 4, offsetof(kport_t, ip_references)); + printf("var kport_ip_lock_type%x = 0x%x;\n", 4, offsetof(kport_t, ip_lock.type)); + printf("var kport_ip_messages_port_qlimit%x = 0x%x;\n", 2, offsetof(kport_t, ip_messages.port.qlimit)); + printf("var kport_ip_receiver%x = 0x%x;\n", 4, offsetof(kport_t, ip_receiver)); + printf("var kport_ip_srights%x = 0x%x;\n", 4, offsetof(kport_t, ip_srights)); + printf("var MIG_MAX = 0x%x\n", 0x1000); + printf("var NDR_record = 0x%x\n", &NDR_record); + + return 0; +}
\ No newline at end of file |
