2012-01-03 9 views
11

क्या कोई लिनक्स प्रोग्राम है जो ओएसएक्स सार्वभौमिक x86/x86_64 वसा मैक-ओ बाइनरी को objdump की तरह अलग कर सकता है? जीएनयू बिनुटिल्स 'ओब्जडम्प ईएलएफ और विंडोज पीई फाइलों का समर्थन करता है लेकिन मैक-ओ नहीं।लिनक्स मैक-ओ डिस्सेबलर

+0

क्या आप सुनिश्चित हैं कि 'binutils' Mach-O का समर्थन नहीं करता है? शायद आपको इसके लिए इसे कॉन्फ़िगर करना होगा और इसे पुन: संकलित करना होगा (बेशक आपके मानक वितरण के 'binutils' इसका समर्थन नहीं करते हैं, क्योंकि इसकी आवश्यकता नहीं है)? –

+0

मैंने कहीं पढ़ा था कि जीएनयू बिनुटिल्स इसका समर्थन नहीं कर रहा था। मैंने बस माना कि मैक पोर्ट को इसका समर्थन करने के लिए संशोधित किया गया था। ऐसा नहीं है क्योंकि @ ब्रेट हेल का वर्णन है। – Jeff

उत्तर

10

AFAIK, मूल डार्विन बाइनरी उपकरण cctools पैकेज का हिस्सा हैं। उनके पास GNU binutils के समान कमांड लाइन सिंटैक्स या आउटपुट नहीं है। बाद में binutils (यानी, 2.22) हालांकि मैक-ओ प्रारूप का समर्थन करता है। here का उल्लेख करते हुए, आप टूल नामों के लिए 'g' उपसर्ग के साथ इन प्रीबिल्ट प्राप्त कर सकते हैं। वैकल्पिक रूप से, आप की तरह कुछ के साथ binutils संकलन कर सकते हैं,:

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

स्थापना एक bin/ निर्देशिका जहां उपयोगिताओं x86_64-apple-darwin लगी होती हैं निकलेगा। इसे i386 मैक-ओ प्रारूप (और एफएटी बाइनरी) ठीक से संभालना चाहिए।

+0

यह काम किया। आपका बहुत बहुत धन्यवाद। – Jeff

+0

धन्यवाद दस लाख! उत्कृष्ट काम किया!^_^ – TrinitronX

+0

बस स्पष्ट होने के लिए, यह विशेष रूप से मैक ओएसएक्स के लिए binutils के निर्माण के लिए है? मूल प्रश्न की तरह लिनक्स के लिए नहीं पूछा गया? –

-1

रिवर्स मच-ओ बाइनरी इंजीनियरिंग के लिए कुछ प्रसिद्ध उपकरण otool, तार, कर रहे हैं एनएम, OTX आदि यह निश्चित रूप से पर मैक OSX काम करता है, मैं इसे लिनक्स plaform पर भी काम करता है लगता है।

+0

नहीं, ओटोल लिनक्स पर काम नहीं करता है। यदि आपके पास कोई विपरीत सबूत है, तो कृपया इसे बताएं। यदि आपके पास अन्य टूल्स का संस्करण है जो मैक ओएस एक्स फाइलों के लिए लिनक्स पर काम करते हैं, तो कृपया बताएं कि आपने उन्हें कहां से प्राप्त किया था। – pts

+0

हाँ ... ओटोल एक ओएसएक्स सीएमडी लाइन उपकरण है ... लिनक्स प्लेटफार्म के लिए एक वैकल्पिक उपकरण है .. Google और इसे ढूंढें! – Anil

+2

मैंने इसे गुगल करने की कोशिश की और मुझे ... यह जवाब मिला। – Buge

5
साथ जेफ की प्रतिक्रिया के संबंध

:

bintuils ओ भी मौजूदा 2.23 रिहाई जो वास्तव में निराशाजनक है, लेकिन आश्चर्य की बात नहीं है में नहीं मच के लिए समर्थन (ld/GLD) जोड़ने शामिल नहीं है। दुर्भाग्य से यह होता है कि जब आप ओएस बनाते हैं, और चीजों को फिर से शुरू करते हैं "जो वास्तव में पुनर्निर्मित करने की आवश्यकता नहीं होती है।" हर किसी के पास अलग-अलग प्राथमिकताएं हैं। मैंने अभी भी कुछ लोगों से ए.ओ. बनाम एल्फ के अंत को नहीं सुना है।

ओएसएक्स पर ईएलएफ बाइनरी चलाने की कोशिश करने की देखभाल? https://stackoverflow.com/a/2613170/1867574

2

आप लिनक्स पर Hopper के साथ मैक-ओ बाइनरी को अलग कर सकते हैं। Objdump के विपरीत, यह एक बहुत अच्छा ग्राफिकल यूजर इंटरफेस है।

2

मुझे लगता है कि आपको otool की आवश्यकता है। इसे mac osx command tools में शामिल किया गया है। उदाहरण के लिए, यदि आप a.out को अलग करना चाहते हैं, तो आपको बस अपनी कमांड लाइन में otool -tv a.out टाइप करना होगा।