谢谢
iua
#1 楼
/data/data
以下的文件和目录受“普通用户”保护,因此,除非ADB守护程序以root模式运行,否则您不能简单地“拉”它们。除了您所引用的文件(/system/buildprop
至少对所有应用程序都可读)之外,/data/data
下方的文件夹是“不可见的”(根目录除外),因此甚至无法读取。要在它们上使用
adb pull
,您需要首先使您的ADB守护程序以root模式运行。根据设备的不同,一个简单的adb root
命令可能会执行此操作-但大多数设备都拒绝这样做。在这种情况下,您可以使用chainfire的adbd不安全:在设备上安装此应用,在设备上启动,然后手动切换到“不安全”模式。现在,pull
应该会成功。以防万一你想知道。评论
谢谢你!除了chainfire adbd不安全之外,我是否可以在build属性中设置ro.secure标志?我可以使用adb shell setprop ro.secure 0吗?
–user3734225
2014年7月5日在1:20
我从来没有尝试过,也不知道该标志的用途是什么,所以我无法分辨。 (顺便说一句:如果您认为答案有用,欢迎您“赞成”(SE表示“谢谢”的方式),或者在解决我们的问题时“接受”;)
– Izzy♦
2014年7月5日在18:05
亚行对我不安全的工作:)
–user3734225
2014年7月6日在1:27
#2 楼
如果您的手机扎根,可以通过三种方法解决此问题。第一个是使用不安全的ADBD。另一个是将其移动到具有根目录的另一个文件夹中,然后从那里拉出它:
br />我认为您可以构建一个脚本,例如:
$ 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
并将其保存在某个地方。
最后,第三个选项是
chmod -R 1777 /data/data
,但是这样做更加不安全,因此不建议这样做。评论
请问$ 1 / *是什么意思?是/ data / data目录吗?
– emen
16-10-7在9:37
非常好的答案
–丹·布拉德伯里(Dan Bradbury)
17年11月25日在1:22
使用-r复制递归子目录和文件“ cp -r / data / data / sdcard / data”
– Parvesh Monu
20-2-8在21:03
@Emen $ 1是提供给脚本的第一个参数,在这种情况下,它将引用目录。因此,如果该脚本在名为extractdir.sh的文件中,则可以使用./extractdir.sh / path / to / target / dir进行调用。
–h0r53
20-2-18在16:38
#3 楼
您不能直接拉数据文件夹,因为adb没有文件列表访问权限。如果要拉/ data文件夹,则可以通过恢复来实现([自定义恢复,CWM / TWRP]在设备处于恢复模式时运行adb,希望是自定义恢复)。或以root身份将/ data复制到另一个目录(sdcard)并将其从那里拉出。评论
谢谢。但是我能够拉/ System文件夹中的build.prop文件。 adb shell su,然后我可以列出根文件夹中的文件。我在Google搜索设置中将ro.secure构建属性读为0,这将有助于提取/ data。这是真的?如果可以的话,有办法吗?
–user3734225
2014年7月4日在7:23
您可以拉出build.prop,因为/ system具有列表权限。您可以在boot.img中更改ro.secure = 0,但这是一个非常复杂的步骤。仅安装自定义恢复并从那里进行操作会更容易。
–Hiemanshu Sharma
2014年7月4日在7:28
非常感谢你!我的主要目的是将法证相关应用程序作为大学的最后一年项目。我真的很害怕,安装自定义恢复将清除设备中的证据。您对这个主题有任何想法吗?
–user3734225
2014年7月4日在7:38
在我之前的评论中添加-adb shell setprop的用途是什么?我不能在这种情况下使用它吗?
–user3734225
2014年7月4日在7:57
依靠手机扎根并打开调试功能的取证恢复程序听起来并不是很有用。
–丹·赫尔姆
2014年7月4日在8:07
#4 楼
第一部分:为ADB PULL准备所有文件这对我有用:
*确保您使用的是最新的ADB版本。
启动ADB会话:
'infocus $ adb shell'
在ADB中获得一次SU权限会话,您需要做的就是键入“ 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.android.mms-1
com.android.vending-2'
为了通过ADB“ cp”命令进行递归复制,请使用选项“ -R”,由于我想复制其中的所有内容,因此使用通配符“ *”
,如下所示:
'root @ m1:/ data / app#cp -R * / / sdcard / data /'
一旦按下回车键,如果文件很大,显然将需要一段时间来复制文件,因此光标会空转一会儿,看起来好像什么也没做,但是 它是!它正在复制文件,所以不要惊慌!并且不要停止该过程!!!
-如果您只想打开另一个ADB shell会话,然后转到要传输文件的文件夹
,并执行“ 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
第二部分:ADB PULL
至此,如果尚未在目标计算机上创建文件夹,请执行此操作。我方便地创建了一个名为“ apps”的文件夹。
现在,让我们一次执行所有文件的难以捉摸的递归ADB PULL:
-确保您已退出ADB会话,因为处于
SU模式下,我们需要退出两次:
'root @ m1:/ sdcard / data#exit''shell @ m1:/ $ exit'
在普通的shell会话中运行“ 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(在221.352s中为1193942288字节)'
瞧!
边注:
。不知道是否重要,但我使用的是Mac。
。如果在ADB会话中,您也无法获得“ su特权”:
第一个:您可能需要授予ADB根访问权限
第二个:“超级用户”,它安装不正确
。仔细检查您的命令
祝您好运。-
评论
我不需要为此扎根吗?
–neverMind9
18年6月1日在13:35
#5 楼
在我的android 7.1设备上工作。使其正常工作的步骤:
通过leroy在https://nofile.io/f/86605d8qsJs/adbd-Insecure-v2.00下载adbd不安全版本。 apk
安装到手机中。
在adb目录中运行adb shell
键入“ su”,以便您可以获取“#”
键入“ setenforce 0”
启用不安全的adbd。 USB调试关闭
从开发人员选项中打开和关闭USB调试
再次关闭不安全的adbd。
您现在可以将adb拉入您的计算机。
希望这会有所帮助
Haris
评论
您是否先运行adb root?是的,但是adb root无法成功。没有权限。但是我可以使用adb shell su。它给出#。