如何解决adb卡死,命令不返回的问题

今天在使用adb命令时发生一个奇怪的现象,所有 adb命令全部卡死不返回,包括adb kill-server。

记录一下我的解决过程,再遇到类似的情况可能原因差不多。


1. 最先怀疑 5037端口被占用,tcpview看了一下,发现端口没有被占用。

2. 再怀疑是不是adb的驱动出问题了,用ADBDriverInstaller也查看了,没有问题,如下图

    image

3. 怀疑我的手机是不是有问题,用其它的PC试了一下,可以正常操作,说明还是我的PC的问题

4. 最后用procexp查看进程及线程,看看卡在哪儿了,首先发现一个dll,引起我的怀疑,如下图:

    image

    我感觉八成是上图中 “ASProxy.dll” 搞的鬼,在仔细看一下线程栈确定一下。

    image

    初步确认是ASProxy.dll引起的,这个dll是AStrill当中的,一个FQ软件。
    卸载后再试试,一切就好了。

   AStrill 用这种方式做代理虽然能兼容很多的软件,但是也会引起很多错误。

   几年前我用golang编译出来的程序就与AStrill冲突过,今天又来了。
   使用AStrill最安全的办法就找机器单独安装,使用者配一个http的代理就可以了,这样最干净。




最后再多说一句关于 ASProxy.dll,这个dll其实是一个 SPI,它可以注入到每一个使用网络的进程中去,再来一张图:


image

就是这么的,可以让ASProxy.dll注入到adb的进程中,从而影响了adb的正常运行。

posted @ 2019-02-03 21:11  Russinovich`s Blog  阅读(8171)  评论(1编辑  收藏  举报