当前位置:   article > 正文

Android内置可执行ELF文件_安卓系统的elf文件一般在哪个文件夹

安卓系统的elf文件一般在哪个文件夹

在Android系统源码中内置可执行的ELF文件,并通过cmd来实现调用。这里以Android9.0,手机设备Piexl一代为例。没有搭建编译环境的可以看这一篇Android系统编码编译

一、环境准备

(1) Android系统源码编译环境
(2) C项目工程

二、概述

这里主要从两个方面来内置可执行的ELF文件
(1) 有源码内置可执行ELF文件
(2) 无源码内置可执行ELF文件
接下来将会来讲述如何实现ELF文件的内置,首先我们需要了解Android系统的目录

目录描述
system/bin存放的是可执行文件
system/xbin存放的是可执行文件
system/lib存放本地库(so)
system/lib64存放64位的本地库 (so)

我们只要把编译好了的可执行的ELF文件存放在system/bin或者system/xbin目录下就行了

三、过程

(1)有源码内置可执行ELF文件
a. 在aosp/framework/base/cmds/目录下创建新的目录,用于存放C项目工程

> cd aosp/framework/base/cmds/
> mkdir myelf
> cd myelf
> touch main.c
> vim main.c
  • 1
  • 2
  • 3
  • 4
  • 5

main.c

#include <stdio.h>

int main(){
	printf("this is myelf\n");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

b.在aosp/framework/base/cmds/myelf目录下创建并编写Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := myelf
LOCAL_SRC_FILES := main.c
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) #/system/xbin

LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable -code

include $(BUILD_EXECUTABLE) #编译可执行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

c. 编译

> make -j32
  • 1

d. 刷机

> ./fastboot flashall -w
  • 1

e. 验证

> adb shell myelf
> this is myelf #成功执行
  • 1
  • 2

(2)无源码内置可执行ELF文件
a. 在aosp/framework/base/cmds/目录下创建新的目录,用于存放已经编译好的ELF文件

> mkdir myelf  #新建文件夹myelf
> cd myelf  #进入到文件夹内
> ls  #列出myelf下的文件
> myelf #这个文件是可执行的ELF文件
  • 1
  • 2
  • 3
  • 4

b.在aosp/framework/base/cmds/myelf目录下创建并编写Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := myelf
LOCAL_SRC_FILES := myelf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)  #/system/xbin

LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable -code

LOCAL_MODULE_CLASS := EXECUTABLES #可执行文件

include $(BUILD_PREBUILT) #预构建
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

c. 编译

> make -j32
  • 1

d. 刷机

> ./fastboot flashall -w
  • 1

e. 验证

> adb shell myelf
> this is myelf #成功执行
  • 1
  • 2

asjhan for Android reverse

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/319249
推荐阅读
相关标签
  

闽ICP备14008679号