前几天在freebuf上看到了一篇基于ICMP协议的shell:http://www.freebuf.com/articles/system/50361.html,
看了下觉得挺有意思,所以就在网上找了个源码移植到了Android上。

源码下载地址:http://ncu.dl.sourceforge.net/project/icmpshell/ish/v0.2/ish-v0.2.tar.gz
不过它是针对linux平台的,要在Android上应用需要稍做修改:
修改源码中的"/bin/sh"为"/system/bin/sh"
修改Makefile文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
CC = gcc
CFLAGS1 = -static -g -Wall
CFLAGS2 = -static -g -Wall -lsocket
STRIP = strip
default:
@echo "-------------------------------"
@echo "Make with the OS from the list:"
@echo ""
@echo "1.) linux"
@echo "2.) bsd"
@echo "3.) solaris"
@echo "4.) android"
@echo ""
@echo "ex: make bsd"
@echo "-------------------------------"
clean:
/bin/rm -f ish ishd
linux: clean cc1 fin
bsd: clean cc1 fin
solaris: clean cc2 fin
android: clean cc3
cc1:
$(CC) $(CFLAGS1) -o ish ish.c ish_main.c
$(CC) $(CFLAGS1) -o ishd ishd.c ish_main.c ish_open.c
cc2:
$(CC) $(CFLAGS2) -o ish ish.c ish_main.c
$(CC) $(CFLAGS2) -o ishd ishd.c ish_main.c ish_open.c
cc3:
arm-linux-gnueabi-gcc $(CFLAGS1) -o ish-arm ish.c ish_main.c
arm-linux-gnueabi-gcc $(CFLAGS1) -o ishd-arm ishd.c ish_main.c ish_open.c
fin:
$(STRIP) ish
$(STRIP) ishd

其实就是添加了一个Android的交叉编译选项,并且添加了-static选项。

1
2
3
cd ISHELL-v0.2
make android
make linux

编译完成后得到四个文件:
ish ishd ish-arm ishd-arm
将ishd-arm push到手机中,并赋予可执行权限
Android端运行:
su -c ishd-arm -d
Linux端运行(将ip换成你手机的ip地址):
sudo ish ip
大功告成!