Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
aotopsy — Flutter/Dart AOT स्नैपशॉट के लिए स्थैतिक विश्लेषक — Dart VM को एम्बेड या निष्पादित किए बिना libapp.so से फ़ंक्शन नाम, क्लास पदानुक्रम, कॉल ग्राफ़ और व्यवहारिक संकेत पुनर्प्राप्त करता है। ARM64 और x86_64, Dart 2.10–3.12 का समर्थन करता है। | Kitploit
उपकरण/GitHubGitHub/bronils/aotopsy
स्थैतिक विश्लेषणमोबाइल ऐप पेंटेस्टिंगरिवर्स इंजीनियरिंगमोबाइल सुरक्षाबाइनरी विश्लेषण
GitHubbronils/aotopsy

aotopsy

Flutter/Dart AOT स्नैपशॉट के लिए स्थैतिक विश्लेषक — Dart VM को एम्बेड या निष्पादित किए बिना libapp.so से फ़ंक्शन नाम, क्लास पदानुक्रम, कॉल ग्राफ़ और व्यवहारिक संकेत पुनर्प्राप्त करता है। ARM64 और x86_64, Dart 2.10–3.12 का समर्थन करता है।

रिपॉजिटरी देखें
1741 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

AOTopsy

एक Dart AOT स्नैपशॉट विश्लेषक। libapp.so — Flutter रिलीज़ APK के अंदर संकलित Dart कोड — को फ़ंक्शन नामों, क्लास लेआउट, कॉल ग्राफ़, व्यवहारिक संकेतों, और पठनीय स्यूडोकोड में बदल देता है। कोई Dart VM नहीं, कोई SDK संकलन नहीं, कोई रनटाइम फ़ॉलबैक नहीं।

फ़ॉर्क सूचना: AOTopsy, Anthony Zboralski द्वारा unflutter का एक फ़ॉर्क है, जिसे x86_64 समर्थन, एक नेटिव डीकंपाइलर, संपूर्ण-प्रोग्राम टाइप अनुमान, Frida स्क्रिप्ट जनरेशन, और व्यापक दस्तावेज़ीकरण के साथ विस्तारित किया गया है। मूल स्नैपशॉट पार्सर, क्लस्टर डीसेरियलाइज़र, ARM64 डिसअसेंबली पाइपलाइन, और Ghidra/IDA एकीकरण का सारा श्रेय मूल लेखक को जाता है।

यह क्या पुनर्प्राप्त करता है

आउटपुटयह क्या है
फ़ंक्शन नामप्रत्येक संकलित फ़ंक्शन के लिए मूल Dart नाम
क्लास संरचनाएँफ़ील्ड नाम, बाइट ऑफ़सेट, इनहेरिटेंस श्रृंखला
कॉल ग्राफ़प्रोवेनेंस के साथ प्रत्यक्ष (BL) और अप्रत्यक्ष (BLR/dispatch) कॉल किनारे
स्ट्रिंग संदर्भकौन से फ़ंक्शन ऑब्जेक्ट पूल से कौन सी स्ट्रिंग लिटरल लोड करते हैं
व्यवहारिक संकेतCrypto, network, gambling, SIM, location, WebView, blockchain कीवर्ड वर्गीकरण
स्यूडोकोडARM64 या x86_64 मशीन कोड से आर्किटेक्चर-तटस्थ डीकंपाइल्ड आउटपुट

ARM64 और x86_64 समर्थन करता है। Dart 2.10 से 3.12 तक कवर करता है।

त्वरित आरंभ

root@kitploit:~
make build
./aotopsy libapp.so                    # full pipeline
./aotopsy doctor libapp.so             # quick diagnostic
./aotopsy _debug decompile-native --lib libapp.so --find MyClass  # find a function

जब आपके पास एक कच्चा APK हो और पता न हो कि कहाँ से शुरू करें, तो चरण-दर-चरण पद्धति के लिए WORKFLOW.md देखें।

यह कैसे काम करता है

AOTopsy, Dart AOT स्नैपशॉट को एक नियतात्मक बाइनरी व्याकरण के रूप में मानता है। सही बाधाओं (ELF संरचना, स्नैपशॉट मैजिक, वर्जन हैश, CID तालिका, क्लस्टर एन्कोडिंग) को देखते हुए प्रत्येक बाइट की एक ही सही व्याख्या होती है। पार्सर तब तक बाधाओं को लागू करता है जब तक कि केवल एक व्याख्या शेष न रह जाए — कोई ह्यूरिस्टिक्स नहीं, कोई अनुमान नहीं।

पाइपलाइन चरणों में चलती है, प्रत्येक बाइट्स से संरचित डेटा तक का शुद्ध फ़ंक्शन है:

root@kitploit:~
flowchart TD
    A[libapp.so] --> B[ELF parse]
    B --> C[snapshot region extraction]
    C --> D[version detection]
    D --> E[cluster alloc<br/>object census]
    E --> F[cluster fill<br/>field values, names, strings]
    F --> G[instructions table<br/>code ranges, stub boundaries]
    G --> H{architecture?}
    H -->|ARM64| I[ARM64 disassembly]
    H -->|x86_64| J[x86_64 disassembly]
    I --> K[CFG + call edges<br/>register provenance]
    J --> K
    K --> L[type inference<br/>BLR receiver type resolution]
    L --> M[signal classification<br/>behavioral keyword matching]
    M --> N[JSONL + HTML + DOT<br/>pseudocode output]

