adb pull / data ล้มเหลว


19

ฉันรูทอุปกรณ์ของฉัน HTC Evo Design 4G และฉันพยายามที่จะดึงข้อมูล / ข้อมูล adb และมันบอกว่า "0 ไฟล์ดึง 0 ไฟล์ข้าม 0"

ฉันสามารถดึง /System/build.prop ได้ ฉันจะดึงโฟลเดอร์รูทได้อย่างไร

ขอบคุณ iua


1
คุณวิ่งadb rootก่อนหรือเปล่า?
onik

ใช่ แต่ราก adb ไม่สำเร็จ ไม่ได้รับอนุญาต แต่ฉันสามารถ adb เปลือก su มันให้ #
3734225

คำตอบ:


20

ไฟล์และไดเรกทอรีด้านล่างนี้/data/dataได้รับการปกป้องจาก "ผู้ใช้โดยเฉลี่ย" ดังนั้นคุณจะไม่สามารถ "ดึง" ได้เว้นแต่ว่า ADB daemon กำลังทำงานในโหมดรูท นอกเหนือจากไฟล์ที่คุณอ้างถึง ( /system/buildpropอย่างน้อยสามารถอ่านได้โดยแอพทั้งหมด) โฟลเดอร์ด้านล่างนี้/data/dataคือ "มองไม่เห็น" (ยกเว้นสำหรับรูท) ดังนั้นจึงไม่สามารถอ่านได้

เพื่อให้สามารถใช้งานadb pullได้คุณต้องทำให้ ADB daemon ของคุณทำงานในโหมดรูทก่อน adb rootคำสั่งง่าย ๆอาจทำเช่นนั้น - แต่อุปกรณ์ส่วนใหญ่จะปฏิเสธที่จะทำทั้งนี้ขึ้นอยู่กับอุปกรณ์ ในกรณีดังกล่าวคุณสามารถใช้ adbd ที่ไม่ปลอดภัยของchainfire : ติดตั้งแอพนี้บนอุปกรณ์ของคุณ, เริ่มใช้งานที่นั่น, และเปลี่ยนเป็นโหมด "ไม่ปลอดภัย" ด้วยตนเอง ตอนนี้pullควรประสบความสำเร็จ

หมายเหตุ: เรียกว่า "ไม่ปลอดภัย" เนื่องจากการทำงานadbdในฐานะรูทจะทำให้ทุกคนมีคอมพิวเตอร์และสายเคเบิล USB เข้าถึงทุกสิ่งบนอุปกรณ์ของคุณ ในกรณีที่คุณสงสัย


Thamk คุณ! นอกเหนือจากการไม่ปลอดภัย chainfire adbd ฉันสามารถตั้งค่าสถานะ ro.secure ในการสร้างคุณสมบัติได้หรือไม่ ฉันสามารถใช้ adb shell setprop ro.secure 0 ได้หรือไม่
3734225

ฉันไม่เคยลองสิ่งนั้นและไม่รู้เลยว่าธงนั้นมีไว้เพื่ออะไรฉันจึงไม่สามารถบอกได้ (Btw: หากคุณพบคำตอบที่เป็นประโยชน์คุณสามารถ"upvote" มันได้ (ทางทิศตะวันออกจะพูดว่า "ขอบคุณ") - หรือ"ยอมรับ"เมื่อแก้ไขปัญหาของเรา;)
Izzy

1
adbd ที่ไม่ปลอดภัยทำงานให้ฉัน :)
user3734225

6

หากโทรศัพท์ของคุณรูทเครื่องจะมีสามวิธีในการแก้ไข คนแรกคือการใช้ADBD ที่ไม่ปลอดภัย

อีกอันหนึ่งคือการย้ายไปยังโฟลเดอร์อื่นที่มีรูทแล้วดึงจากที่นั่น:

$ adb shell

shell@android:/ $ su
root@android:/ # mkdir /sdcard/data
root@android:/ # cp /data/data/* /sdcard/data
root@android:/ # exit
shell@android:/ $ exit 

$ adb pull /sdcard/data .
$ adb shell

shell@android:/ $ rm -r /sdcard/data/
shell@android:/ $ exit

ฉันคิดว่าคุณสามารถสร้างสคริปต์เช่น:

echo 'echo "mkdir /sdcard/data; cp $1/* /sdcard/data; exit" | su; exit' | adb shell
adb pull /sdcard/data .
echo 'rm -r /sdcard/data; exit' | adb shell

และบันทึกไว้ที่ใดที่หนึ่ง

ในที่สุดตัวเลือกที่สามคือchmod -R 1777 /data/dataแต่มันไม่ปลอดภัยมากขึ้นดังนั้นมันจึงท้อแท้อย่างมาก


