Nếu bạn biết tên tệp đã cài đặt của apk (trên một số thiết bị có thể là myapp-1.apk hoặc myapp-2.apk chứ không chỉ myapp.apk), bạn có thể truy cập trực tiếp như một người dùng thông thường bao gồm một adb chạy như trên một thiết bị được bảo mật, vì vậy bạn sẽ có thể adb kéo nó. Nhưng nếu bạn không biết tên apk đã cài đặt , bạn không thể duyệt thư mục / data / app mà không cần root hoặc Aid_system.
Có thể đáng để đoán tên đã cài đặt - thử đơn giản, thử với -1.apk và -2.apk, v.v.
Có thể có một cách khác: Tôi tin rằng những điều sau đây sẽ hoạt động trên một thiết bị được bảo mật nhưng không có sẵn trước mặt tôi để kiểm tra nó.
EDIT: Ý tưởng mới để xác định tên tệp APK chính xác
1) adb pull /data/system/packages.xml
2) Xem qua nó cho mục nhập codePath của ứng dụng của bạn
3) adb kéo mà
EDIT: Liên quan đến ý tưởng cũ bên dưới, Matthew phát hiện ra rằng trong khi các tệp theo quy trình dưới / Proc đã đọc quyền trên thiết bị được bảo mật, chúng sẽ trống khi được đọc bởi một uid không có đặc quyền khác với chủ sở hữu của chúng. Vì vậy, điều này sẽ không làm việc.
1) Tải ứng dụng của bạn. Bạn cũng sẽ cần một máy có adb.
2) loại
adb shell ps
và tìm dòng có tên ứng dụng của bạn:
app_1 11959 907 112984 27580 ffffffff afd0c5bc S com.clevername.myapp
3) lấy số trong cột thứ hai là id quá trình và xem bản đồ bộ nhớ ảo, trong trường hợp này tôi sẽ nhập
adb shell cat /proc/11959/maps
và tìm kiếm một dòng nơi nó đã ánh xạ tệp apk của riêng mình vào bộ nhớ
43e9c000-43ea3000 r--s 001f4000 b3:06 15393 /data/app/com.clevername.myapp-1.apk
4) Đó là tên tập tin bạn cần để kéo adb
adb pull /data/app/com.clevername.myapp-1.apk .
Việc kiểm tra các quyền của thư mục trong / Proc cho thấy điều này sẽ hoạt động đối với người dùng không có đặc quyền, tôi xin lỗi nếu không. Nếu bạn quen thuộc với việc sử dụng 'grep', bạn có thể sử dụng điều đó để tránh quét đầu ra theo cách thủ công.
Phụ lục: Tôi không thực sự chắc chắn câu chuyện trên các ứng dụng được cài đặt vào thẻ SD là gì.
adb shell cat /proc/####/maps
không có gì trả lại