Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
iblessing — iblessing هي مجموعة أدوات استغلال أمنية لنظام iOS، تتضمن بشكل رئيسي جمع معلومات التطبيق، التحليل الثابت والتحليل الديناميكي. يمكن استخدامها في الهندسة العكسية، تحليل الثنائيات واستكشاف الثغرات. | Kitploit
أدوات/GitHubGitHub/soulghost/iblessing
التحليل الثابتالتحليل الديناميكي (عزل)أمان iOSتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةأمن الجوالتحليل الملفات الثنائية
GitHubsoulghost/iblessing

iblessing

iblessing هي مجموعة أدوات استغلال أمنية لنظام iOS، تتضمن بشكل رئيسي جمع معلومات التطبيق، التحليل الثابت والتحليل الديناميكي. يمكن استخدامها في الهندسة العكسية، تحليل الثنائيات واستكشاف الثغرات.

عرض المستودع
68495منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

☠️ ██╗██████╗ ██╗ ███████╗███████╗███████╗██╗███╗ ██╗ ██████╗ ██║██╔══██╗██║ ██╔════╝██╔════╝██╔════╝██║████╗ ██║██╔════╝ ██║██████╔╝██║ █████╗ ███████╗███████╗██║██╔██╗ ██║██║ ███╗ ██║██╔══██╗██║ ██╔══╝ ╚════██║╚════██║██║██║╚██╗██║██║ ██║ ██║██████╔╝███████╗███████╗███████║███████║██║██║ ╚████║╚██████╔╝ ╚═╝╚═════╝ ╚══════╝╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝

Build Status Releases

iblessing

  • iblessing هي مجموعة أدوات لاختبار أمان iOS، وتشمل بشكل أساسي جمع معلومات التطبيق، التحليل الثابت والتحليل الديناميكي.
  • iblessing مبنية على unicorn engine، capstone engine وkeystone engine.

الميزات

  • 🔥 عبر المنصات: تم اختبارها على macOS و Ubuntu.

  • استخراج المعلومات الثابتة لتطبيقات iOS، بما في ذلك البيانات الوصفية، الروابط العميقة، عناوين URL، إلخ.

  • محلل Mach-O ومحاكي ربط رموز dyld

  • تحقيق وتحليل فئات Objective-C

  • ماسحات ضوئية تقوم بالتحليل الديناميكي لرمز تجميع arm64 وتجد معلومات أساسية أو أسطح هجوم

  • ماسحات ضوئية تستخدم unicorn لمحاكاة جزئية لتنفيذ كود Mach-O arm64 وإيجاد بعض الميزات

  • مولدات يمكنها توفير معالجة ثانوية لتقرير الماسح لبدء خادم استعلام، أو إنشاء سكريبت لـ IDA

  • ماسح xrefs فائق لـ objc_msgSend 😄

    • محاكاة طرق objc والفرعية (مثل blocks) لتوليد xrefs مشابه لـ flare-emu
    • كشف غلاف دالة objc وتوليد ida usercall
    • تحليل الدوال الفرعية لـ objc_msgSend
    • xrefs من block objc إلى objc_msgSend في الوسائط وقائمة الالتقاط
    • تنسيق تقرير يشمل json، إلخ.
    • تحليل فئات وطرق Swift
    • متابعة الفروع والاستدعاءات
    • إجراءات محاكاة (SimProcedures) للرموز الخارجية
  • اختبارات

  • دعم ماسحات Android

  • سجلات التشخيص

  • بنية تحتية أكثر مرونة للماسحات لإضافات جديدة

الدعم

في حال كنت بحاجة إلى دعم بخصوص iblessing أو أي شيء مرتبط بها، يمكنك:

  • إنشاء issue وتقديم المعلومات اللازمة
  • الاتصال بـ Sou1gh0st على Twitter
  • إرسال بريد إلكتروني إلى xiuyutong1994#163.com
  • إرسال بريد إلكتروني إلى xiuyutong1994#gmail.com

