2012-06-13 11 views
8

Po raz pierwszy pytam o stackoverflow i jestem zdesperowany.Jak wstawić polecenie LC_LOAD_DYLIB do pliku binarnego Mach-O lub dołączyć do biblioteki statycznej do istniejącego pliku binarnego (IOS)

Moim zadaniem jest załadowanie dylib lub dołączenie statycznej biblioteki do już istniejącego pliku wykonywalnego dla urządzenia IOS.

Będę używał static void __attribute__((constructor)) initialize(void), aby rozpocząć swizzling. Ten plik wykonywalny jest przeznaczony dla domowego sklepu firmowego, więc nie muszę przechodzić przez sklep Apple App Store (ponieważ go odrzuci).

Powodem tego jest wzięcie istniejącego IPA od klienta i kluczy podpisujących oraz dodanie nowej funkcjonalności do aplikacji bez konieczności interwencji programisty.

Jest jedna firma, która nazywa to nukona. Można oglądać film tutaj: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY

mogę powiedzieć, że próbowałem umieścić LSEnvironment wewnątrz pliku plist z DYLD_INSERT_LIBRARIES ale okazuje się LSEnvironment wydaje się nie mieć żadnego wpływu na izolowanym aplikacji IOS.

Próbowałem również install_name_tool do zmiany jednej z zależności i zastąpienie go moim dylib (który ma również dependecy). Zawiesza się bez informacji, dlaczego.

Oczywiście, jeśli dodaję dylib do aplikacji testowej w XCode i przekompiluję to działa idealnie, co jest podane. Jest to jednak coś, o co nie mogę zapytać, na przykład, administratora firmy. Przebudowa może zniechęcić klientów do korzystania z tej biblioteki.

Oto powiązany odnośnik znaleziony na przepełnieniu stosu, ale dla osx i potrzebuję go dla IOS. How to insert a LC_LOAD_DYLIB command into a Mach-O binary (OSX)

Jedyne co mogę myśleć off jest do edycji poleceń obciążenie binarny jak niektórzy, ale nie jestem pewien, w jaki sposób i jak to zrobić z uwzględnieniem tabel relokacji itp ...

Każda alternatywa jest mile widziany.

Dziękuję za poświęcony czas.

+2

Próbując zrobić dokładnie to samo. Jeśli masz gdziekolwiek, doceniłbym wskaźnik. – Rick

Odpowiedz

6

I open-pochodzą optool który robi dokładnie to (nie testowałem go na iOS, ale powinno działać. Otwórz się problem, jeśli masz problemy)

Powiązane problemy