2011-09-21 19 views
5

Tôi muốn xóa chữ ký số khỏi ứng dụng Mac đã được ký bằng mã hiệu. Có một tùy chọn không có giấy tờ để codesign, --remove-signature, mà theo tên của nó có vẻ là những gì tôi cần. Tuy nhiên, tôi không thể làm cho nó hoạt động được. Tôi nhận ra nó không có giấy tờ, nhưng tôi thực sự có thể sử dụng chức năng này. Có lẽ tôi đang làm gì đó sai?lỗi? in codesign --remove-signature feature

codesign -s MyIdentity foo.app 

công trình bình thường, ký kết hợp ứng dụng

codesign --remove-signature foo.app 

không hoạt động đĩa trong vài giây, sau đó nói

foo.app: invalid format for signature 

và foo.app đã phát triển đến 1,9 GB !!! (Cụ thể, đó là tệp thực thi trong foo.app/Contents/Resources/MacOS tăng từ 1,1 MB đến 1,9 GB.)

Điều tương tự cũng xảy ra khi tôi cố ký/hủy công cụ hỗ trợ nhị phân thay vì .app.

Bất kỳ ý tưởng nào?


Bối cảnh: Đây là ứng dụng của riêng tôi; Tôi không cố gắng để đánh bại bảo vệ bản sao hoặc bất cứ điều gì như thế.

Tôi muốn phân phối ứng dụng đã ký để mỗi lần cập nhật ứng dụng sẽ không cần sự chấp thuận của người dùng để đọc/ghi các mục nhập của ứng dụng trong Keychain. Tuy nhiên, một số người cần sửa đổi ứng dụng bằng cách thêm thư mục của riêng họ vào/Tài nguyên. Nếu họ làm điều đó, chữ ký sẽ không hợp lệ và ứng dụng không thể sử dụng các mục nhập Keychain của riêng nó.

Ứng dụng có thể dễ dàng phát hiện nếu tình huống này đã xảy ra. Nếu sau đó ứng dụng có thể xóa chữ ký của nó, mọi thứ sẽ ổn. Những người thực hiện sửa đổi này sẽ cần phải cung cấp cho phép ứng dụng đã được sửa đổi, hiện tại chưa được ký để sử dụng Keychain, nhưng điều đó tốt với tôi.

Trả lời

0

Tôi đồng ý rằng có điều gì đó kỳ lạ xảy ra khi bạn thực hiện --remove-signature.

Tuy nhiên, thay vì cố gắng bỏ mã ký, bạn nên thay đổi cách người dùng của bạn đặt thêm tệp trong Resources. Thay vào đó, chỉ một con đường nhất định, thường là

~/Library/Application Support/Name_Of_Your_App/ 

hoặc có thể

~/Library/Application Support/Name_Of_Your_App/Resources/ 

và yêu cầu người dùng đặt các tập tin thêm ở đó. Sau đó, trong mã của bạn, luôn kiểm tra thư mục ngoài các tệp trong số Resources khi bạn cần đọc tệp.

+0

Các người sử dụng có thể có nhiều bản sao của ứng dụng với các tập tin phụ khác nhau, và có thể di chuyển các ứng dụng xung quanh. Nếu các tệp phụ của họ nằm trong ứng dụng, tất cả đều hoạt động. Nếu không, tôi phải bằng cách nào đó theo dõi các tập tin khác nhau dựa trên vị trí của ứng dụng, và sau đó nếu ứng dụng di chuyển nó ngừng hoạt động. Hoàn toàn là một mớ hỗn độn. – user532477

-2

Tôi tin rằng bạn có thể xóa chữ ký bằng cách xóa thư mục _CodeSignature trong gói Ứng dụng.

+0

không chỉ, mã nhị phân cũng được ký – dreamlab

8

Một hơi muộn, nhưng tôi đã cập nhật một công cụ công miền gọi unsign làm biến đổi thực thi rõ ràng ra chữ ký.

https://github.com/steakknife/unsign

+1

Mã khuyến khích bạn đã viết (thậm chí một phần) là tốt, miễn là bạn nêu chi tiết cách OP có thể sử dụng nó để làm những gì họ đang cố gắng làm. Nếu không, nó được coi là thư rác. – Louis

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