سجل التغييرات

  • 2021.06.27 - بنية جديدة (برنامج شل + مكتبة أساسية) ودعم الإضافات (نسخة تجريبية)
  • 2021.01.23 - إضافة تواقيع الطرق للمكتبات النظامية (Foundation، UIKit) مما عزز القدرات التحليلية (https://github.com/Soulghost/iblessing/wiki/System-Libraries-(Foundation,-UIKit)-Simple-SimProcedure)
  • 2020.11.30 - معلومات انعكاس Objc (https://github.com/Soulghost/iblessing/wiki/Objc-Reflection-Info)
  • 2020.10.24 - لقطات استدعاء Objc (https://github.com/Soulghost/iblessing/wiki/Objc-Call-Snapshots)
  • 2020.10.04 - دعم قائمة فئات Objc
  • 2020.09.28 - دعم المكتبات الثابتة وملفات Mach-O السمينة
  • 2020.09.22 - حالة البرنامج الأساسية والتفرع الشرطي
  • 2020.09.04 - التحقق من الطرق، الاستنتاج، ودعم objc_msgSendSuper
  • 2020.08.11 - أصبحت iblessing أداة عبر المنصات، تدعم كلاً من macOS و Linux 😆
  • 2020.08.08 - تحسين ماسح xrefs لـ objc_msgSend، إضافة دعم xrefs فرعية بما في ذلك وسائط block وقائمة الالتقاط
  • 2020.07.30 - تحسين ماسح غلاف الرموز، وإضافة سكريبتات IDA لإعادة تسمية غلاف الرموز وتعديل النموذج الأولي
  • 2020.07.21 - الإصدار الأول

البدء

⚠️⚠️⚠️ تتطلب الماسحات الثنائية 12 جيجابايت من مساحة الذاكرة الافتراضية لتحميل ملف mach-o، لكنها لن تستهلك الكثير. لذا يجب التأكد من أن الذاكرة الفعلية لجهاز العمل أكبر من 12 جيجابايت، أو التأكد من أن الذاكرة الافتراضية القابلة للتخصيص أكبر من 12 جيجابايت عبر آلية ملف المبادلة.

  1. يمكنك تنزيل النسخة الثنائية المُطلقة مسبقاً من iblessing والاستمتاع بها.
  2. قم بتشغيل chmod +x للملف الثنائي.
  3. لمزيد من الدروس التعليمية، يُرجى مراجعة التوثيق والمساعدة أدناه.

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

  • الإصدارات https://github.com/Soulghost/iblessing/releases

كل شيء في ملف ثنائي واحد

  • iblessing-darwin-all/iblessing-linux

برنامج شل + Dylib

  • فك ضغط iblessing-framework.tar.gz
  • iblessing-darwin/iblessing-linux + libiblessing-core.dylib/libiblessing-core.so

تطوير أدواتك الخاصة بناءً على إطار عمل iblessing

  • فك ضغط iblessing-framework.tar.gz
  • ملفك الثنائي + libiblessing-core.dylib/libiblessing-core.so + include/iblessing-core
  • نموذج كود: iblessing-core/otool.cpp

كيفية البناء

CMake

  • المنصة: macOS، Linux

لبدء تجميع iblessing، يُرجى اتباع الخطوات أدناه:``` git clone --recursive -j4 https://github.com/Soulghost/iblessing cd iblessing ./compile-cmake.sh

root@kitploit:~
## اختصارات
- [المفاهيم الأساسية](https://github.com/Soulghost/iblessing#basic-concepts)
- الماسحات الضوئية
  - [مسح معلومات التطبيق](https://github.com/Soulghost/iblessing#scan-for-appinfos) ⚠️ غير متاح حاليًا على لينكس
  - [مسح المراجع المتقاطعة للفئات](https://github.com/Soulghost/iblessing#scan-for-class-xrefs)
  - [مسح جميع المراجع المتقاطعة لـ objc_msgSend](https://github.com/Soulghost/iblessing#scan-for-all-objc_msgsend-xrefs)
  - [مسح أغلفة الرموز البسيطة](https://github.com/Soulghost/iblessing/blob/features/anti_wrapper/README.md#scan-for-symbol-wrappers)

- المولدات
  - [إنشاء خادم استعلام المراجع المتقاطعة لـ objc_msgSend](https://github.com/Soulghost/iblessing#generate-objc_msgsend-xrefs-query-server)
  - [إنشاء نصوص IDA للمراجع المتقاطعة لـ objc_msgSend](https://github.com/Soulghost/iblessing#generate-ida-scripts-for-objc_msgsend-xrefs)
  - [إنشاء نصوص IDA لإعادة تسمية دوال objc الوظيفية وتعديل النموذج الأولي](https://github.com/Soulghost/iblessing/blob/features/anti_wrapper/README.md#genereate-ida-script-for-objc-runtime-function-rename-and-prototype-modification)

***إذا كان هناك أي أخطاء، يمكنك تجميع capstone و unicorn يدويًا، ثم سحب libcapstone.a و libunicorn.a إلى مجلد vendor/libs الخاص بمشروع Xcode.***

إذا تم تشغيل كل هذا بنجاح، يمكنك العثور على الملف الثنائي في مجلد build:```
> ls ./build
iblessing

> file ./build/iblessing
./build/iblessing: Mach-O 64-bit executable x86_64

الوثائق والمساعدة

معاينة```

$ iblessing -h

root@kitploit:~
       ☠️
       ██╗██████╗ ██╗     ███████╗███████╗███████╗██╗███╗   ██╗ ██████╗
       ██║██╔══██╗██║     ██╔════╝██╔════╝██╔════╝██║████╗  ██║██╔════╝
       ██║██████╔╝██║     █████╗  ███████╗███████╗██║██╔██╗ ██║██║  ███╗
       ██║██╔══██╗██║     ██╔══╝  ╚════██║╚════██║██║██║╚██╗██║██║   ██║
       ██║██████╔╝███████╗███████╗███████║███████║██║██║ ╚████║╚██████╔╝
       ╚═╝╚═════╝ ╚══════╝╚══════╝╚══════╝╚══════╝╚═╝╚═╝  ╚═══╝ ╚═════╝

[] iblessing iOS Security Exploiting Toolkit Beta 0.1.1 (http://blog.asm.im) [] Author: Soulghost (高级页面仔) @ (https://github.com/Soulghost)

Usage: iblessing [options...] Options: -m, --mode mode selection: * scan: use scanner * generator: use generator -i, --identifier choose module by identifier: * : use specific scanner * : use specific generator -f, --file input file path -o, --output output file path -l, --list list available scanners -d, --data extra data -h, --help Shows this page

root@kitploit:~
## المفاهيم الأساسية
### الماسح الضوئي
الماسح الضوئي هو مكون يُستخدم لإخراج تقرير التحليل من خلال التحليل الثابت والديناميكي للملفات الثنائية، على سبيل المثال، الماسح الضوئي objc-msg-xref يمكنه تحليل معظم مراجع objc_msgSend بشكل ديناميكي.```
[*] Scanner List:
    - app-info: extract app infos
    - objc-class-xref: scan for class xrefs
    - objc-msg-xref: generate objc_msgSend xrefs record
    - predicate: scan for NSPredicate xrefs and sql injection surfaces
    - symbol-wrapper: detect symbol wrappers

المولد

المولد هو مكون يقوم بمعالجة ثانوية للتقرير الذي يولده الماسح الضوئي، على سبيل المثال، يمكنه إنشاء نصوص IDA بناءً على تقرير المراجع المتقاطعة الصادر عن الماسح الضوئي objc-msg-xref.``` [*] Generator List: - ida-objc-msg-xref: generator ida scripts to add objc_msgSend xrefs from objc-msg-xref scanner's report - objc-msg-xref-server: server to query objc-msg xrefs - objc-msg-xref-statistic: statistics among objc-msg-send reports

root@kitploit:~
## الاستخدام الأساسي
### مسح AppInfos
⚠️ **نظرًا لأن بعض الاعتماد على Cocoa لم يتم إزالته (مثل محلل bplist)، فهو غير متوفر حاليًا على Linux.**```
> iblessing -m scan -i app-info -f <path-to-app-bundle>

لنأخذ WeChat كمثال:```

iblessing -m scan -i app-info -f WeChat.app [] set output path to /opt/one-btn/tmp/apps/WeChat/Payload [] input file is WeChat.app [] start App Info Scanner [+] find default plist file Info.plist! [] find version info: Name: 微信(WeChat) Version: 7.0.14(18E226) ExecutableName: WeChat [] Bundle Identifier: com.tencent.xin [] the app allows HTTP requests without exception domains! [+] find app deeplinks |-- wechat:// |-- weixin:// |-- fb290293790992170:// |-- weixinapp:// |-- prefs:// |-- wexinVideoAPI:// |-- QQ41C152CF:// |-- wx703:// |-- weixinULAPI:// [] find app callout whitelist |-- qqnews:// |-- weixinbeta:// |-- qqnewshd:// |-- qqmail:// |-- whatsapp:// |-- wxwork:// |-- wxworklocal:// |-- wxcphonebook:// |-- mttbrowser:// |-- mqqapi:// |-- mqzonev2:// |-- qqmusic:// |-- tenvideo2:// ... [+] find 507403 string literals in binary [] process with string literals, this maybe take some time [+] find self deeplinks URLs: |-- weixin://opennativeurl/devicerankview |-- weixin://dl/offlinepay/?appid=%@ |-- weixin://opennativeurl/rankmyhomepage ... [+] find other deeplinks URLs: |-- wxpay://f2f/f2fdetail |-- file://%@?lang=%@&fontRatio=%.2f&scene=%u&version=%u&type=%llu&%@=%d&qqFaceFolderPath=%@&platform=iOS&netType=%@&query=%@&searchId=%@&isHomePage=%d&isWeAppMore=%d&subType=%u&extParams=%@&%@=%@&%@=%@ ... [*] write report to path /opt/one-btn/tmp/apps/WeChat/Payload/WeChat.app_info.iblessing.txt

ls -alh -rw-r--r--@ 1 soulghost wheel 29K Jul 23 14:01 WeChat.app_info.iblessing.txt

root@kitploit:~
### مسح لـ Class XREFs
***ملاحظة: ARM64 Binaries Only***```
iblessing -m scan -i objc-class-xref -f <path-to-binary> -d 'classes=<classname_to_scan>,<classname_to_scan>,...'

INPUT:```

restore-symbol WeChat -o WeChat.restored iblessing -m scan -i objc-class-xref -f WeChat.restored -d 'classes=NSPredicate' [] set output path to /opt/one-btn/tmp/apps/WeChat/Payload [] input file is WeChat [+] detect mach-o header 64 [+] detect litten-endian [] start Objc Class Xref Scanner [] try to find OBJC_CLASS$_NSPredicate [] Step 1. locate class refs [+] find OBJC_CLASS$_NSPredicate at 0x108eb81d8 [] Step 2. find __TEXT,__text [+] find __TEXT,__text at 0x4000 [] Step 3. scan in __text [] start disassembler at 0x100004000 [] \ 0x1002e1a50/0x1069d9874 (2.71%) [+] find OBJC_CLASS$_NSPredicate ref at 0x1002e1a54 ... [] Step 4. symbolicate ref addresses [+] OBJC_CLASS$_NSPredicate -| [+] find OBJC_CLASS$_NSPredicate ref -[WCWatchNotificationMgr addYoCount:contact:type:] at 0x1002e1a54 [+] find OBJC_CLASS$_NSPredicate ref -[NotificationActionsMgr handleSendMsgResp:] at 0x1003e0e28 [+] find OBJC_CLASS$_NSPredicate ref -[FLEXClassesTableViewController searchBar:textDidChange:] at 0x1004a090c [+] find OBJC_CLASS$_NSPredicate ref +[GameCenterUtil parameterValueForKey:fromQueryItems:] at 0x1005a823c [+] find OBJC_CLASS$_NSPredicate ref +[GameCenterUtil getNavigationBarColorForUrl:defaultColor:] at 0x1005a8cd8 ...

root@kitploit:~
### مسح لجميع objc_msgSend XREFs
***ملاحظة: ARM64 ثنائيات فقط***

#### الوضع البسيط```
iblessing -m scan -i objc-msg-xref -f <path-to-binary>

وضع مضاد التغليف```

iblessing -m scan -i objc-msg-xref -f WeChat -d 'antiWrapper=1'

root@kitploit:~
سيقوم وضع مكافحة الالتفاف بكشف أدوات تغليف objc_msgSend وإجراء تحويلات، مثل:```arm
; __int64 __usercall objc_msgSend_X0_X22_X20@<X0>(void *obj@<X0>, const char *sel@<X22>, id anyObj@<X20>, ...)
objc_msgSend_X0_X22_X20:
MOV             X1, X22
MOV             X2, X20
B               objc_msgSend

مثال استخدام:```

iblessing -m scan -i objc-msg-xref -f WeChat -d 'antiWrapper=1' [] set output path to /opt/one-btn/tmp/apps/WeChat/Payload [] input file is WeChat [+] detect mach-o header 64 [+] detect litten-endian

[] !!! Notice: enter anti-wrapper mode, start anti-wrapper scanner [] start Symbol Wrapper Scanner [] try to find wrappers for_objc_msgSend [] Step1. find __TEXT,__text [+] find __TEXT,__text at 0x100004000 [+] mapping text segment 0x100000000 ~ 0x107cb0000 to unicorn engine [] Step 2. scan in __text [] start disassembler at 0x100004000 [] / 0x1069d986c/0x1069d9874 (100.00%) [] reach to end of __text, stop [+] anti-wrapper finished

[] start ObjcMethodXrefScanner Exploit Scanner [] Step 1. realize all app classes [] realize classes 14631/14631 (100.00%) [+] get 667318 methods to analyze [] Step 2. dyld load non-lazy symbols [] Step 3. track all calls [] progress: 667318 / 667318 (100.00%) [] Step 4. serialize call chains to file [] saved to /opt/one-btn/tmp/apps/WeChat/Payload/WeChat_method-xrefs.iblessing.txt

ls -alh WeChat_method-xrefs.iblessing.txt -rw-r--r-- 1 soulghost wheel 63M Jul 23 14:46 WeChat_method-xrefs.iblessing.txt

head WeChat_method-xrefs.iblessing.txt iblessing methodchains,ver:0.2; chainId,sel,prefix,className,methodName,prevMethods,nextMethods 182360,0x1008a0ab8,+[A8KeyControl initialize],+,A8KeyControl,initialize,[],[4429#0x1008a1064@4376#0x1008a1050@13769#0x1008a10d0] 182343,0x1008a0ad0,+[A8KeyControl_QueryStringTransferCookie initialize],+,A8KeyControl_QueryStringTransferCookie,initialize,[],[4429#0x1008a1064@4376#0x1008a1050@13769#0x1008a10d0] 145393,0x1008c2220,+[A8KeyResultCookieWriter initWithDomain:weakWebView:andCompleteBlock:],+,A8KeyResultCookieWriter,initWithDomain:weakWebView:andCompleteBlock:,[145386#0x10036367c],[] 145396,0x1008c3df8,+[A8KeyResultCookieWriter setA8KeyCookieExpireTime:],+,A8KeyResultCookieWriter,setA8KeyCookieExpireTime:,[145386#0x1003636e8],[] 145397,0x1008c27e8,+[A8KeyResultCookieWriter writeCompleteMarkerCookieValue:forKey:],+,A8KeyResultCookieWriter,writeCompleteMarkerCookieValue:forKey:,[145386#0x10036380c],[] 253456,0x0,+[AAOperationReq init],+,AAOperationReq,init,[253455#0x1039a9d30],[] 253457,0x0,+[AAOperationReq setBaseRequest:],+,AAOperationReq,setBaseRequest:,[253455#0x1039a9d8c],[] 186847,0x0,+[AAOperationRes length],+,AAOperationRes,length,[186845#0x10342aa54],[]

root@kitploit:~
يمكن استخدام التقرير من قبل المولدات، لنبدأ الآن.

### إنشاء خادم استعلام objc_msgSend Xrefs
يمكنك بدء خادم من خلال مولد iblessing's objc-msg-xref-server للاستعلام عن جميع xrefs objc_msgSend.```
iblessing -m generator -i objc-msg-xref-server -f <path-to-report-generated-by-objc-msg-xref-scanner>

تحديد المضيف والمنفذ المستمعين

عنوان الاستماع الافتراضي هو 127.0.0.1:2345، ويمكنك تحديده باستخدام الخيار -d.``` iblessing -m generator -i objc-msg-xref-server -f WeChat_method-xrefs.iblessing.txt -d 'host=0.0.0.0;port=12345'

root@kitploit:~
#### مثال الاستخدام
***ملاحظة: يعتمد objc-msg-xref على unicorn، ولتسريع التحليل، لا نتابع أي مكالمات، وبالتالي تكون النتيجة مفقودة جزئيًا.***```
> iblessing -m generator -i objc-msg-xref-server -f WeChat_method-xrefs.iblessing.txt
[*] set output path to /opt/one-btn/tmp/apps/WeChat/Payload
[*] input file is WeChat_method-xrefs.iblessing.txt
[*] start ObjcMsgXREFServerGenerator
  [*] load method-chain db for version iblessing methodchains,ver:0.2;
  [*] table keys chainId,sel,prefix,className,methodName,prevMethods,nextMethods
	[-] bad line 104467,0x0,+[TPLock P,	],+,TPLock,P,	,[104426#0x1043b9904],[]
	[-] bad line 114905,0x0,?[0x108ce1578 (,],?,0x108ce1578,(,,[114900#0x1011e8c68],[]
	[-] bad line 104464,0x0,?[? P,	],?,?,P,	,[104426#0x1043b98a8],[]
	[-] bad line 139234,0x0,?[? X
	[-] bad line ],?,?,X
	[-] bad line ,[139205#0x1013c222c],[]
	[+] load storage from disk succeeded!
  [*] listening on http://127.0.0.1:2345

بعد ذلك يمكنك فتح http://127.0.0.1:2345 باستخدام متصفح للاستعلام عن أي مراجع objc_msgSend xrefs تريدها:

إنشاء سكريبتات IDA لـ objc_msgSend xrefs

يمكنك إضافة مراجع objc_msgSend xrefs المولدة من ماسح objc-msg-xref لجعل رحلة الهندسة العكسية الخاصة بك أسرع وأكثر راحة.``` iblessing -m generator -i ida-objc-msg-xref -f

root@kitploit:~
#### مثال استخدام
***ملاحظة: يعتمد objc-msg-xref على unicorn، لتسريع التحليل، لا نتابع أي استدعاءات، لذا تكون النتيجة مفقودة جزئيًا.***```
> iblessing -m generator -i ida-objc-msg-xref -f WeChat_method-xrefs.iblessing.txt
[*] set output path to /opt/one-btn/tmp/apps/WeChat/Payload
[*] input file is WeChat_method-xrefs.iblessing.txt
[*] start IDAObjMsgXREFGenerator
  [*] load method-chain db for version iblessing methodchains,ver:0.2;
  [*] table keys chainId,sel,prefix,className,methodName,prevMethods,nextMethods
	[-] bad line 104467,0x0,+[TPLock P,	],+,TPLock,P,	,[104426#0x1043b9904],[]
	[-] bad line 114905,0x0,?[0x108ce1578 (,],?,0x108ce1578,(,,[114900#0x1011e8c68],[]
	[-] bad line 104464,0x0,?[? P,	],?,?,P,	,[104426#0x1043b98a8],[]
	[-] bad line 139234,0x0,?[? X
	[-] bad line ],?,?,X
	[-] bad line ,[139205#0x1013c222c],[]
	 [+] load storage from disk succeeded!
  [*] Generating XREF Scripts ...
  [*] saved to /opt/one-btn/tmp/apps/WeChat/Payload/WeChat_method-xrefs.iblessing.txt_ida_objc_msg_xrefs.iblessing.py
  
> ls -alh WeChat_method-xrefs.iblessing.txt_ida_objc_msg_xrefs.iblessing.py
-rw-r--r--  1 soulghost  wheel    23M Jul 23 16:16 WeChat_method-xrefs.iblessing.txt_ida_objc_msg_xrefs.iblessing.py

> head WeChat_method-xrefs.iblessing.txt_ida_objc_msg_xrefs.iblessing.py
def add_objc_xrefs():
    ida_xref.add_cref(0x10036367c, 0x1008c2220, XREF_USER)
    ida_xref.add_cref(0x1003636e8, 0x1008c3df8, XREF_USER)
    ida_xref.add_cref(0x10036380c, 0x1008c27e8, XREF_USER)
    ida_xref.add_cref(0x103add16c, 0x700006e187a8, XREF_USER)
    ida_xref.add_cref(0x102cbee0c, 0x101143ee8, XREF_USER)
    ida_xref.add_cref(0x10085c92c, 0x1005e9360, XREF_USER)
    ida_xref.add_cref(0x10085c8bc, 0x1005e9274, XREF_USER)
    ida_xref.add_cref(0x10085c8dc, 0x1005e92bc, XREF_USER)
    ida_xref.add_cref(0x10085c8cc, 0x1005e9298, XREF_USER)

بعد ذلك، افتح IDA الخاص بك -> ملف -> Script File وقم بتحميل السكريبت، قد تستغرق هذه الخطوة وقتًا طويلاً. وعند الانتهاء، يمكنك العثور على العديد من xrefs لطريقة objc method:

مسح أغلفة الرموز

قد يحتوي ملف Mach-O على أغلفة متعددة لرموز مكتبة ديناميكية مستوردة شائعة الاستخدام، مثل:```arm __text:00000001003842D8 sub_1003842CC ; CODE XREF: -[BDARVLynxTracker eventV3:params:adExtraData:]+168↑p __text:00000001003842D8 ; -[BDARVLynxTracker eventV3:params:adExtraData:]+214↑p ... __text:00000001003842D8 MOV X1, X27 __text:00000001003842DC MOV X2, X19 __text:00000001003842E0 B objc_msgSend

root@kitploit:~
يمكننا تحويل الغلاف باستخدام usercall:```arm
__text:00000001003842CC ; id __usercall objc_msgSend_61@<X0>(id@<X23>, const char *@<X28>, ...)
__text:00000001003842CC _objc_msgSend_61                        ; CODE XREF: -[BDARVLynxTracker eventV3:params:adExtraData:]+2CC↑p
__text:00000001003842CC                                         ; -[BDARVLynxTracker eventV3:params:adExtraData:]+320↑p ...
__text:00000001003842CC                 MOV             X0, X23
__text:00000001003842D0                 MOV             X1, X28
__text:00000001003842D4                 B               objc_msgSend

يمكن للماسح إنشاء تقرير لتسجيل جميع الـ wrappers، ثم يمكنك استخدام مولد ida-symbol-wrapper-naming لإنشاء سكريبتات IDA وتنفيذ إعادة تسمية هذا الـ wrapper وتغيير النموذج الأولي.

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

iblessing -m scan -i symbol-wrapper -f -d 'symbols=_objc_msgSend,_objc_retain,_objc_release' iblessing -m scan -i symbol-wrapper -f -d 'symbols=*'

root@kitploit:~
#### مثال استخدام
سنأخذ TikTok China كمثال:```
> iblessing -m scan -i symbol-wrapper -f /opt/one-btn/tmp/apps/抖音短视频/Payload/Aweme -d 'symbols=*'
[*] set output path to /Users/soulghost/Desktop/git/iblessing-public/iblessing/build/Debug
[*] input file is /opt/one-btn/tmp/apps/抖音短视频/Payload/Aweme
[+] detect mach-o header 64
[+] detect litten-endian
[*] start Symbol Wrapper Scanner
  [*] try to find wrappers for_objc_autoreleaseReturnValue, _objc_msgSend, _objc_release, _objc_releaseAndReturn, _objc_retain, _objc_retainAutorelease, _objc_retainAutoreleaseAndReturn, _objc_retainAutoreleaseReturnValue, _objc_retainAutoreleasedReturnValue
  [*] Step1. find __TEXT,__text
	[+] find __TEXT,__text at 0x100004000
	[+] mapping text segment 0x100000000 ~ 0x106da0000 to unicorn engine
  [*] Step 2. scan in __text
	[*] start disassembler at 0x100004000
	[*] / 0x106b68a54/0x106b68a58 (100.00%)
	[*] reach to end of __text, stop

  [*] Step 3. serialize wrapper graph to file
	[*] saved to /Users/soulghost/Desktop/git/iblessing-public/iblessing/build/Debug/Aweme_wrapper-graph.iblessing.txt

> head Aweme_wrapper-graph.iblessing.txt
iblessing symbol-wrappers,ver:0.1;
wrapperId;address;name;prototype
0;0x100022190;_objc_retainAutoreleasedReturnValue;id __usercall f@<x0>(id@<x0>)
1;0x100022198;_objc_retainAutoreleasedReturnValue;id __usercall f@<x0>(id@<x0>)
2;0x1000221a0;_objc_release;id __usercall f@<x0>(id@<x22>)
3;0x1000221a8;_objc_msgSend;id __usercall f@<x0>(id@<x0>, const char*@<x20>, ...)
4;0x100022448;_objc_release;id __usercall f@<x0>(id@<x21>)
5;0x10009c19c;_objc_autoreleaseReturnValue;id __usercall f@<x0>(id@<x0>)
6;0x1000b6f94;_objc_msgSend;id __usercall f@<x0>(id@<x0>, const char*@<x1>, ...)
7;0x100100248;_objc_autoreleaseReturnValue;id __usercall f@<x0>(id@<x0>)

بعد ذلك، يمكننا إنشاء سكريبتات IDA من هذا التقرير.

Genereate IDA Script for Objc Runtime Function Rename and Prototype Modification```

iblessing -m generator -i ida-symbol-wrapper-naming -f

root@kitploit:~
#### مثال استخدام```
> iblessing -m generator -i ida-symbol-wrapper-naming -f Aweme_wrapper-graph.iblessing.txt
[*] set output path to /Users/soulghost/Desktop/git/iblessing-public/iblessing/build/Debug
[*] input file is Aweme_wrapper-graph.iblessing.txt
[*] start IDAObjMsgXREFGenerator
  [*] load symbol-wrappers db for version iblessing symbol-wrappers,ver:0.1;
  [*] table keys wrapperId;address;name;prototype
  [*] Generating Naming Scripts ...
  [*] saved to /Users/soulghost/Desktop/git/iblessing-public/iblessing/build/Debug/Aweme_wrapper-graph.iblessing.txt_ida_symbol_wrapper_naming.iblessing.py
  
> head Aweme_wrapper-graph.iblessing.txt_ida_symbol_wrapper_naming.iblessing.py
def namingWrappers():
    idc.set_name(0x100022190, '_objc_retainAutoreleasedReturnValue', ida_name.SN_FORCE)
    idc.apply_type(0x100022190, idc.parse_decl('id __usercall f@<x0>(id@<x0>)', idc.PT_SILENT))
    idc.set_name(0x100022198, '_objc_retainAutoreleasedReturnValue', ida_name.SN_FORCE)
    idc.apply_type(0x100022198, idc.parse_decl('id __usercall f@<x0>(id@<x0>)', idc.PT_SILENT))
    idc.set_name(0x1000221a0, '_objc_release', ida_name.SN_FORCE)
    idc.apply_type(0x1000221a0, idc.parse_decl('id __usercall f@<x0>(id@<x22>)', idc.PT_SILENT))
    idc.set_name(0x1000221a8, '_objc_msgSend', ida_name.SN_FORCE)
    idc.apply_type(0x1000221a8, idc.parse_decl('id __usercall f@<x0>(id@<x0>, const char*@<x20>, ...)', idc.PT_SILENT))
    idc.set_name(0x100022448, '_objc_release', ida_name.SN_FORCE)

بعد ذلك، افتح IDA الخاص بك -> ملف -> ملف السكريبت وقم بتحميل السكريبت، قد تستغرق هذه الخطوة وقتًا طويلاً. وعند الانتهاء، يمكنك ملاحظة بعض التغييرات في الكود المُفكك:

⬇️ ⬇️ ⬇️

يُتبع

تنزيل الأداة