
تحليل شامل لثنائيات macOS: تحليل Mach-O، تفكيك ARM64، تواقيع الرمز، وتصحيح الأخطاء.
أداة تحليل ثنائيات macOS أصلية توفر تحليل Mach-O، وفك ترجمة ARM64، وتصحيح العمليات. مبنية بالكامل بلغة Swift بدون أي تبعيات خارجية.
| الميزة | الوصف |
|---|---|
| تحليل Mach-O | الرؤوس، القطاعات، الأقسام، الرموز، المكتبات الديناميكية، السلاسل |
| التوقيعات البرمجية | الصلاحيات، CDHash، معلومات التوقيع، معرف الفريق |
| فك ترجمة 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
المخرجات:
الميزة الحالة ملاحظات
------------------------------------------------------------
التحليل الثابت ✓ جاهز لا توجد صلاحيات خاصة مطلوبة
فك الترجمة ✓ جاهز لا توجد صلاحيات خاصة مطلوبة
المصحح ✌ مرفوض صلاحية المصحح مفقودة
الإرفاق بالعمليات قيد التشغيل (يتطلب التوقيع):
# أولاً، قم بالتوقيع مع صلاحية المصحح
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("CPU: \(binary.header.cpuType)")
print("Segments: \(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/ # التوثيق
الميزة الرئيسية لـ MachScope: مكتبة أصلية بلغة Swift يمكنك تضمينها في أدواتك الخاصة.
رخصة MIT — انظر LICENSE للتفاصيل.
المساهمات مرحب بها! يُرجى قراءة دليل المساهمة أولاً.
# تشغيل الاختبارات قبل الإرسال
swift test
# تنسيق الكود
xcrun swift-format -i -r Sources/ Tests/
بـُني بـ ❤️ بلغة Swift
| الأداة | اللغة | مكتبة؟ | ARM64 PAC | مصحح |
|---|
| MachScope | Swift | ✅ نعم | ✅ نعم | ✅ نعم |
| otool | C | ❌ لا | ❌ لا | ❌ لا |
| objdump | C | ❌ لا | ❌ لا | ❌ لا |
| jtool2 | C | ❌ لا | ✅ نعم | ❌ لا |
| Hopper | — | ❌ لا | ✅ نعم | ❌ لا |