Bahasa Inggris | 简体中文
WBBlades adalah seperangkat alat berdasarkan penguraian file Mach-O
, termasuk deteksi satu klik untuk aplikasi (mendukung OC
dan Swift
), analisis ukuran paket (mendukung satu perpustakaan statis/perpustakaan dinamis), analisis kerusakan titik-ke-titik (berdasarkan pada log sistem, mendukung analisis tumpukan kerusakan platform Huawei dan Bugly, mendukung status yang ditandatangani dan tidak ditandatangani), ekstraksi otomatis kelas, dan kemampuan Hook berdasarkan file Mach-O. Ini terutama menggunakan analisis kode perakitan __Teks, ekstraksi arsitektur, pengupasan file DYSM, pengupasan tabel simbol, teknologi analisis file kerusakan (ips). Mendukung penguraian metode besar/metode kecil dan iOS 15 di atas tentang pemrosesan dyld_chained_Fixups. Untuk memudahkan pengguna memahami proyek WBBlades dengan cepat, kami menyediakan fitur Readme cerdas berbasis GPT.
Nama Alat | Ikhtisar Fungsi | Teknologi Terkait |
---|---|---|
Baca saya yang cerdas | Format Tanya Jawab interaktif memfasilitasi pemahaman cepat tentang proyek WBBlades dan teknologi terkait. | Obrolan GPT |
Deteksi Sekali Klik untuk Aplikasi | Deteksi kelas tidak berguna Swift & OC, deteksi sumber daya tidak berguna, dan saran pengoptimalan perampingan paket. | Pembongkaran, __ekstraksi instruksi teks, penguraian Mach-O, tabel simbol dan struktur kelas Swift di Mach-O |
Analisis Ukuran Paket | Mendeteksi ukuran sebenarnya yang ditempati oleh perpustakaan statis & dinamis dalam file .ipa. | Pengupasan arsitektur, analisis struktur perpustakaan statis |
Analisis Kecelakaan | Gunakan .app atau dYSM untuk menganalisis log kerusakan sistem, dan mendukung analisis tumpukan kerusakan pada platform Huawei dan Bugly | Penguraian file DYSM, ekstraksi tabel simbol ringan, penguraian file ips, dengan/tanpa penguraian kerusakan tabel simbol |
Kait Kelas Mach-O | Ekstrak kelas secara otomatis dari file Mach-O mana pun, lalu kaitkan. | dyld_ chained_ Perbaikan, pengikatan, rebase, dan penguraian metode besar/kecil |
Versi baru ini mengimplementasikan implementasi visual komprehensif dari rangkaian alat berdasarkan pengoperasian alat di atas berbasis baris perintah asli, dan dirancang untuk peningkatan efisiensi penelitian dan pengembangan. Selain itu, dalam analisis kerusakan yang sulit, untuk beberapa kerusakan yang tidak mudah direproduksi dan tidak dapat dikumpulkan oleh alat umum (proses aplikasi langsung dimatikan oleh sistem operasi), disediakan analisis kerusakan titik-ke-titik.
$ git clone https://github.com/wuba/WBBlades.git
$ cd WBBlades
$ pod install
Target memilih "WBBladesCrashApp".
Alat visualisasi WBBlades ditunjukkan di bawah ini. Klik tombol di area fungsi kiri, pilih alat seperti Deteksi Kelas Tidak Berguna, Analisis Ukuran Aplikasi, dll., dan operasikan sesuai dengan petunjuk pada alat tersebut, dan hasilnya akan ditampilkan ke kotak teks;
Pengenalan mendetail tentang alat visualisasi: Pengenalan mendetail tentang alat visualisasi
Target memilih "WBBlades", Kompilasi dan bangun untuk menghasilkan alat baris perintah Salin "blade" produk yang dihasilkan ke /usr/local/bin, sebagai berikut: sudo cp ${Your_BUILD_DIR}/blades /usr/local/bin
Deteksi sekali klik
$ blades -diagnose xxx.app
Deteksi sekali klik untuk kelas yang tidak berguna, sumber daya yang tidak berguna, dan sumber daya duplikat, dan sebagainya.
ObjC & Swift Deteksi Kode yang Tidak Digunakan
$ blades -unused xxx.app -from xxx.a xxx.a ....
-dari menunjukkan bahwa hanya kode yang tidak digunakan di perpustakaan statis berikut yang dianalisis. Tanpa parameter ini, defaultnya adalah semua kelas di APP.
Analisis Ukuran Aplikasi (Ukur langsung ukuran .a atau .framework setelah ditautkan)
$ blades -size xxx.a xxx.framework ....
Mendukung input jalur folder, semua perpustakaan statis di bawah folder akan dianalisis.
Pemulihan Log tanpa File dSYM (Jika file dSYM hilang, coba simbolisasi tumpukan kerusakan ObjC
, Swift
tidak didukung)
$ blades -symbol xxx.app -logPath xxx.ips
Keterangan | Mendukung | Contoh Kode |
---|---|---|
Panggilan statis kelas ObjC | ✅ | [MyClass new] |
Panggilan dinamis kelas ObjC | ✅ | NSClassFromString(@"MyClass") |
Panggilan dinamis ObjC melalui penggabungan string | NSClassFromString(@"My" + @"Class") | |
Metode pemuatan ObjC | ✅ | +load{...} |
ObjC & Swift diwarisi | ✅ | SomClass : MyClass |
ObjC & Swift menjadi properti | ✅ | @property (strong,atomic) MyClass *obj; |
Panggilan langsung kelas Swift | ✅ | MyClass.init() |
Panggilan cepat menggunakan runtime | ✅ | objc_getClass("Demo.MyClass") |
Parameter generik yang cepat | ✅ | SomeClass<MyClass>.init() |
Panggilan dinamis kelas Swfit di ObjC | ✅ | NSClassFromString("Demo.MyClass") |
Deklarasi tipe Swift di dalam container | var array:[MyClass] | |
Banyak sarang yang cepat | ✅ | class SomeClass {class MyClass {...} ...} |
Mendukung deteksi cepat ukuran perpustakaan statis yang tertaut. Tidak perlu mengkompilasi dan menautkan. Misalnya: Jika Anda ingin mengetahui seberapa besar ukuran aplikasi yang akan bertambah ketika SDK diimpor atau diperbarui, Anda dapat menggunakan blades -size
untuk memperkirakan ukurannya , tanpa perlu menghubungkan SDK untuk mengkompilasi dan menautkan dengan sukses untuk menghitung.
Jika file dSYM hilang, coba pulihkan log melalui blades -symbol
. **Misalnya, dalam pengemasan aplikasi, file dSYM dihapus setelah jangka waktu tertentu, namun file aplikasi tetap dipertahankan. Dalam hal ini, Anda dapat mempertimbangkan untuk menggunakan bilah untuk simbolisasi. **Sebelum menggunakan alat ini, perhatikan beberapa poin:
Jika aplikasi Anda adalah paket debug atau paket yang tidak menghapus tabel simbol, Anda dapat menggunakan dsymutil app -o xx.dSYM
untuk mengekstrak tabel simbol. Kemudian gunakan tabel simbol untuk melambangkan log.
Alat ini hanya mendukung ObjC, dan prinsipnya adalah menentukan fungsi crash dengan menganalisis alamat metode ObjC di Mach-O. Oleh karena itu, ini tidak cocok untuk Swfit, C, dan C++. Selain itu, alat tersebut tidak mahakuasa, dan hanya digunakan sebagai sarana teknis pelengkap darurat. Dalam situasi sehari-hari, disarankan untuk menggunakan tabel simbol untuk simbolisasi log.
Kami sangat berharap agar pengembang dapat memberikan komentar dan saran yang berharga, dan pengembang dapat memberikan masukan atas saran dan permasalahan dengan mengirimkan PR atau Issue.
Jika Anda tertarik dengan WBBlades, Anda dapat bergabung dengan grup pengembangan WBBlades dan mendiskusikan masalah teknis bersama. Silakan tambahkan akun wechat "zqlong320" atau pindai kode QR di bawah ini sebagai teman Anda dan kemudian kami akan mengundang Anda untuk bergabung dengan grup.
GitHub: https://github.com/aquynh/capstone
GitHub: https://github.com/Sunnyyoung/SYFlatButton
GitHub: https://github.com/nygard/class-dump
GitHub: https://github.com/alexrozanski/PXListView
GitHub: https://github.com/steventroughtonsmith/cartool
DWARF: https://www.prevanders.net/dwarf.html#releases
简体中文 | Bahasa inggris
WBBlades adalah perangkat Mach-O
(支持OC
dan Swift
) 、包大小分析(支持单个静态库/动态库的包大小分析)、点Bugly平台崩溃堆栈解析,支持有符号和无符号状态)、基于Mach-O的Class自动提取和Hook能力。主要利用了__TE Perangkat XT besar metode /metode kecil 解析 以及 iOS 15 hari kerja dyld_chained_fixups sistem operasi WBBlades memiliki fitur Readme dan Readme.
工具名 foto | 功能概述 | 相关技术 |
---|---|---|
智能Baca saya | 问答式互动,便于快速了解WBBlades项目以及相关技术 | GPT |
Aplikasi | Swift/OC adalah perangkat lunak yang dirancang khusus untuk pengguna Swift/OC. | 反汇编、__Text指令提取、Mach-O解析、符号表/Swift类在Mach-O中的结构 |
包大小分析 | 检测静态库/动态库在.ipa中占用的实际大小 | 架构剥离、静态库结构分析 |
崩溃解析 | 利用.app或者dYSM对系统崩溃日志解析,支持华为和Bugly平台的崩溃堆栈解析 | dYSM文件解析、轻量符号表提取、ips文件解析、有/无符号表崩溃解析 |
Kait Mach-O | 自动提取任意Mach-O中的Class并Hook | dyld_chained_fixups 、binding、rebase、 metode besar/kecil |
perusahaan asuransi kesehatan di seluruh dunia的可视化实现,开箱即用,专为研发提效而设计。另外,在疑难崩溃解析上,针对一些不易复现、且通用工具无法收集的崩溃(被操作系统直接杀死Aplikasi进程场景),提供了基于系统日志的点对点崩溃解析功能。
$ git clone https://github.com/wuba/WBBlades.git
$ cd WBBlades
$ pod install
target选择:WBBladesCrashApp
WBBlades memiliki kemampuan untuk melakukan hal yang sama dengan WBBlades. 、包大中;
可视化工具详细介绍: 可视化工具详细介绍
target选择:WBBlades,编译运行,生成命令行工具 将生成的产物blades 拷贝至 /usr/local/bin 下,具体操作如: sudo cp ${Your_BUILD_DIR}/blades /usr/local/bin
一键诊断
$ blades -diagnose xxx.app
一键检测无用类、无用资源、重复资源等
OC
& Swift
$ blades -unused xxx.app -from xxx.a xxx.a ....
-dari APP中全部类
包大小分析 (直接测算.a |.framework链接后的大小)
$ blades -size xxx.a xxx.framework ....
支持输入一个文件夹路径,输入后该文件下所有的静态库都会被分析
OC
Swift
$ blades -symbol xxx.app -logPath xxx.ips
itu | 是否支持 | 代码示例 |
---|---|---|
OC 的类的静态调用 | ✅ | [MyClass new] |
OC 的动态调用 | ✅ | NSClassFromString(@"MyClass") |
OC 字符串拼接动态调用 | NSClassFromString(@"My" + @"Class") | |
Pemuatan OC | ✅ | +load{...} |
OC & Swift 被继承 | ✅ | SomClass : MyClass |
OC & Swift 作为属性 | ✅ | @property (strong,atomic) MyClass *obj; |
Swift 类直接调用 | ✅ | MyClass.init() |
Swift 通过runtime调用 | ✅ | objc_getClass("Demo.MyClass") |
Swift 泛型参数 | ✅ | SomeClass<MyClass>.init() |
Swfit OC中动态调用 | ✅ | NSClassFromString("Demo.MyClass") |
Swift 容器中作为类型声明 | var array:[MyClass] | |
Swift 多重嵌套 | ✅ | class SomeClass {class MyClass {...} ...} |
一个静态库的链接后大小。无需编译链接。举例说明:如果你blades -size
alat SDK blades -size
SDK, ukuran perangkat SDK, dan ukuran perangkat SDK lainnya .
blades -symbol
pisau dSYM blades -symbol
恢复日志。例如某次打包,在一段时间后符号表被清除,但是保留了app文件,这种情况下可以考虑使用WBBlades进行符号化。在工具使用前应先注意几点:
dsymutil app -o xx.dSYM
来提取符号表。然后用符号表进行日志符号化。地希望开发者提出宝贵的意见和建议,开发者可以通过提交PR或者Masalah tentang Masalah。
Panduan Pengguna WBBlades menggunakan "zqlong320" di perangkat lunak "WBBlades", di perangkat lunak "WBBlades", di perangkat lain.
GitHub地址:https://github.com/aquynh/capstone
GitHub地址:https://github.com/Sunnyyoung/SYFlatButton
GitHub地址:https://github.com/nygard/class-dump
GitHub地址:https://github.com/alexrozanski/PXListView
GitHub地址:https://github.com/steventroughtonsmith/cartool
DWARF地址:https://www.prevanders.net/dwarf.html#releases
GitHub: https://github.com/nygard/class-dump