Android设备如何安装完整的shell工具BusyBox

 更新时间:2016年9月20日 19:58  点击:1530
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等。本文我们来介绍一下在Android设备上如何安装BusyBox

由于工作需要,经常要连接手机并用adb进行一些操作,发现shell功能很好用,但是处于阉割状态,最明显的一条是,执行了一些命令之后,目录下出现了一些 -p 、 -l 、 755 之类的文件,让人很是蛋疼。更明显的是,一些linux好用的第三方工具,挪到android下根本无法执行。。于是就想办法让android设备支持全功能的shell。这里最直接的就是安装BusyBox了。

什么是BusyBox

    BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。

如何安装busybox

1、root手机,安装adb

这是必须的!上网搜一下,会有很多对应版本的root教程。adb随意下载并配置一个,命令行敲adb有反应即可。

2、下载最新版的BusyBox

去这里 :busybox.net
最下面有latest,下载一个busybox-armv6l或者busybox-armv7l就可以了

3、安装

如果像我一样,是在windows下安装的,那么可以win+R打开cmd,输入adb。

    adb root
    adb remount

这样进入了root模式,然后把BusyBox的二进制文件push到手机端

    adb push busybox /data/busybox

接着进入shell模式,并安装busybox

    adb shell
    #cd data/busybox
    #./busybox –install

最后一步添加环境变量

    #export PATH=/data/busybox:$PATH

ok,这时候再输入一遍ls看看,是不是跟之前完全不一样了?

Android ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备,本文我们来看看widnows和linux下adb找不到设备解决办法。

通常,在安装并配置完android SDK的环境变量之后,成功在命令行(Terminal)输入adb devices之后,并不会立刻看到自己的设备。这里排除掉设备本身驱动的问题,最常见的就是在用户目录下的.android文件夹内没有adb_usb.ini的文件存在。windows和linux环境均如此。

Windows环境

进入C:Users目录,找到自己名字的文件夹,会看到一个.android命名的文件夹(没有则新建一个)。打开之后里面是一些adbkey之类的信息,查找是否存在adb_usb.ini的文件存在,没有则新建。内容是设备的地址,通常为0x1782。
adb_usb.ini文件格式如:

    0x1792
    0x119a

输入并保存即可。

Ubuntu环境

与win类似,只要在当前用户目录下创建创建文件”.android/adb_usb.ini” ,内容为lsusb看到的设备的idVendor。
adb_usb.ini中即每一行加入一个idVendor。

之后执行命令行:
sudo adb kill-server
sudo adb devices

即可看到设备。

Smart Phones Dumb Apps是一款用perl语言开发的脚本集,可以分析android和分析iphone app的功能,下面我们来简单介绍一下。

这个是一个脚本集,可以帮助分析者分析app的安全性,用perl语言开发。由于只是一些脚本,所以用起来可能没那么智能,没有GUI界面,也不会有“优雅”的分析结果。所以基本上,就是类似“aapt加强版”的脚本。由于加入了分析android和分析iphone app的功能,所以用处的话还是有一些的。

项目地址 [GoogleCode] https://code.google.com/p/smartphonesdumbapps/
如何打不开就翻墙吧,唉

主要功能

Android

    解包apk;
    解码manifest.xml(用axml2lxml);
    获取app需要的权限;
    获取app的截屏(根据 Android manifest);
    反编译DEX,通过解析DEX来检查文件权限等;
    查找URL,主机名以及一些网络路径。

Iphone App

    解包iPhone IPA file或者破解XYZ.app/文件夹;
    把.plist转成XML以供浏览;
    通过查看.plist XMLs来查找app定义的一些URL;
    查找URLs,主机名和一些网络路径。

相关内容

Smart Phones Dumb Apps这个脚本集的初衷在于“智能手机意外丢失,‘别有用心’的人通过你的app都能获取到什么信息”这个假设来的(想必是有类似惨痛经历),所以内容是在分析AndroidManifest.xml、res/文件夹中的其他XML文件、classes.dex 这个DEX的二进制文件,通过这些文件,都能看到什么信息,或者有什么隐含的攻击点。

在解码xml文件的时候,用到了 axml2xml,在解DEX的时候,用的是 dedexer,都是比较常用的工具。之后,通过 dex2jar 转换成可读的java代码。

通过以上几步,攻击者甚至可以看到许多程序的数据流程、调用方式、调取的第三方服务等敏感信息,通过一些分析,就能得到程序的薄弱点并加以攻击。

当然,这个只提供了前面解析的部分,攻击的事还是得交给metasploit之类的来……

drozer是一款针对Android系统的安全测试框架,可以帮助Android app和设备变得更安全,其提供了很多Android平台下的渗透测试exploit供你使用和分享,本文我们来讲讲Drozer工具安装使用。

最近接到任务,让了解一下几款Android安全测试相关的软件,首先是Drozer。Drozer是一款综合的安全评估和攻击的android框架,据 产品介绍 里说,Drozer可以全面评估app的安全性,并帮助团队把app的安全风险保持在可控范围内。
使用方法