दो स्वतंत्र बैकएंड समान फ्रंट हाफ (ELF से क्लस्टर फिल तक) साझा करते हैं, फिर आर्किटेक्चर के अनुसार विभाजित हो जाते हैं: ARM64 के लिए internal/disasm, x86_64 के लिए internal/disasm/x86.go। डीकंपाइलर (internal/decompiler) एकीकृत IR के माध्यम से दोनों आर्किटेक्चर संभालता है।

root@kitploit:~
flowchart LR
    subgraph "Shared front half"
        A[elfx] --> B[snapshot]
        B --> C[cluster]
    end
    subgraph "ARM64 backend"
        C --> D1[disasm ARM64]
        D1 --> E1[callgraph]
        E1 --> F1[signal]
    end
    subgraph "x86_64 backend"
        C --> D2[disasm x86_64]
        D2 --> E2[callgraph]
        E2 --> F2[signal]
    end
    subgraph "Decompiler (both archs)"
        C --> G[decompiler IR]
        G --> H[pseudocode]
    end

Blutter के साथ तुलना

root@kitploit:~
flowchart LR
    subgraph Blutter
        direction TB
        B1[libapp.so] --> B2[Compile matching<br/>Dart SDK]
        B2 --> B3[Embed Dart VM]
        B3 --> B4[Deserialize via<br/>VM internal APIs]
        B4 --> B5[Perfect fidelity]
    end
    subgraph AOTopsy
        direction TB
        A1[libapp.so] --> A2[Parse binary format<br/>directly]
        A2 --> A3[No VM, no SDK]
        A3 --> A4[Version-specific<br/>format modeling]
        A4 --> A5[Portability + speed]
    end

Blutter स्नैपशॉट को अपने स्वयं के कोड पथों के माध्यम से डीसेरियलाइज़ करने के लिए Dart VM एम्बेड करता है। उत्तम निष्ठा (fidelity), लेकिन प्रत्येक लक्षित संस्करण के लिए मेल खाता Dart SDK संकलित करने की आवश्यकता होती है।

AOTopsy बाइनरी प्रारूप को सीधे पार्स करता है। कोई VM नहीं, कोई SDK नहीं। किंतु इसकी कीमत: Dart संस्करणों में हर प्रारूप परिवर्तन को स्पष्ट रूप से मॉडल किया जाना चाहिए। इसे स्वचालित रूप से संभालने के लिए कोई रनटाइम नहीं है।

कमांड्स

पूर्ण पाइपलाइन

root@kitploit:~
aotopsy libapp.so              # disasm + call edges + signal + metadata (ARM64: + Ghidra/IDA)
aotopsy signal libapp.so       # same, skip metadata
aotopsy libapp.so --graph      # also build call graph DOT files

फ़्लैग्स: --out <dir> (डिफ़ॉल्ट: <basename>.aotopsy/), --quiet, --strict, --max-steps <n>, --k <n> (सिग्नल संदर्भ गहराई, डिफ़ॉल्ट 2)।

निदान

root@kitploit:~
aotopsy doctor libapp.so       # Dart version, pointer size, support status, build features
aotopsy find-libapp --apk app.apk  # locate libapp.so inside an APK

डीकंपाइलर (ARM64 + x86_64, Ghidra/IDA की आवश्यकता नहीं)

root@kitploit:~
aotopsy _debug decompile-native --lib libapp.so --find MyClass         # locate by name
aotopsy _debug decompile-native --lib libapp.so --func 0x1a92728       # one function at a VA
aotopsy _debug decompile-native --lib libapp.so --from-main --out out/ # reachability from app entry
aotopsy _debug decompile-native --lib libapp.so --all --filter MyClass # bulk, filtered

चेतावनी: वास्तविक ऐप पर छोटे --max के बिना --all के लिए ~64GB RAM की आवश्यकता हो सकती है। --find/--func/--from-main को प्राथमिकता दें।

Ghidra / IDA (केवल ARM64)

root@kitploit:~
aotopsy ghidra libapp.so        # headless Ghidra with metadata injection
aotopsy ida libapp.so           # headless IDA via idalib

दोनों x86_64 इनपुट अस्वीकार करते हैं। x86_64 स्यूडोकोड के लिए decompile-native का उपयोग करें।

Frida स्क्रिप्ट जनरेशन

root@kitploit:~
aotopsy _debug decompile-native --lib libapp.so --func 0x1a92728 --gen-frida --gen-frida-out hooks.js
frida -U -f com.example.app -l hooks.js --no-pause

पूरी गाइड के लिए FRIDA.md देखें।

क्रॉस-रेफ़रेंसिंग और ट्रेसिंग

