2012-06-13 28 views
8

Đây là lần đầu tiên tôi hỏi về stackoverflow và tôi tuyệt vọng.Cách chèn lệnh LC_LOAD_DYLIB vào nhị phân Mach-O hoặc nối một thư viện tĩnh vào nhị phân hiện có (IOS)

Nhiệm vụ của tôi là tải một dylib hoặc tham gia một lib tĩnh vào một tập tin thực thi đã tồn tại cho một thiết bị IOS.

Tôi sẽ sử dụng số static void __attribute__((constructor)) initialize(void) để bắt đầu quá trình chuyển. Thực thi này là dành cho nhà doanh nghiệp trong nhà appstore vì vậy tôi không cần phải đi qua các appstore táo (kể từ khi họ sẽ từ chối nó).

Lý do là thực hiện IPA hiện tại từ khách hàng và khóa ký của họ và thêm chức năng mới vào ứng dụng của họ mà không yêu cầu sự can thiệp của nhà phát triển.

Có một công ty làm điều đó gọi là nukona. Bạn có thể xem phim tại đây: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY

Tôi có thể cho bạn biết rằng tôi đã cố gắng đặt LSEnvironment bên trong tệp plist với DYLD_INSERT_LIBRARIES nhưng hóa ra LSEnvironment dường như không có hiệu ứng trong sandbox của ứng dụng IOS.

Tôi cũng đã thử install_name_tool để thay đổi một trong các phụ thuộc và thay thế bằng dylib của tôi (cũng có phụ thuộc đó). Nó treo mà không có thông tin tại sao.

Rõ ràng, nếu tôi thêm dylib vào một ứng dụng thử nghiệm trong XCode và biên dịch lại nó hoạt động hoàn hảo. Tuy nhiên, đây là một cái gì đó tôi không thể yêu cầu, ví dụ, một quản trị viên của một công ty. Việc xây dựng lại có thể ngăn cản khách hàng sử dụng lib này.

Đây là một liên kết liên quan tôi tìm thấy trên ngăn xếp tràn nhưng đối với osx và tôi cần nó cho IOS. How to insert a LC_LOAD_DYLIB command into a Mach-O binary (OSX)

Điều duy nhất tôi có thể nghĩ ra là để chỉnh sửa các lệnh tải nhị phân số như thế nào, nhưng tôi không chắc chắn làm thế nào và làm thế nào để làm điều đó có tính đến các bảng di dời vv ...

Bất kỳ thay thế được chào đón.

Cảm ơn bạn đã dành thời gian.

+2

Đang cố gắng để làm điều tương tự. Nếu bạn có bất cứ nơi nào tôi sẽ đánh giá cao một con trỏ. – Rick

Trả lời

6

tôi mã nguồn mở optool mà thực hiện chính xác này (tôi đã không thử nghiệm nó trên iOS nhưng nó phải làm việc. Mở ra một vấn đề nếu bạn có vấn đề)

Các vấn đề liên quan