1、在 mwrinfosecurity 公司的这个网页上,提供了社区版本的下载(没错,还有收费的高级版),下载并安装之。并保证android的adb环境已经配置好,即cmd中输入adb devices不会报错。并在手机端安装下载包中的Agent.apk的包。

2、在PC端开启转发

adb forward tcp:31415 tcp:31415

adb forward tcp:31415 tcp:31415

3、在手机端打开安装好的apk程序。

4、在PC上开启Drozer console

drozer console connect

drozer console connect

这样,就进入了 dz> 的console界面,后面就参照说明书一步一步进行测试。
功能介绍

dz> run app.package.list -f example

dz> run app.package.list -f example
 

list命令用以列出所有包含“example”的手机中已安装package名称,记住目标应用的完整名称。

dz> run app.package.info -a com.example

dz> run app.package.info -a com.example
 
info命令用以通过完整名称,获取该package的详细信息,比如data路径、apk路径、声明的权限等等。

dz> run app.package.attacksurface com.example

dz> run app.package.attacksurface com.example

attacksurface即攻击面分析,分析Activity/Broadcast Receiver/Content Provider/Service的权限,即是否能被其他的的应用程序调用。会像下列示例一样列出数量:

    Attack Surface:
    3 activities exported
    0 broadcast receivers exported
    2 content providers exported
    2 services exported
    is debuggable

dz> run app.provider.info -a com.example

dz> run app.provider.info -a com.example
 

获取provider的信息,比如是否需要额外权限来读写app的数据库,等等。如果找到相关漏洞,就可以通过

dz> run scanner.provider.finduris -a com.example

dz> run scanner.provider.finduris -a com.example
 

来扫描一些可用的uri,比如userName、password、ID之类的,甚至可以修改值(如SQL注入什么的):

dz> run app.provider.query content://xxxxxx --preinjection "xxx"

dz> run app.provider.query content://xxxxxx --preinjection "xxx"
 

dz> run scanner.provider.injection -a com.example

dz> run scanner.provider.injection -a com.example

进行简单的SQL注入检查、文件遍历检查之类的。

其他:

service相关

查询service

dz> run app.service.info -a com.example

dz> run app.service.info -a com.example

shell.start

在设备上启动一个可交互的linux shell

tools.file.upload / tools.file.download

在android设备上上传/下载文件

tools.setup.busybox / tools.setup.minimalsu

往设备上安装busybox和minimalsu

其他功能

在收费版本中,Drozer还提供了攻击面的可视化界面,并在多设备支持、模拟传感器输入等方面进行了探索,但是介于收费功能,没有继续看下去。

总结

在测试app的安全性上,Drozer确实可以发挥一些作用,不过关键问题还是要了解Android app的整体结构和安全策略,才能游刃有余,而不是见招拆招,被动的很。

最新更新了Android 5.0 的 SDK ,发现附带的工具比如uiautomatorviewer时提示“‘-v’ 不是内部或外部命令,也不是可运行的程序”,杯具了,幸好可以有google,问题终于解决。

作为日常工作,常常要使用Android SDK附带的hierarchyviewer、uiautomatorviewer、ddms等工具,刚好碰上Android L发布,并且更新了Android Stutio 1.0,SDK也伴随着进行了大幅度更新,包括uiautomatorviewer等在内的工具都有了新版本。于是昨天下了新版本过来,安装上去,接着重新设置了环境变量等一系列东西,然后打开uiautomatorviewer,竟然提示出错:

    ‘-v’ 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    无效路径
    ERROR: SWT folder ” does not exist.
    Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.

莫非是我环境配置有问题?Google了一下,发现大部分答案都是让设置ANDROID_SWT的环境变量,或者吧jdk移动到PATH的第一个云云的奇怪办法,所以试了半天放弃了,还是安心调试调试看看咋回事。

把uiautomatorviewer.bat的第一行@echo off加冒号”:”注释掉,然后运新一下,看输出:

C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project ...... C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path. C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe= C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat SWT folder '' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.

C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project
......
C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path.
C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe=
C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat
SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
 

运行到call libfind_java.bat这一行出问题鸟~~

接着摸出来find_java.bat,注释掉第一行的 @echo off,看输出:

...... for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a ......

......
for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a
......
 

find_java32 .exe是什么鬼……

打开find_java.bat的代码,可以看到27行这里

for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a

for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
 

就是本尊了,往上翻到arch_ext:

find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64

find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64
 

那个空格应该是这里了,可能是工程师们java写多了,bat里手也瓢了,把前后的空格去掉试试~~

find /i "x86" > NUL && set arch_ext=32||set arch_ext=64

find /i "x86" > NUL && set arch_ext=32||set arch_ext=64
 

关掉cmd,重新打开,新版的uiautomatorviewer出现鸟~~接着测试一下其他需要用到call libfind_java.bat的工具(tools里的几乎都要用吧),都没问题了。

[!--infotagslink--]

相关文章

  • PHP7快速编译安装的步骤

    编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • PHP编译安装后PHP-FPM使用笔记

    PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Elasticsearch工具cerebro的安装与使用教程

    这篇文章主要介绍了Elasticsearch工具cerebro的安装与使用教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-08
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15