
apk-info v1.0.12
APK पूर्ण-सुविधा संपन्न पार्सर
apk-info
एक पूर्ण-विशेषताओं वाला apk पार्सर।
विशेषताएँ
- एक मैलवेयर-अनुकूल ज़िप निकालने वाला। बेहतरीन लेख
BadPackतकनीक के बारे में; - एक मैलवेयर-अनुकूल axml और arsc निकालने वाला;
- पूर्ण AXML (Android बाइनरी XML) कार्यान्वयन;
- पूर्ण ARSC (Android संसाधन) कार्यान्वयन;
APK Signature Block 42में निहित जानकारी निकालने के लिए समर्थन:- APK सिग्नेचर स्कीम v1;
- APK सिग्नेचर स्कीम v2;
- APK सिग्नेचर स्कीम v3;
- APK सिग्नेचर स्कीम v3.1;
- Stamp Block v1 & v2;
- Apk चैनल ब्लॉक;
- Packer NG v2;
- Vasdolly v2
- Google Play Frosting (योजनाएँ हैं, लेकिन इसके बारे में बहुत कम जानकारी है);
- Android OS के अनुसार MainActivity का सही निष्कर्षण;
- python 3.10+ के लिए टाइपिंग सहित बाइंडिंग्स - अब और
# type: ignoreनहीं; - और हाँ, एक तेज़ पार्सर - 🙃
आरंभ करना
क्ली
स्थापना
cargo install apk-info-cli
सहायता
APK फ़ाइलों का निरीक्षण और निष्कर्षण करने के लिए एक कमांड-लाइन उपकरण
Usage: apk-info [COMMAND]
आदेश:
show apk फ़ाइल के बारे में बुनियादी जानकारी दिखाएँ
extract apk फ़ाइलों को ज़िप आर्काइव के रूप में अनपैक करें [उपनाम: x]
axml बाइनरी AndroidManifest.xml को पढ़ें और सुंदर-प्रिंट करें
completion शेल पूर्णता उत्पन्न करें
help यह संदेश या दिए गए उप-आदेश(ों) की सहायता प्रिंट करें
Options:
-h, --help सहायता प्रिंट करें
-V, --version संस्करण प्रिंट करें
पायथन
स्थापना
uv pip install apk-info
APK के बारे में बुनियादी जानकारी प्राप्त करें
from apk_info import APK
apk = APK("./path-to-file.apk")
package_name = apk.get_package_name()
main_activities = apk.get_main_activities()
min_sdk = apk.get_min_sdk_version()
print(f"Package Name: {package_name}")
print(f"Minimal SDK: {min_sdk}")
if not main_activities:
print("apk is not launchable!")
exit()
print(f"Main Activity: {package_name}/{main_activities[0]}")
सिग्नेचर के बारे में जानकारी प्राप्त करें
import sys
from apk_info import APK, Signature
if len(sys.argv) < 2:
print(f"usage: {sys.argv[0]} <apk>")
sys.exit(1)
file = sys.argv[1]
apk = APK(file)
signatures = apk.get_signatures()
for signature in signatures:
match signature:
case Signature.V1() | Signature.V2() | Signature.V3() | Signature.V31():
for cert in signature.certificates:
print(f"{cert.subject=} {cert.issuer=} {cert.valid_from=} {cert.valid_until=}")
case Signature.ApkChannelBlock():
print(f"got apk channel block: {signature.value}")
case _:
print(f"oh, cool, library added some new feature - {signature}")
प्रदर्शन विश्लेषण
पर्यावरण:
- OS: macOS Tahoe 26.0.1 arm64
- CPU: Apple M3 Pro (12) @ 4.06 GHz
- फ़ाइल से सभी उपलब्ध सिग्नेचर निकालें;
- पैकेज का नाम निकालें;
- न्यूनतम SDK संस्करण निकालें;
- सभी मुख्य गतिविधियों की सूची प्राप्त करें;
- एप्लिकेशन का नाम प्राप्त करें;
apk-info लाइब्रेरी:
- Build -
release-lto; - पायथन बाइंडिंग्स (ईमानदार तुलना);
परीक्षण मामला (स्वच्छ संग्रह):
- 152 apk फ़ाइलें;
- कुल आकार - 20GB;
- लॉगिंग मोड - चेतावनी;
| # | apk-info | androguard |
|---|---|---|
| 1 | 0.98s user 4.32s system 80% cpu 6.584 total | 57.39s user 4.88s system 97% cpu 1:03.85 total |
| 2 | 0.96s user 4.23s system 79% cpu 6.486 total | 57.98s user 5.04s system 97% cpu 1:04.80 total |
| 3 | 0.95s user 4.15s system 79% cpu 6.422 total | 55.56s user 4.48s system 97% cpu 1:01.55 total |
परीक्षण मामला (मैलवेयर संग्रह):
- 3084 apk फ़ाइलें;
- कुल आकार - 23GB;
- लॉगिंग मोड - चेतावनी;
[!IMPORTANT] इस सेट में बहुत सारे दुर्भावनापूर्ण नमूने हैं जिन्हें androguard आसानी से पार्स नहीं कर सकता।
| # | apk-info | androguard |
|---|---|---|
| 1 | 2.49s user 4.74s system 73% cpu 9.840 total | 141.29s user 6.86s system 98% cpu 2:31.09 total |
| 2 | 2.50s user 4.77s system 75% cpu 9.641 total | 138.04s user 6.32s system 97% cpu 2:27.33 total |
| 3 | 2.49s user 4.78s system 75% cpu 9.650 total | 139.33s user 6.65s system 98% cpu 2:28.87 total |
औसतन, गति लाभ लगभग 10 गुना है।
मुख्य लाभ यह है कि apk-info androguard की तुलना में कहीं अधिक दुर्भावनापूर्ण फ़ाइलों को पार्स कर सकता है।
सामान्य प्रश्न
- क्यों न केवल androguard का उपयोग करें?
मेरे लगभग सभी प्रोजेक्ट ऐसी चीज़ों से पैदा हुए हैं जिनका उपयोग करना असुविधाजनक है। Androguard अपने आप में एक महान उपकरण है, लेकिन इसे बनाए रखना संभव नहीं है (मेरी राय में) और यह उत्पादन-तैयार कोड के लिए उपयुक्त नहीं है। यह बड़ी संख्या में फ़ाइलों का विश्लेषण करने के लिए भी उपयुक्त नहीं है क्योंकि सभी तर्क बहुत अनुकूलित तरीके से नहीं लिखे गए हैं।
- मैं apk को संशोधित करना चाहता हूँ, मैं इस लाइब्रेरी का उपयोग करके यह कैसे करूँ?
लाइब्रेरी केवल रीड-ओनली मोड के लिए डिज़ाइन की गई है, क्योंकि मुझे एक अच्छे उपकरण की आवश्यकता है जिसके साथ मैं apk से आसानी से और जल्दी से जानकारी निकाल सकूं। बाहर कई अन्य अच्छे उपकरण उपलब्ध हैं।