2012-01-03 31 views
11

Có bất kỳ chương trình Linux nào có thể tháo rời một nhị phân Mach-O OSX phổ quát x86/x86_64 như objdump không? Objdump của GNU binutils hỗ trợ các tệp ELF và Windows PE nhưng không hỗ trợ Mach-O.Bộ tách rời Mach-O của Linux

+0

Bạn có chắc chắn rằng 'binutils' không hỗ trợ Mach-O? Có lẽ bạn cần phải cấu hình nó cho nó và biên dịch lại nó (tất nhiên, binutils' phân phối chuẩn của bạn không hỗ trợ nó, bởi vì nó không cần thiết cho điều đó)? –

+0

Tôi đã đọc ở đâu đó rằng các binutils GNU không hỗ trợ nó. Tôi chỉ đơn giản giả định rằng cổng mac đã được sửa đổi để hỗ trợ nó. Đây không phải là trường hợp như @Brett Hale mô tả. – Jeff

Trả lời

10

AFAIK, công cụ nhị phân Darwin gốc là một phần của gói cctools. Chúng không có cùng cú pháp dòng lệnh hoặc đầu ra là GNU binutils. Tuy nhiên, các binutils sau này (tức là, 2.22) hỗ trợ định dạng Mach-O. Bạn có thể nhận các bản dựng sẵn này, với tiền tố 'g' cho tên công cụ, như đã đề cập here. Ngoài ra, bạn có thể biên dịch binutils, với một cái gì đó như:

> ./configure --prefix=$CROSSTOOLDIR --target=x86_64-apple-darwin \ 
--enable-64-bit-bfd --disable-nls --disable-werror 

cài đặt sẽ tạo ra một thư mục bin/ nơi các tiện ích được bắt đầu với x86_64-apple-darwin. Nó sẽ xử lý các định dạng i386 Mach-O (và FAT nhị phân).

+0

Điều đó đã hiệu quả. Cảm ơn nhiều. – Jeff

+0

Cảm ơn một triệu! Làm việc xuất sắc!^_^ – TrinitronX

+0

Chỉ cần rõ ràng, đây là để xây dựng binutils đặc biệt cho Mac OSX? Không phải cho Linux như câu hỏi ban đầu được hỏi? –

-1

Một số công cụ nổi tiếng để đảo ngược kỹ thuật các mã nhị phân Mach-O là otool, chuỗi, nm, otx vv. Điều này chắc chắn hoạt động trên MAC OSX, tôi nghĩ nó hoạt động trên nền tảng Linux.

+0

Không, otool không hoạt động trên Linux. Nếu bạn có bất kỳ bằng chứng trái ngược nào, vui lòng nêu rõ. Nếu bạn có phiên bản của các công cụ khác hoạt động trên Linux cho các tệp Mac OS X, vui lòng nêu rõ nơi bạn đã nhận chúng. – pts

+0

có ... otool là công cụ dòng lệnh OSX cmd ... Có một công cụ thay thế cho nền tảng Linux .. Google và tìm nó! – Anil

+2

Tôi đã thử googling nó và tôi đã nhận ... câu trả lời này. – Buge

5

Liên quan đến phản ứng của Jeff:

bintuils không bao gồm liên kết hỗ trợ (ld/GLD) cho mach o thậm chí không có trong phiên bản hiện tại 2.23 đó là thực sự đáng thất vọng nhưng không đáng ngạc nhiên. Thật không may là những gì sẽ xảy ra khi bạn thực hiện một hệ điều hành, và tái tạo lại những thứ "mà thực sự không cần phải được tái tạo lại." Mọi người đều có những ưu tiên khác nhau. Tôi vẫn chưa nghe thấy kết thúc của a.out vs elf từ một số người.

cẩn thận để thử chạy các tệp nhị phân ELF trên OSX? https://stackoverflow.com/a/2613170/1867574

2

Bạn có thể tháo rời các tệp nhị phân Mach-O trên Linux bằng Hopper. Không giống như objdump, nó có giao diện người dùng đồ họa rất đẹp.

2

Tôi nghĩ bạn cần otool. Nó được bao gồm trong mac osx command tools. Ví dụ: nếu bạn muốn tháo rời a.out, tất cả những gì bạn cần làm là nhập otool -tv a.out vào dòng lệnh của mình.

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