Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
IOSSecuritySuite — مكتبة سويفت لأمان منصة iOS ومكافحة العبث | Kitploit
أدوات/GitHubGitHub/securing/iossecuritysuite
أمان iOSالهندسة العكسيةأمن الجوالالتعلم والتعليم
GitHubsecuring/iossecuritysuite

IOSSecuritySuite

مكتبة سويفت لأمان منصة iOS ومكافحة العبث

عرض المستودعالموقع الإلكتروني
2.7k344111منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
## ⭐️ هل ترغب في أن تصبح مهندس أمان معتمد لتطبيقات iOS؟ ⭐️

اطلع على دورتنا العملية والكامله عبر الإنترنت على: [https://courses.securing.pl/courses/iase](https://courses.securing.pl/courses/iase?utm_source=githubiosss&utm_medium=githubiosss&utm_campaign=githubiosss&utm_id=githubiosss)

![شعار iASE](https://assets.kitploit.com/production/public/readmes/5249/32a5ed83a074890e108696e8d409a60131045c9fb4fbaeec742c8a5cc505ddb3.png)


## وصف ISS

![شعار ISS](https://assets.kitploit.com/production/public/readmes/5249/f1509c19032617bb06212f44e6b353e12a142811dcecdc783b8e266836f1ed72.png)
### بواسطة [@_r3ggi](https://twitter.com/_r3ggi)

🌏 iOS Security Suite هي مكتبة أمان منصة متقدمة وسهلة الاستخدام لمكافحة التلاعب، مكتوبة بلغة Swift النقية! إذا كنت تطور لتطبيقات iOS وتريد حماية تطبيقك وفقًا لمعيار OWASP [MASVS](https://github.com/OWASP/owasp-masvs)، الفصل v8، فإن هذه المكتبة قد توفر لك الكثير من الوقت. 🚀

ما يكشفه ISS:

* كسر الحماية (Jailbreak) 🧨
* مصحح أخطاء متصل 👨🏻‍🚀
* إذا تم تشغيل تطبيق في محاكٍ 👽
* أدوات الهندسة العكسية الشائعة قيد التشغيل على الجهاز 🔭

## الإعداد
هناك 4 طرق يمكنك بها البدء في استخدام IOSSecuritySuite

### 1. إضافة المصدر
أضف ملفات `IOSSecuritySuite/*.swift` إلى مشروعك

### 2. الإعداد باستخدام CocoaPods
`pod 'IOSSecuritySuite'`

### 3. الإعداد باستخدام Carthage
`github "securing/IOSSecuritySuite"`

### 4. الإعداد باستخدام Swift Package Manager
```swift
.package(url: "https://github.com/securing/IOSSecuritySuite.git", from: "1.5.0")
```

### تحديث Info.plist
بعد إضافة ISS إلى مشروعك، ستحتاج أيضًا إلى تحديث ملف Info.plist الرئيسي. يوجد فحص في وحدة كشف كسر الحماية يستخدم طريقة ```canOpenURL(_:)``` و[يتطلب](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl) تحديد عناوين URL التي سيتم الاستعلام عنها.

```xml
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>undecimus</string>
    <string>sileo</string>
    <string>zbra</string>
    <string>filza</string>
</array>
```

### التسعير

تحقق من ترخيص EULA الخاص بنا للحصول على التفاصيل.

TLDR:
إذا كانت شركتك توظف:
* 0-99 شخصًا - **مجاني الاستخدام**
* 100-1000 - 3000 يورو/السنة
* 1000+ - 10000 يورو/السنة

إذا كنت ترغب في بيع وحدة تستخدم iOS Security Suite (لا تُستخدم مباشرة في تطبيقك) - 10000 يورو/السنة

### ملاحظة

iOS Security Suite مخصص للاستخدام على iOS/iPadOS. لا ينبغي استخدامه على أجهزة Mac بمعالجات Apple Silicon.

## كيفية الاستخدام

### وحدة كشف كسر الحماية

* **الطريقة الأبسط** ترجع True/False إذا كنت تريد فقط معرفة ما إذا كان الجهاز مكسور الحماية أم لا.

```Swift
if IOSSecuritySuite.amIJailbroken() {
	print("هذا الجهاز مكسور الحماية")
} else {
	print("هذا الجهاز ليس مكسور الحماية")
}
```

* **مفصلة**، إذا كنت تريد أيضًا معرفة المؤشرات التي تم تحديدها

```Swift
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailMessage()
if jailbreakStatus.jailbroken {
	print("هذا الجهاز مكسور الحماية")
	print("لأن: \(jailbreakStatus.failMessage)")
} else {
	print("هذا الجهاز ليس مكسور الحماية")
}
```
`failMessage` هو نص يحتوي على مؤشرات مفصولة بفواصل كما هو موضح في المثال أدناه:
`sileo:// تم اكتشاف مخطط URL، ملف مشبوه موجود: /Library/MobileSubstrate/MobileSubstrate.dylib، تمكن Fork من إنشاء عملية جديدة`

* **مفصلة وقابلة للتصفية**، إذا كنت تريد مثلاً تحديد الأجهزة التي كانت مكسورة الحماية في الماضي ولكنها الآن محصورة

```Swift
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailedChecks()
if jailbreakStatus.jailbroken {
   if (jailbreakStatus.failedChecks.contains { $0.check == .existenceOfSuspiciousFiles }) && (jailbreakStatus.failedChecks.contains { $0.check == .suspiciousFilesCanBeOpened }) {
         print("هذا جهاز مكسور الحماية حقيقي")
   }
}
```

### وحدة كشف المصحح
```Swift
let amIDebugged: Bool = IOSSecuritySuite.amIDebugged()
```

### منع المصحح تمامًا
```Swift
IOSSecuritySuite.denyDebugger()
```

### وحدة كشف المحاكي
```Swift
let runInEmulator: Bool = IOSSecuritySuite.amIRunInEmulator()
```

### وحدة كشف أدوات الهندسة العكسية

* **الطريقة الأبسط** ترجع True/False إذا كنت تريد فقط معرفة ما إذا كان الجهاز يحتوي على دليل على الهندسة العكسية

```Swift
if IOSSecuritySuite.amIReverseEngineered() {
  print("هذا الجهاز يحتوي على دليل على الهندسة العكسية")
} else {
  print("هذا الجهاز لا يحتوي على دليل على الهندسة العكسية")
}
```

* **مفصلة وقابلة للتصفية**، إذا كنت تريد أيضًا قائمة الفحوصات التي تمت

```Swift
let reverseStatus = IOSSecuritySuite.amIReverseEngineeredWithFailedChecks()
if reverseStatus.reverseEngineered {
   // تحقق من reverseStatus.failedChecks لمزيد من التفاصيل
}
```

### وحدة كشف البروكسي للنظام

يمكنك الآن أيضًا اكتشاف ما إذا كان التطبيق متصلاً بشبكة VPN
```Swift
let amIProxied: Bool = IOSSecuritySuite.amIProxied(considerVPNConnectionAsProxy: true)
```

### وحدة كشف وضع الإغلاق (Lockdown Mode)
```Swift
let amIInLockdownMode: Bool = IOSSecuritySuite.amIInLockdownMode()
```

## الميزات التجريبية

### وحدة كشف خطافات وقت التشغيل
```Swift
let amIRuntimeHooked: Bool = amIRuntimeHook(dyldWhiteList: dylds, detectionClass: SomeClass.self, selector: #selector(SomeClass.someFunction), isClassMethod: false)
```
### وحدة منع خطافات الرموز
```Swift
// إذا أردنا منع خطاف رمز لدالة Swift، يجب تمرير الاسم المُشَوَّه (mangled name) لتلك الدالة
denySymbolHook("$s10Foundation5NSLogyySS_s7CVarArg_pdtF")   // منع خطاف الدالة NSLog
NSLog("Hello Symbol Hook")
     
denySymbolHook("abort") 
abort()
```

### وحدة كشف MSHook
```Swift
// تعريف الدالة
func someFunction(takes: Int) -> Bool {
	return false
} 

// تعريف FunctionType : @convention(thin) يشير إلى مرجع دالة "رفيع" يستخدم اصطلاح استدعاء Swift بدون معاملات "self" أو "context" خاصة.
typealias FunctionType = @convention(thin) (Int) -> (Bool)

// الحصول على عنوان المؤشر للدالة التي نريد التحقق منها
func getSwiftFunctionAddr(_ function: @escaping FunctionType) -> UnsafeMutableRawPointer {
	return unsafeBitCast(function, to: UnsafeMutableRawPointer.self)
}

let funcAddr = getSwiftFunctionAddr(someFunction)
let amIMSHooked = IOSSecuritySuite.amIMSHooked(funcAddr)
```

### وحدة منع MSHook
```Swift
// تعريف الدالة
func denyDebugger(value: Int) {
}

// تعريف FunctionType : @convention(thin) يشير إلى مرجع دالة "رفيع"
typealias FunctionType = @convention(thin) (Int)->()

// الحصول على عنوان الدالة الأصلية
let funcDenyDebugger: FunctionType = denyDebugger 
let funcAddr = unsafeBitCast(funcDenyDebugger, to: UnsafeMutableRawPointer.self)


if let originalDenyDebugger = denyMSHook(funcAddr) {
// استدعاء الدالة الأصلية مع 1337 كمعامل Int
     unsafeBitCast(originalDenyDebugger, to: FunctionType.self)(1337)
 } else {
     denyDebugger()
 }
```

### وحدة التحقق من سلامة الملفات

```Swift
// تحديد ما إذا كان التطبيق قد تم التلاعب به
if IOSSecuritySuite.amITampered([.bundleID("biz.securing.FrameworkClientApp"),
    .mobileProvision("2976c70b56e9ae1e2c8e8b231bf6b0cff12bbbd0a593f21846d9a004dd181be3"),
    .machO("IOSSecuritySuite", "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc")]).result {
    print("لقد تم التلاعب بي.")
}
else {
    print("لم يتم التلاعب بي.")
}

// التحقق يدويًا من قيمة تجزئة SHA256 لمكتبة dylib محملة
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.custom("IOSSecuritySuite")), hashValue == "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc" {
    print("لم يتم التلاعب بي.")
}
else {
    print("لقد تم التلاعب بي.")
}
 
// التحقق من قيمة تجزئة SHA256 للملف التنفيذي الرئيسي
// تلميح: يمكن لتطبيقك استرداد هذه القيمة من الخادم
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.default), hashValue == "your-application-executable-hash-value" {
    print("لم يتم التلاعب بي.")
}
else {
    print("لقد تم التلاعب بي.")
}
```

### وحدة كشف نقاط التوقف (Breakpoint)

```Swift
func denyDebugger() {
    // ضع نقطة توقف هنا
}
     
typealias FunctionType = @convention(thin) ()->()
let func_denyDebugger: FunctionType = denyDebugger   // `: FunctionType` ضروري
let func_addr = unsafeBitCast(func_denyDebugger, to: UnsafeMutableRawPointer.self)
let hasBreakpoint = IOSSecuritySuite.hasBreakpointAt(func_addr, functionSize: nil)

if hasBreakpoint {
    print("تم العثور على نقطة توقف في الدالة المحددة")
} else {
    print("لم يتم العثور على نقطة توقف في الدالة المحددة")
}
```

### وحدة كشف نقاط المراقبة (Watchpoint)

```Swift
// ضع نقطة توقف في الدالة testWatchpoint
func testWatchpoint() -> Bool{
		// lldb: watchpoint set expression ptr
    var ptr = malloc(9)
    // lldb: watchpoint set variable count
    var count = 3
    return IOSSecuritySuite.hasWatchpoint()
}
```



## اعتبارات أمنية

قبل استخدام هذه الأداة وغيرها من أدوات التحقق من أمان المنصة، يجب أن تفهم ما يلي:

* تضمين هذه الأداة في مشروعك ليس الشيء الوحيد الذي يجب عليك فعله لتحسين أمان تطبيقك! يمكنك قراءة ورقة بيضاء عامة حول أمان الأجهزة المحمولة [هنا](https://www.securing.biz/en/mobile-application-security-best-practices/index.html).
* يتم اكتشاف ما إذا كان الجهاز مكسور الحماية محليًا على الجهاز. وهذا يعني أنه يمكن تجاوز أي كاشف لكسر الحماية (حتى هذا)!
* يُعتبر كود Swift أكثر صعوبة في التلاعب به ديناميكيًا مقارنةً بـ Objective-C. نظرًا لأن هذه المكتبة كُتبت بلغة Swift النقية، يجب ألا تتعرض طرق IOSSecuritySuite لبيئة تشغيل Objective-C (مما يجعل تجاوزها أكثر صعوبة ✅). يجب أن تعلم أن المهاجم لا يزال قادرًا على استخدام MSHookFunction/MSFindSymbol لرموز Swift وتغيير تدفق تنفيذ كود Swift ديناميكيًا.

## المساهمة ❤️
نعم، من فضلك! إذا كانت لديك فكرة أفضل أو ترغب فقط في تحسين هذا المشروع، يرجى مراسلتي على [Twitter](https://twitter.com/_r3ggi) أو [LinkedIn](https://www.linkedin.com/in/wojciech-regula/). طلبات السحب (Pull requests) مرحب بها أكثر من أي وقت مضى!

### شكر خاص: 👏🏻

* [kubajakowski](https://github.com/kubajakowski) للإشارة إلى مشكلة طريقة ```canOpenURL(_:)```
* [olbartek](https://github.com/olbartek) لمراجعة الكود وطلب السحب
* [benbahrenburg](https://github.com/benbahrenburg) للتحسينات المختلفة في ISS
* [fotiDim](https://github.com/fotiDim) لإضافة مسارات ملفات جديدة للفحص
* [gcharita](https://github.com/gcharita) لإضافة دعم Swift Package Manager
* [rynaardb](https://github.com/rynaardb) لإنشاء طريقة `amIJailbrokenWithFailedChecks()`
* [undeaDD](https://github.com/undeaDD) للتحسينات المختلفة في ISS
* [fnxpt](https://github.com/fnxpt) لإضافة اكتشافات متعددة لكسر الحماية
* [TannerJin](https://github.com/TannerJin) لوحدات MSHook و RuntimeHook و SymbolHook وكشف نقاط المراقبة
* [NikoXu](https://github.com/NikoXu) لإضافة وحدة سلامة الملفات
* [hellpf](https://github.com/hellpf) لإصلاح مشكلة socket معلق
* [Ant-tree](https://github.com/Ant-tree) لتحسين مقاومة الاختراق
* [izmcm](https://github.com/izmcm) لتنفيذ طريقة `amIReverseEngineeredWithFailedChecks()`
* [sanu](https://github.com/sanu) لتقديم فحوصات ملفات جديدة
* [marsepu](https://github.com/marsepu) لطلب سحب جيد مع تحسينات جديدة
* [mkj-is](https://github.com/mkj-is) لطلب سحب يحسن أداء ISS 🚄
* [LongXiangGuo](https://github.com/LongXiangGuo) لطلب سحب يضيف بيان الخصوصية
* [Coeur](https://github.com/Coeur) لتحسينات ISS وإصلاح الأخطاء
* [Adobels](https://github.com/Adobels) لتكييف ISS مع متطلبات Apple الجديدة

## المهام المستقبلية

* [ ] بحث حول كشف Installer5 و Zebra Package Manager (بدائل Cydia)
* [ ] كاشف إخفاء كسر الحماية لـ Dopamine

## الترخيص
راجع ملف LICENSE.

## المراجع
أثناء إنشاء هذه الأداة استخدمت:

* 🔗 https://github.com/TheSwiftyCoder/JailBreak-Detection
* 🔗 https://github.com/abhinashjain/jailbreakdetection 
* 🔗 https://gist.github.com/ddrccw/8412847
* 🔗 https://gist.github.com/bugaevc/4307eaf045e4b4264d8e395b5878a63b
* 📚 "iOS Application Security" بقلم David Thiel
تنزيل الأداة