ฉันขอถามสิ่งที่$1/*อ้างอิงได้หรือไม่ มันเป็น/data/dataไดเรกทอรีหรือไม่?
Emen

คำตอบที่หยั่งรู้
Dan Bradbury

5

คุณไม่สามารถดึงโฟลเดอร์ข้อมูลโดยตรงเนื่องจาก adb ไม่มีสิทธิ์การเข้าถึงรายชื่อไฟล์ หากคุณต้องการดึงโฟลเดอร์ / data คุณสามารถทำได้ผ่านการกู้คืน ([กู้คืนแบบกำหนดเอง, CWM / TWRP] เรียกใช้ adb ในขณะที่อุปกรณ์อยู่ในโหมดการกู้คืนหวังว่าเป็นการกู้คืนแบบกำหนดเอง) หรือในฐานะ root ให้คัดลอก / ข้อมูลไปยังไดเรกทอรีอื่น (sdcard) และดึงมันออกมาจากตรงนั้น


ขอขอบคุณ. แต่ฉันสามารถดึงไฟล์ build.prop ในโฟลเดอร์ / System adb shell su แล้วฉันสามารถแสดงรายการไฟล์ในโฟลเดอร์ราก ฉันอ่านคุณสมบัติการสร้าง ro.secure build ของ Google ในการค้นหาของ Google เป็น 0 จะช่วยดึง / ข้อมูล มันเป็นเรื่องจริงเหรอ? ถ้าเป็นเช่นนั้นมีวิธีที่จะทำมัน?
3734225

คุณสามารถดึง build.prop เนื่องจาก / ระบบมีรายชื่อการอนุญาต คุณสามารถเปลี่ยน ro.secure = 0 ใน boot.img ของคุณ แต่นั่นเป็นขั้นตอนที่ซับซ้อนจริงๆ การติดตั้งการกู้คืนแบบกำหนดเองทำได้ง่ายกว่าและทำได้จากที่นั่น
Hiemanshu Sharma

ขอบคุณมาก! จุดประสงค์หลักของความพยายามของฉันคือการใช้งานแอพพลิเคชั่นที่เกี่ยวข้องกับนิติเวชเป็นโครงการปีสุดท้ายของมหาวิทยาลัย ฉันกลัวจริงๆการติดตั้งการกู้คืนแบบกำหนดเองจะลบล้างหลักฐานจากอุปกรณ์ คุณมีความคิดเกี่ยวกับเรื่องนี้ไหม
user3734225

การเพิ่มความคิดเห็นก่อนหน้าของฉัน - การใช้ adb shell setprop คืออะไร? ฉันไม่สามารถใช้มันในกรณีนี้ได้หรือไม่?
user3734225

1
โปรแกรมกู้คืนข้อมูลทางนิติเวชที่อาศัยโทรศัพท์ที่ถูกรูทและการเปิดใช้การดีบักไม่ได้มีประโยชน์มากนัก
Dan Hulme

1

ส่วนที่ 1: เตรียมไฟล์ทั้งหมดให้พร้อมสำหรับ ADB PULL

นี่คือสิ่งที่ใช้ได้กับฉัน: * ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ ADB เวอร์ชันล่าสุด

  • เริ่มเซสชัน ADB:

'อินโฟกัส $ adb shell'

  • รับสิทธิ์ SU หนึ่งครั้งในเซสชัน ADB ทั้งหมดที่คุณต้องทำคือพิมพ์ "su" เช่น:

'shell @ m1: / $ su'

จากนั้นคุณจะสังเกตเห็นว่า "$" กลายเป็น "#" เช่น:

'root @ m1: / #'

- แฮชให้คุณรู้ว่าคุณอยู่ในโหมด SU

  • สร้างโฟลเดอร์บน / sdcard ของอุปกรณ์

'root @ m1: / # mkdir / sdcard / data /'

* มุ่งหน้าไปที่รูทของไฟล์ที่คุณต้องการคัดลอก - สำหรับฉันเช่นฉันต้องการสำรองข้อมูล / คัดลอกแอพของฉันและเก็บไว้ในคอมพิวเตอร์ของฉันดังนั้น:

'root @ m1: / data / app #'

  • ตัวอย่างของสิ่งที่ฉันได้ถ้าฉัน "ls" โฟลเดอร์นั้น:

'root @ m1: / data / app # ls
com.abtnprojects.ambatana-1
com.acr.rootfilemanager-1
com.amazon.kindle-1
com.android.chrome-1
com.android.mms-1
com.android หยอดเหรียญ-2'

  • เพื่อคัดลอกซ้ำด้วยคำสั่ง ADB "cp" ใช้ตัวเลือก "-R" และเนื่องจากฉันต้องการคัดลอกทุกอย่างในนั้นฉันใช้ wildcard "*" ดังนี้:

'root @ m1: / data / app # cp -R * / / sdcard / data /'

  • เมื่อคุณกด Enter หากไฟล์มีขนาดใหญ่พอสมควรมันจะต้องใช้เวลาสักครู่ในการคัดลอกไฟล์ดังนั้นเคอร์เซอร์จะกะพริบอย่างเฉยเมยสักหน่อยมันจะดูเหมือนว่าไม่ทำอะไรเลย แต่มันเป็น! มันกำลังคัดลอกไฟล์ดังนั้นอย่าตกใจ! และอย่าหยุดกระบวนการ !!! - หากคุณต้องการเพียงเปิดเซสชั่นเชลล์ ADB อีกครั้งและมุ่งหน้าไปยังโฟลเดอร์ที่คุณกำลังถ่ายโอนไฟล์และทำการตรวจสอบ "ls" และคุณควรเห็นว่าขณะนี้โฟลเดอร์ว่างกำลังเติมข้อมูลไฟล์ เมื่อการถ่ายโอนเสร็จสิ้นคุณจะได้รับกระสุนคืน

  • ตรงไปที่ "sdcard / data" และตรวจสอบให้แน่ใจว่าทุกอย่างถูกคัดลอก "ls":

'root @ m1: / sdcard / data # ls
com.abtnprojects.ambatana-1
com.acr.rootfilemanager-1
com.amazon.kindle-1
com.android.chrome-1
com.android.mms-1'

ส่วนที่ II: ADB PULL

  • ในตอนนี้หากคุณยังไม่ได้สร้างโฟลเดอร์บนเครื่องเป้าหมายให้ทำเช่นนั้น ฉันสร้างโฟลเดอร์ชื่อ "แอพ" อย่างสะดวก

  • ทีนี้มาลองใช้ ADB PULL แบบเรียกซ้ำเพื่อเรียกคืนไฟล์ทั้งหมดในคราวเดียว: - ตรวจสอบให้แน่ใจว่าคุณออกจากระบบของเซสชัน ADB เนื่องจากเราอยู่ในโหมด SU เราจะต้องออกจากสองครั้ง:

'root @ m1: / sdcard / data # exit'
'shell @ m1: / $ exit'

  • จากเซสชันเชลล์ปกติเรียกใช้ "adb pull" คุณไม่จำเป็นต้องใช้ตัวเลือก "-a" ฉันใช้มันเพื่อรักษาความสมบูรณ์ของไฟล์ให้มากที่สุด - เรียกใช้คำสั่ง:

'AtomicusZro $ adb pull -a / sdcard / data / apps /'

คุณควรเห็นสิ่งนี้:

'[69%] /sdcard/data/com.google.android.gms-1/base.apk: 74%'

เมื่อเสร็จแล้ว:

'/ sdcard / data /: 296 ไฟล์ถูกดึง 5.1 MB / s (1193942288 ไบต์ใน 221.352s) '

และ Voila!

หมายเหตุด้านข้าง:.
ไม่รู้ว่าสำคัญหรือไม่ แต่ฉันใช้ Mac
ถ้าในขณะที่ในเซสชั่น ADB ที่คุณไม่สามารถได้รับ "สิทธิพิเศษ su" อย่างใดอย่างหนึ่ง:
1: คุณอาจจำเป็นต้องให้ ADB เข้าถึงราก
ที่ 2: "ผู้ใช้ super" มันไม่ได้ติดตั้งอย่างถูกต้อง
.Double ตรวจสอบคำสั่งของคุณ

โชคดี.-


ฉันไม่จำเป็นต้องรูทเพื่อสิ่งนั้นหรือ
neverMind9

0

ทำงานบนอุปกรณ์ android 7.1 ของฉัน ขั้นตอนในการทำให้มันทำงาน:

  1. ดาวน์โหลด adbd รุ่นที่ไม่ปลอดภัยโดย leroy ที่https://nofile.io/f/86605d8qsJs/adbd-Insecure-v2.00.apk
  2. ติดตั้งในโทรศัพท์ของคุณ
  3. เรียกใช้เชลล์ adb ในไดเรกทอรี adb ของคุณ
  4. พิมพ์ "su" เพื่อให้คุณสามารถรับ "#"
  5. พิมพ์ "setenforce 0"
  6. เปิดใช้ adbd ที่ไม่ปลอดภัย การดีบัก usb จะปิด
  7. เปิดและปิดการดีบัก usb จากตัวเลือกนักพัฒนาซอฟต์แวร์
  8. ปิดและเปิด adbd ที่ไม่ปลอดภัยอีกครั้ง

ตอนนี้คุณสามารถดึง adb เข้าสู่พีซีของคุณได้แล้ว

หวังว่านี่จะช่วยได้


Haris

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.