X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/6342b70c4b8e5f41fc61d2b78ff0cbfe107be3cb..4af4085c10cc84c3c1ed47d46e24710fb85dc25c:/Mach/Inject.cpp diff --git a/Mach/Inject.cpp b/Mach/Inject.cpp index 840dc63..74e5b30 100644 --- a/Mach/Inject.cpp +++ b/Mach/Inject.cpp @@ -22,7 +22,20 @@ #include #include + +#ifdef __APPLE__ +#include "TargetConditionals.h" +#endif + +#ifdef TARGET_OS_IPHONE +#include +#define mach_vm_allocate vm_allocate +#define mach_vm_protect vm_protect +#define mach_vm_write vm_write +#define mach_vm_address_t vm_address_t +#else #include +#endif #include @@ -56,23 +69,18 @@ void InjectLibrary(pid_t pid) { thread_act_t thread; _krncall(thread_create(task, &thread)); - thread_state_flavor_t flavor; #if defined (__i386__) || defined(__x86_64__) x86_thread_state_t state; - flavor = x86_THREAD_STATE; - count = x86_THREAD_STATE_COUNT; #elif defined(__arm__) arm_thread_state_t state; - flavor = ARM_THREAD_STATE; - count = ARM_THREAD_STATE_COUNT; #else #error XXX: implement #endif memset(&state, 0, sizeof(state)); - mach_msg_type_number_t read(count); - _krncall(thread_get_state(thread, flavor, reinterpret_cast(&state), &read)); - _assert(read == count); + mach_msg_type_number_t read(MACHINE_THREAD_STATE_COUNT); + _krncall(thread_get_state(thread, MACHINE_THREAD_STATE, reinterpret_cast(&state), &read)); + _assert(read == MACHINE_THREAD_STATE_COUNT); Trampoline *trampoline; size_t align; @@ -160,7 +168,7 @@ void InjectLibrary(pid_t pid) { if (sizeof(frame) != 0) _krncall(mach_vm_write(task, stack + Stack_ - sizeof(frame), reinterpret_cast(frame), sizeof(frame))); - _krncall(thread_set_state(thread, flavor, reinterpret_cast(&state), count)); + _krncall(thread_set_state(thread, MACHINE_THREAD_STATE, reinterpret_cast(&state), MACHINE_THREAD_STATE_COUNT)); _krncall(thread_resume(thread)); _krncall(mach_port_deallocate(self, task));