arm平台编译adb
来源:互联网 发布:算法C 第四版 pdf 编辑:程序博客网 时间:2024/05/22 02:23
参考github:https://github.com/bonnyfone/adb-arm
本来的目的是在arm平台编译以后能够使用adb shell获取shell权限,然后就可以避开其他权限无法执行su的问题。
最开始,先修改了android源码中的su.c,将root和shell权限验证部分注释掉,编译出来还是不行,在setgid和setuid的时候会产生错误,这个错误折腾了我两天也没搞定,只能另找办法了。
突然想到adb是有shell权限的,可以自己编译adb为动态库,通过jni方式给android应用调用,这样在已经root的手机上就能有root权限了(没有root的平台就需要再研究一下如何root),目前这个方法还未验证。
提供adb编译的方法(这个方法只是编译可执行文件adb,可以在这个基础上修改为动态库方式,这个方式比较简单,就不在这里说明了):
编译版本是:android-4.4.4_r2.0.1
源码的下载需要梯子……
脚本文件:
# CONFIG# -------------------------# Branch to checkout from Android source code repobranch=android-4.4.4_r2.0.1# Makefile to use (will be automatically copied into system/core/adb)makefile=makefile.sample# DOWNLOAD necessary files# -------------------------echo "\n>> >>> ADB for ARM <<< \n"echo "\n>> Downloading necessay files ($branch branch)\n"mkdir android-adbcd android-adbmkdir systemcd systemgit clone -b $branch https://android.googlesource.com/platform/system/coregit clone -b $branch https://android.googlesource.com/platform/system/extrascd ..mkdir externalcd externalgit clone -b $branch https://android.googlesource.com/platform/external/zlibgit clone -b $branch https://android.googlesource.com/platform/external/opensslgit clone -b $branch https://android.googlesource.com/platform/external/libselinuxcd ..# MAKE# -------------------------echo "\n>> Copying makefile into system/core/adb...\n"cp ../$makefile system/core/adb/makefile -fcd system/core/adb/echo "\n>> Make... \n"make cleanmakeecho "\n>> Copying adb back into current dir...\n"cp adb ../../../../echo "\n>> FINISH!\n"
makefile.example文件:
# ADB makefile# ------------#TODO change TOOLCHAIN variable to your toolchain path #TOOLCHAIN= /opt/poky/1.5/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-TOOLCHAIN = /home/linux/bin/android-toolchain/bin/arm-linux-androideabi-CC = $(TOOLCHAIN)gccLD = $(TOOLCHAIN)gccCXX = $(CC)SRCS += adb.cSRCS += fdevent.cSRCS += adb_client.cSRCS += commandline.cSRCS += console.cSRCS += file_sync_client.cSRCS += get_my_path_linux.cSRCS += services.cSRCS += sockets.cSRCS += transport.cSRCS += transport_local.cSRCS += transport_usb.cSRCS += usb_linux.cSRCS += usb_vendors.cSRCS += adb_auth_host.c VPATH += ../libcutilsSRCS += list.cSRCS += socket_inaddr_any_server.cSRCS += socket_local_client.cSRCS += socket_local_server.cSRCS += socket_loopback_client.cSRCS += socket_loopback_server.cSRCS += socket_network_client.cSRCS += load_file.c VPATH += ../libzipfileSRCS += centraldir.cSRCS += zipfile.c VPATH += ../../../external/zlib/srcSRCS += adler32.cSRCS += compress.cSRCS += crc32.cSRCS += deflate.cSRCS += infback.cSRCS += inffast.cSRCS += inflate.cSRCS += inftrees.cSRCS += trees.cSRCS += uncompr.cSRCS += zutil.cCPPFLAGS += -DADB_HOST=1CPPFLAGS += -DHAVE_FORKEXEC=1CPPFLAGS += -DHAVE_SYMLINKSCPPFLAGS += -DHAVE_TERMIO_HCPPFLAGS += -DHAVE_SYS_SOCKET_HCPPFLAGS += -D_GNU_SOURCECPPFLAGS += -D_XOPEN_SOURCECPPFLAGS += -std=c++11 CPPFLAGS += -I.CPPFLAGS += -I../includeCPPFLAGS += -I../../../external/zlibCPPFLAGS += -I../../../external/openssl/includeCPPFLAGS += -I../base/include CFLAGS += -O2 -g -Wall -Wno-unused-parameterLIBS = -lcrypto -pthread -fPIE -pie#LIBS += -lrtOBJS = $(SRCS:.c=.o)all: adbadb: $(OBJS)$(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)clean:rm -rf $(OBJS)TOOLCHAIN是本地的ndk工具链,是从r9中抽取出来的。
可以手动下载脚本中的源代码,然后直接把makefile放在~/system/core/adb/下面,执行make就能产生adb文件,验证没有问题。动态库还没来得及编译。
阅读全文
0 0
- arm平台编译adb
- arm平台交叉编译链
- 编译ARM平台的drcom
- 编译arm平台的strace
- 交叉编译ARM平台coreutils
- 编译arm平台的ethtool
- golang编译arm平台程序
- 交叉编译openssl arm平台
- 编译arm平台的ethtool
- 让Android adb运行在ARM平台上
- ARM-Linux平台的Busybox交叉编译
- 交叉编译arm平台的qt库
- 编译ARM平台上的gdb
- 嵌入式arm平台的内核编译
- QT4.8.3 arm平台交叉编译
- 交叉编译arm平台的libxml2
- 制作ARM平台交叉编译工具链
- readline-6.3 之arm平台交叉编译
- 7-11 关键活动(30 分)
- springMVC重定向时参数传递及中文参数乱码问题
- ELK日志采集系统搭建
- java.net.ConnectException: Connection refused: no further information
- Caffe 工程的一些编译错误以及解决方案
- arm平台编译adb
- 怎么设定目标(六)如何时刻保持在目标的正确轨道上
- 定时器
- 修改redo log 大小的记录:
- DJANGO_PART4
- Leetcode Num.38 -- Count and Say
- 后台开发
- java 操作hdfs api
- 陀螺文化