सभी-एक-में macOS बाइनरी विश्लेषण: Mach-O पार्सिंग, ARM64 डिस्सेम्बली, कोड हस्ताक्षर, और डीबगिंग।
| विशेषता | विवरण |
|---|
| Mach-O पार्सिंग | हेडर, सेगमेंट, सेक्शन, सिंबल, डायलिब, स्ट्रिंग |
| कोड हस्ताक्षर | एंटाइटलमेंट, CDHash, साइनिंग जानकारी, टीम ID |
| ARM64 डिसअसेंबली | PAC एनोटेशन के साथ पूर्ण इंस्ट्रक्शन डिकोडर |
| प्रक्रिया डिबगिंग | अटैच, ब्रेकपॉइंट, मेमोरी, रजिस्टर |
| Swift लाइब्रेरी | अपने प्रोजेक्ट्स में एम्बेड करें |
| JSON आउटपुट | स्क्रिप्ट-अनुकूल आउटपुट प्रारूप |
# बनाएं
swift build
# बाइनरी पार्स करें
swift run machscope parse /bin/ls
# macOS ऐप पार्स करें
swift run machscope parse /Applications/Calculator.app/Contents/MacOS/Calculator
# एंटाइटलमेंट देखें
swift run machscope parse /Applications/Safari.app/Contents/MacOS/Safari --entitlements
# JSON आउटपुट
swift run machscope parse /bin/ls --json
brew install sadopc/tap/machscope
git clone https://github.com/sadopc/machscope.git
cd MachScope
swift build -c release
sudo cp .build/release/machscope /usr/local/bin/
Mach-O बाइनरी संरचना का विश्लेषण करें:
# मूल विश्लेषण
machscope parse /bin/ls
# पूर्ण विश्लेषण
machscope parse /bin/ls --all
# विशिष्ट अनुभाग
machscope parse /path/to/binary --symbols
machscope parse /path/to/binary --dylibs
machscope parse /path/to/binary --strings
machscope parse /path/to/binary --signatures
machscope parse /path/to/binary --entitlements
# स्क्रिप्टिंग के लिए JSON आउटपुट
machscope parse /bin/ls --json --all > analysis.json
ARM64 कोड डिसअसेंबल करें:
# फंक्शन सूची
machscope disasm /bin/ls --list-functions
# पते से डिसअसेंबल करें
machscope disasm /bin/ls --address 0x100003f40 --length 50
# इंस्ट्रक्शन बाइट्स दिखाएं
machscope disasm /bin/ls --show-bytes
देखें कि कौन सी सुविधाएँ उपलब्ध हैं:
machscope check-permissions
आउटपुट:
Feature Status Notes
------------------------------------------------------------
Static Analysis ✓ Ready कोई विशेष अनुमति नहीं चाहिए
Disassembly ✓ Ready कोई विशेष अनुमति नहीं चाहिए
Debugger ✗ Denied डीबगर एंटाइटलमेंट गायब
चल रही प्रक्रियाओं से अटैच करें (हस्ताक्षर आवश्यक):
# पहले डीबगर एंटाइटलमेंट के साथ हस्ताक्षर करें
codesign --force --sign - --entitlements Resources/MachScope.entitlements .build/debug/machscope
# सिस्टम सेटिंग्स > गोपनीयता और सुरक्षा में डेवलपर टूल सक्षम करें
# प्रक्रिया से अटैच करें
machscope debug <pid>
MachScope को अपने Package.swift में जोड़ें:
dependencies: [
.package(url: "https://github.com/sadopc/machscope.git", from: "1.0.0")
]
फिर अपने कोड में उपयोग करें:
import MachOKit
import Disassembler
// बाइनरी पार्स करें
let binary = try MachOBinary(path: "/bin/ls")
print("सीपीयू: \(binary.header.cpuType)")
print("सेगमेंट: \(binary.segments.count)")
// एंटाइटलमेंट जाँचें
if let signature = try binary.parseCodeSignature(),
let entitlements = signature.entitlements {
for key in entitlements.keys {
print("\(key): \(entitlements[key] ?? "nil")")
}
}
// डिसअसेंबल करें
let disasm = ARM64Disassembler(binary: binary)
let result = try disasm.disassembleFunction("_main", from: binary)
for instruction in result.instructions {
print(disasm.format(instruction))
}
MachScope/
├── Sources/
│ ├── MachOKit/ # मुख्य Mach-O पार्सिंग लाइब्रेरी
│ ├── Disassembler/ # ARM64 इंस्ट्रक्शन डिकोडर
│ ├── DebuggerCore/ # प्रक्रिया डिबगिंग
│ └── MachScope/ # CLI अनुप्रयोग
├── Tests/ # परीक्षण सूट (319+ परीक्षण)
├── Resources/ # कोड हस्ताक्षर के लिए एंटाइटलमेंट
└── docs/ # दस्तावेज़ीकरण
| उपकरण | भाषा | लाइब्रेरी? | ARM64 PAC | डीबगर |
|---|---|---|---|---|
| MachScope | Swift | ✅ हाँ | ✅ हाँ | ✅ हाँ |
| otool | C | ❌ नहीं | ❌ नहीं | ❌ नहीं |
| objdump | C | ❌ नहीं | ❌ नहीं | ❌ नहीं |
| jtool2 | C | ❌ नहीं | ✅ हाँ | ❌ नहीं |
| Hopper | — | ❌ नहीं | ✅ हाँ | ❌ नहीं |
MachScope का मुख्य लाभ: Swift-मूल लाइब्रेरी जिसे आप अपने स्वयं के टूल्स में एम्बेड कर सकते हैं।
MIT लाइसेंस — विवरण के लिए LICENSE देखें।
योगदान का स्वागत है! कृपया पहले योगदान गाइड पढ़ें।
# सबमिट करने से पहले परीक्षण चलाएं
swift test
# कोड फ़ॉर्मेट करें
xcrun swift-format -i -r Sources/ Tests/
Swift में ❤️ के साथ बनाया गया