root@kitploit:~
aotopsy _debug strings --lib libapp.so --find "X-Signature" --xref   # which function loads this string?
aotopsy _debug ffi-trace --lib libapp.so --filter MyClass            # dart:ffi call sites
aotopsy _debug dispatch-table --lib libapp.so --filter MyClass       # dispatch table entries
aotopsy _debug fingerprint --lib libapp.so                           # build-id and version markers
aotopsy _debug funcdiff --old old.so --new new.so                    # function set diff
aotopsy _debug symbolmap --stripped lib.so --unstripped debug.so     # resolve stripped targets

कॉर्पस उपकरण

root@kitploit:~
aotopsy inventory --dir samples/                    # catalog APKs
aotopsy parity --samples samples/ --out out/        # cross-version parse report
aotopsy _debug thr-audit -lib libapp.so -out thr.jsonl  # THR access scan

आउटपुट आर्टिफैक्ट्स

पैकेज लेआउट

root@kitploit:~
cmd/aotopsy/          CLI entry point and command handlers
internal/
  elfx/               ELF validation and symbol extraction
  snapshot/           Snapshot region extraction, version profiles
  dartfmt/            Dart VM variable-length integer encoding
  cluster/            Two-phase snapshot deserialization (alloc + fill)
  disasm/             ARM64 + x86_64 decode, CFG, call-edge provenance
  callgraph/          Lattice graph builders for DOT rendering
  signal/             Behavioral string classification
  render/             HTML/DOT/SVG visualization
  output/             JSONL serialization
  decompiler/         Dart-AOT pseudocode decompiler (both architectures)
  typetrack/          Whole-program type inference for BLR resolution
  fingerprint/        Build-id and version marker identification
  funcdiff/           Function-set diffing between builds
  symbolmap/          Stripped-vs-unstripped symbol resolution
  ffitrace/           Static dart:ffi call-site tracing
  strxref/            String-to-function cross-referencing
  strutil/            Shared string utilities
  pipeline/           Pipeline orchestration and name resolution
tools/                Standalone utilities (THR table extractor)
ghidra_scripts/       Ghidra integration (Python)
ida_scripts/          IDA integration (Python)

प्रत्येक पैकेज की गहन जानकारी के लिए ARCHITECTURE.md देखें।

बिल्ड

Go 1.25+ की आवश्यकता है।

root@kitploit:~
make build      # build ./aotopsy
make install    # install to ~/.aotopsy/bin
make test       # run tests

एकीकरण परीक्षण नमूना बाइनरी ढूँढने के लिए पर्यावरण चर (AOTOPSY_TEST_SAMPLE_*) का उपयोग करते हैं — यदि सेट न हों तो वे स्वचालित रूप से स्किप हो जाते हैं।

सीमाएँ

  • केवल AOT। कोई JIT समर्थन नहीं।
  • Ghidra/IDA डीकंपिलेशन केवल ARM64 के लिए है। x86_64 को स्पष्ट त्रुटि के साथ अस्वीकार कर दिया जाता है — इसके बजाय decompile-native का उपयोग करें।
  • --all डीकंपिलेशन होस्ट को क्रैश कर सकता है। एक वास्तविक पूर्ण-आकार वाले ऐप को असीमित --all के लिए ~64GB RAM की आवश्यकता होती है। लक्षित मोड (--find, --func, --from-main) का उपयोग करें या --max से सीमित करें।
  • वर्चुअल डिस्पैच --from-main पहुंच के लिए अदृश्य है। विजेट लाइफसाइकिल कॉलबैक Flutter के फ्रेमवर्क डिस्पैच से गुजरते हैं, सीधे कॉल निर्देशों से नहीं। क्लास-टच ह्यूरिस्टिक कुछ को पुनर्प्राप्त करता है, लेकिन यह एक अति-अनुमान है। शेष के लिए Frida का उपयोग करें।
  • Dart के हर संस्करण परिवर्तन को मॉडल किया जाना चाहिए। प्रारूप परिवर्तनों को स्वचालित रूप से संभालने के लिए कोई VM नहीं है।

लाइसेंस

BSD-3-Clause. CID तालिकाएँ, THR फ़ील्ड ऑफ़सेट, और स्टब नाम Dart SDK (जो BSD-3-Clause है) से व्युत्पन्न हैं। LICENSE और NOTICE देखें।

टूल डाउनलोड करें
फ़ाइलसामग्री
functions.jsonlप्रति फ़ंक्शन नाम, पता, आकार, स्वामी, पैरामीटर संख्या
call_edges.jsonlहल किए गए लक्ष्यों और प्रोवेनेंस के साथ BL/BLR किनारे
classes.jsonlप्रति क्लास फ़ील्ड नाम, ऑफ़सेट, इंस्टेंस आकार
string_refs.jsonlऑब्जेक्ट पूल लोड से स्ट्रिंग संदर्भ
signal.htmlसंदर्भ ग्राफ़ के साथ व्यवहारिक संकेत रिपोर्ट
flutter_meta.jsonGhidra/IDA के लिए एकीकृत मेटाडेटा (केवल ARM64)
asm/*.txtप्रति फ़ंक्शन एनोटेटेड डिसअसेंबली
cfg/*.dotप्रति-फ़ंक्शन CFG (--graph के साथ)