为Android编译带-e选项的netcat
本文主要介绍了如何为Android编译带-e选项的netcat。
环境
OS:Ubuntu14.04 64
编译busybox
首先到这里下载busybox源码,这里我下载的版本为1.23.1。
搭建交叉编译环境:apt-get install gcc-arm-linux-gnueabi libc-dev-armel-cross
在busybox目录下执行:make menuconfig
进入图形选择模式,必填的选项为:1234567Busybox Settings->General Configuration->[*]Don't use /usrBusybox Settings->Build Options->[*] Build BusyBox as a static binary (no shared libs)(arm-linux-gnueabi-) Cross Compiler prefixNetworking Utilities->[*] Netcat 1.10 compatibility (+2.5k)
保存设置退出menuconfig,执行:make -j8
成功后会在当前目录生产busybox,通过busybox nc即可调用netcat。
编译netcat
由于不能直接从busybox单独的提取出netcat命令,所以使用郑郭busybox稍显臃肿(strip版本大概为2m),所以我又决定直接对netcat源码进行交叉编译。
首先到这里下载netcat源码这里我下载的版本是0.7.1。
这里可以采用两种编译手段:
- gnu编译
搭建交叉编译环境:apt-get install gcc-arm-linux-gnueabi libc-dev-armel-cross
修改netcat目录src文件夹下的netcat.c文件,在首部添加两个宏:#define GAPING_SECURITY_HOLE,#define TELNET。
在netcat目录下执行:./configure --host=arm-linux CC=arm-linux-gnueabi-gcc CFLAGS="-static -O2"
--prefix= /home/auo/Temp/netcat-0.7.1/out
具体路径请自行修改。
成功后,执行:make -j8
成功后继续执行:make install
生成后的netcat在/home/auo/Temp/netcat-0.7.1/out/bin/目录下,最后执行:arm-linux-gnueabi-strip -s '/home/auo/Temp/netcat-0.7.1/out/bin/netcat'
strip后netcat的大小为583.1kB。 - NDK编译
修改netcat目录src文件夹下的netcat.c文件,在首部添加两个宏:#define GAPING_SECURITY_HOLE,#define TELNET。
在netcat目录下执行:./configure --host=arm-linux CC=arm-linux-androideabi-gcc
CFLAGS="-static --sysroot=/home/auo/Android/android-ndk-r10d/platforms/android-21/arch-arm -O2"
--prefix=/home/auo/Temp/netcat-0.7.1/out
具体路径请自行修改,环境变量自行添加。
成功后,执行:make -j8
成功后继续执行:make install
生成后的netcat在/home/auo/Temp/netcat-0.7.1/out/bin/目录下,最后执行:arm-linux-androideabi-strip -s '/home/auo/Temp/netcat-0.7.1/out/bin/netcat'
strip后netcat的大小为326.1kB,显而易见,使用ndk编译出的netcat体积要减小很多。