Đeo kính X-quang cho app Android: Trích API, lật tung endpoint chỉ với 1 lệnh
TL;DR
- Dịch ngược APK/JAR/AAR, trích API chỉ bằng 1 lệnh
- Không cần mã nguồn, không ngán obfuscate
- Pentest, CTF, bug bounty đều xài được
- Cài xong là chiến, không phải setup lằng nhằng
- Có cảnh báo pháp lý, dùng sai tự chịu
Tối đó, tôi nhận được file APK lạ từ một team pentest. Không source, không tài liệu, chỉ có đúng cái file nặng 80MB và deadline dí sát gáy. Đám bạn bảo: “Cứ quăng cho thằng nào rảnh, chứ ai rảnh mà ngồi grep từng dòng Java?”. Tôi cũng từng nghĩ vậy, cho đến khi gặp android-reverse-engineering-skill.
Cảm giác đầu tiên giống như vớ được kính X-quang: chỉ cần nhét file APK vào, mọi API, endpoint, token ẩn đều hiện ra rõ mồn một. Không còn cảnh ngồi lật từng class, mò từng chuỗi URL, hay đoán mò xem app gọi API nào. Đúng kiểu “vã quá thì dùng”, nhưng dùng xong thì không muốn quay lại cảnh cũ nữa.
Repo này làm gì, dành cho ai?
Một câu cho intern: “Repo này giúp bạn dịch ngược file APK/JAR/AAR để trích xuất API HTTP mà app Android sử dụng, kể cả khi code đã bị obfuscate.”
Ai nên dùng? Dev bảo mật, pentester, researcher, ai cần phân tích app Android khi không có source code. Nếu bạn chỉ làm app Android bình thường, không cần dịch ngược, thì khỏi đọc tiếp cho đỡ đau đầu.
Đập hộp: Cài xong là chiến
Cài đặt không khác gì gọi shipper giao đồ ăn:
# Cài skill từ Claude Code marketplace
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
# Hoặc clone về máy
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
Yêu cầu: Java JDK 17+, cài sẵn jadx (CLI). Khuyến nghị thêm Vineflower/Fernflower, dex2jar cho những ca khó nhằn.
Lưu ý: Một số engine (Fernflower) cần dex2jar để chuyển DEX sang JAR. Không có là dậm chân tại chỗ.
Show, Don’t Tell: 4 tình huống thực chiến
1. Dịch ngược APK để xem API
Bạn nhận file APK, muốn biết app gọi API nào? Một lệnh duy nhất:
/decompile path/to/app.apk
Kết quả: Thư mục output/sources/ chứa mã Java đã dịch ngược. Không cần đoán, không cần cầu nguyện.
2. Trích xuất endpoint, token, URL
Muốn liệt kê toàn bộ endpoint, URL, token? Dùng script có sẵn:
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
Kết quả: Một danh sách endpoint, URL, header, token. Đủ để viết lại tài liệu API cho cả app.
3. So sánh hai engine dịch ngược
App bị obfuscate, mã nguồn khó đọc? So sánh kết quả giữa Jadx và Fernflower/Vineflower:
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
Kết quả: Hai bộ mã nguồn để đối chiếu. Có khi một bên đọc được, bên kia thì chịu chết.
4. Phân tích luồng gọi hàm từ UI đến API
Muốn biết từ màn hình nào gọi đến API nào? Dùng tính năng “call flow analysis” (tham khảo tài liệu SKILL.md, call-flow-analysis.md). Không cần mò từng Activity, từng Intent nữa.
Visual: Markdy walkthrough
Ở đâu trong stack, ai nên cân nhắc?
- Works with: Claude Code, bash, Java toolchain, Linux/macOS/Windows
- Replaces: Phân tích thủ công bằng jadx, apktool, grep
- Complements: apktool, dex2jar, các tool phân tích tĩnh khác
Solo thì phân tích nhanh 1 app. Team thì pentest nhóm, chia sẻ kết quả API. Production thì tích hợp vào pipeline kiểm thử bảo mật. Cơ hội: tự động hóa kiểm tra API ẩn, tạo tài liệu API cho app không có source, phát hiện endpoint bí mật, hỗ trợ CTF, bug bounty.
Reality check: Cùi bắp nhưng được việc
- Không giải mã được code native (C/C++)
- Không bypass được mọi loại obfuscation mạnh
- Không phân tích động (runtime)
- Cần cài đủ Java, tool CLI
Dùng đúng mục đích hợp pháp, repo không chịu trách nhiệm nếu bạn nghịch dại.
Kết: Đeo kính X-quang, thấy hết ruột gan
Ngày xưa, muốn biết app Android gọi API nào, tôi phải ngồi lật từng dòng code, grep từng chuỗi URL, nhiều khi đọc xong vẫn mù tịt. Giờ chỉ cần một lệnh, mọi thứ hiện ra rõ như phim chụp X-quang. 2781 stars, không phải tự nhiên mà có. Ai còn ngồi mò tay thì tự chịu đau.
Repo: SimoneAvogadro/android-reverse-engineering-skill
License: Apache-2.0
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi dành thời gian để khám phá những repository mã nguồn mở thú vị nhất trên GitHub và trình bày chúng dưới dạng những câu chuyện dễ hiểu cho mọi người.