From 6342b70c4b8e5f41fc61d2b78ff0cbfe107be3cb Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sat, 22 Jun 2013 18:57:56 -0700 Subject: [PATCH] Find location of libcycript at runtime with dladdr. --- Mach/Inject.cpp | 6 +++++- Makefile.am | 2 +- Makefile.in | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Mach/Inject.cpp b/Mach/Inject.cpp index c629939..840dc63 100644 --- a/Mach/Inject.cpp +++ b/Mach/Inject.cpp @@ -35,8 +35,12 @@ #include "Pooling.hpp" #include "Trampoline.t.hpp" +extern "C" void CYHandleServer(pid_t); + void InjectLibrary(pid_t pid) { - const char *library(CY_LIBRARY); + Dl_info addr; + _assert(dladdr(reinterpret_cast(&CYHandleServer), &addr) != 0); + const char *library(addr.dli_fname); mach_port_t self(mach_task_self()), task; _krncall(task_for_pid(self, pid, &task)); diff --git a/Makefile.am b/Makefile.am index f0ed2c2..29221b1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -73,7 +73,7 @@ if CY_MACH libcycript_la_SOURCES += Handler.mm cycript_SOURCES += Mach/Inject.cpp -AM_CPPFLAGS += -DCY_ATTACH -DCY_LIBRARY='"$(libdir)/libcycript.$(SO)"' +AM_CPPFLAGS += -DCY_ATTACH Mach/Inject.$(OBJEXT): Trampoline.t.hpp diff --git a/Makefile.in b/Makefile.in index 610d417..8575d20 100644 --- a/Makefile.in +++ b/Makefile.in @@ -81,7 +81,7 @@ bin_PROGRAMS = cycript$(EXEEXT) @CY_OBJECTIVEC_TRUE@am__append_6 = ObjectiveC/Output.mm ObjectiveC/Replace.cpp ObjectiveC/Library.mm @CY_MACH_TRUE@am__append_7 = Handler.mm @CY_MACH_TRUE@am__append_8 = Mach/Inject.cpp -@CY_MACH_TRUE@am__append_9 = -DCY_ATTACH -DCY_LIBRARY='"$(libdir)/libcycript.$(SO)"' +@CY_MACH_TRUE@am__append_9 = -DCY_ATTACH @CY_MACH_TRUE@am__append_10 = Trampoline.t.lo libTrampoline.t.la \ @CY_MACH_TRUE@ Trampoline.t.hpp subdir = . -- 2.47.2