0x01.下載下傳busybox
https://busybox.net/downloads/binaries/
我選擇的是:1.21.1>busybox-armv7l
[PARENTDIR] Parent Directory -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ../ -- : -
[DIR] ...git-defconfig-multiarch/ -- : -
[DIR] ..-defconfig-multiarch/ -- : -
[DIR] ..-i686/ -- : -
[DIR] ..-defconfig-multiarch/ -- : -
[DIR] ..-i686/ -- : -
[DIR] ..-i686/ -- : -
[ ] ssl_helper-x86_64
0x02.copy到手機上(root過)
➜ ~ adb push ~/Downloads/busybox-armv7l /storage/sdcard0/busybox
/home/iamcxl/Downloads/busybox-armv7l...ed. MB/s ( bytes in s)
0x03.安裝到系統目錄
進入adb shell,然後再擷取su權限.
➜ ~ adb shell
shell@ja3gduosctc:/ $ su
|root@ja3gduosctc:/ # cp /storage/sdcard0/busybox /system/xbin/busybox
0x04.給busybox添加執行權限
安裝到目前目錄
0x05.執行busybox
[email protected]:/ # busybox ls
acct init.environ.rc publiccert.pem
cache init.goldfish.rc root
config init.rc sbin
d init.trace.rc sdcard
data init.universal5410.rc seapp_contexts
default.prop init.universal5410.usb.rc sepolicy
dev init.usb.rc sepolicy_version
efs init.wifi.rc storage
efs_gsm knox_data sys
etc lib system
file_contexts mnt ueventd.goldfish.rc
fstab.goldfish persdata ueventd.rc
fstab.universal5410 preload ueventd.universal5410.rc
init proc vendor
init.container.rc property_contexts
[email protected]:/ #
0x06.缺陷
這種方式靜态方式移植的busybox不能使用ping, traceroute, nslookup等網絡工具.
原因如下:
為Milestone/Droid動态編譯busybox并連結至bionic
之前介紹過交叉編譯busybox的方法,可是在使用過程中發現它的ping,traceroute以及其它的一些網絡指令在使用域名作為參數時會出現
ping: bad address
traceroute: bad address
等錯誤,進而不能夠正常工作
原因就是之前靜态編譯的busybox連結于glibc上,它其中用來擷取DNS資訊的getaddrinfo函數在android下是有問題的,而android所使用的libc庫是個google自己開發bionic.
與glibc相比,Bionic Libc有如下一些特點:
采用BSD License,而不是glibc的GPL License;
大小隻有大約200k,比glibc差不多小一半,且比glibc更快;
實作了一個更小、更快的pthread;
提供了一些Android所需要的重要函數,如”getprop”, “LOGI”等;
不完全支援POSIX标準,比如C++ exceptions,wide chars等;
不提供libthread_db 和 libm的實作
很明顯getaddrinfo是POSIX的标準函數,由于bionic并不完全支援POSIX,是以它應該有它自己的實作方法,這裡不探究它如何實作,現在要做的是怎麼讓busybox能夠使用bionic來連結。
感謝偉大的開源運動,cyanogenmod已經提供了修改好的busybox源代碼,由于cyanogenmod并不相容milestone,而它對android官方的核心以及bionic修改幅度較大是以将它的bionic完全移植過來難度還是很大的,是以這裡僅僅移植一些busybox需要用到的一些函數,這樣對原bionic修改幅度較小,也比較容易實作.
引用自:
http://bbs.chinaunix.net/thread-3638767-1-1.html
0x07.自己編譯一個busybox(支援網絡工具)
因為我要用的就是traceroute和nslookup等工具,是以必須要編譯一個才行.
待續…