Debug và bypass SSL pinning của app Android trên giả lập
Soi traffic API của một app Android có SSL pinning bằng LDPlayer 9 và HTTP Toolkit: bật root, kết nối ADB, tự động bypass SSL, và xử lý các lớp bảo vệ nâng cao.
Mục lục
Bài này hướng dẫn "soi" (inspect) request/response API của một ứng dụng Android, kể cả app production có SSL pinning, bằng cách kết hợp giả lập LDPlayer 9 (chạy Android 9, có sẵn quyền root) và HTTP Toolkit (đóng vai MITM proxy kiêm tự động tiêm mã bypass SSL).
Chỉ áp dụng cho app bạn sở hữu hoặc được cho phép kiểm thử rõ ràng. Chặn và đọc traffic của app hay của người khác khi chưa được phép là hành vi vi phạm pháp luật.
Yêu cầu
- Máy tính chạy Windows.
- Giả lập LDPlayer 9 (chạy Android 9), vì có sẵn quyền root và dễ cấu hình kết nối.
- HTTP Toolkit, đóng vai MITM proxy và tự động tiêm mã bypass SSL.
Tóm tắt thao tác nhanh
Nếu đã setup xong một lần, các lần sau chỉ cần làm theo trình tự:
- Mở LDPlayer.
- Mở terminal (CMD/PowerShell) và chạy:
adb connect 127.0.0.1:5555 - Mở HTTP Toolkit.
- Chọn kết nối Android 9 emulator.
- Cấp quyền root/VPN trên LDPlayer (nếu được hỏi).
- Mở app cần soi và bắt đầu đọc traffic.
Các bước thực hiện
Bước 1: Chuẩn bị giả lập (bật root)
- Tải và cài giả lập LDPlayer 9.
- Bật "Quyền root" và "ADB Debugging" trên LDPlayer:
- Mở LDPlayer, click biểu tượng Cài đặt (bánh răng) ở thanh công cụ bên phải (hoặc góc trên phải).
- Chọn tab Cài đặt khác (Other Settings).
- Tìm Quyền root (Root permission), đổi từ Tắt (Disable) sang Bật (Enable).
- Ở mục ADB Debugging (ngay dưới hoặc cùng bảng), chọn Open Local Connection (hoặc Enable) để mở cổng ADB local.
- Nhấn Lưu cài đặt (Save settings).
- BẮT BUỘC chọn Khởi động lại ngay (Restart now) để có hiệu lực.
- Đăng nhập Google Play, tải và cài app bạn muốn debug vào giả lập.
Bước 2: Kết nối qua HTTP Toolkit và khắc phục lỗi
Thường HTTP Toolkit tự chọn dạng "Android Device via ADB", nhưng nếu nó không nhận thiết bị (do khác phiên bản ADB hoặc sai port):
-
Mở LDPlayer và đợi vào màn hình chính.
-
Mở CMD/PowerShell trên Windows.
-
Kết nối thủ công tới cổng ADB của giả lập (mặc định cho một instance là
5555):adb connect 127.0.0.1:5555Nếu báo lỗi
adb is not recognized, hãy trỏ trực tiếp đến thư mục LDPlayer. Trong PowerShell bạn phải dùng.\adb.exe:cd C:\LDPlayer\LDPlayer9 .\adb.exe connect 127.0.0.1:5555 -
Nếu thấy
connected to 127.0.0.1:5555là thành công. Nếu ADB bị treo, gõadb kill-serverrồiadb start-servervà thử lại lệnh connect.
Bước 3: Cấp quyền và chặn HTTPS bằng HTTP Toolkit
- Mở HTTP Toolkit trên máy tính; lúc này nó đã thấy thiết bị qua ADB.
- Ở danh sách thiết bị, bấm nút cấu hình "Android 9 emulator" (màu xanh dương) thay vì các thiết lập máy cũ còn trong cache (ví dụ Samsung S10/S22...).
- QUAN TRỌNG: ngay khi bấm chọn ở máy tính, nhìn ngay vào màn hình giả lập LDPlayer.
- HTTP Toolkit sẽ tự push, cài lên giả lập và mở app.
- Giả lập hiện thông báo hỏi quyền Superuser (root) -> bấm Cho phép (Allow) hoặc "Forever".
- Tiếp theo, app trên giả lập cảnh báo cấu hình Thiết lập VPN (để route toàn bộ traffic qua nó) -> bấm OK.
- Khi HTTP Toolkit trên máy tính chuyển sang biểu tượng Connected màu xanh lá là thành công.
Bước 4: Tự động bypass SSL và quan sát
- Mở app mục tiêu trên giả lập.
- Proxy của HTTP Toolkit (nhúng sẵn cơ chế Frida) tự nhận biết và chọc vào app để đánh lừa/bypass hàm kiểm tra SSL của hệ thống.
- Quay lại giao diện chính HTTP Toolkit trên máy tính, bạn sẽ thấy đầy đủ traffic:
- Request headers (token, cookie, user-agent...).
- Body JSON gửi đi.
- Raw response nhận từ server.
- Query.
Giải quyết các lỗi nâng cao
App "production chuẩn" đôi khi có thêm các lớp bảo vệ đặc biệt. Nếu vẫn gặp lỗi, thử các cách nâng cao:
- Chặn giả lập (emulator detection) hoặc check root sâu: app crash ngay khi mở do phát hiện root. Cần dùng thiết bị thật, hoặc cài Magisk trên LDPlayer kèm module Hide/Zygisk/Denylist để bypass phát hiện này.
- Mã hóa payload (application layer encryption): server nhận request OK nhưng HTTP Toolkit chỉ thấy ký tự mã hóa lộn xộn (app mã hóa RSA/AES đè trên HTTPS). Phương án là dùng JADX decompile APK để tìm khóa, hoặc tự viết script Frida hook thẳng để bắt data raw.
- Certificate pinning tùy biến (OkHttp3/Retrofit): proxy báo đỏ, kêu chứng chỉ sai. Cần dùng script Universal Pinning Bypass qua Frida-Tools thay vì cơ chế auto của HTTP Toolkit.
Xử lý sự cố
| Triệu chứng | Cách xử lý |
|---|---|
adb is not recognized | Trỏ tới thư mục LDPlayer và dùng .\adb.exe connect ... trong PowerShell |
| ADB treo, không connect được | adb kill-server rồi adb start-server, thử connect lại |
| App crash ngay khi mở | App phát hiện root/giả lập - dùng thiết bị thật hoặc Magisk + Hide/Zygisk/Denylist |
| Traffic hiện ký tự mã hóa lộn xộn | App mã hóa tầng ứng dụng - decompile bằng JADX hoặc hook bằng Frida |
| Proxy báo chứng chỉ sai | Certificate pinning tùy biến - dùng script Universal Pinning Bypass qua Frida |