1*dd0948b3SAndroid Build Coastguard Worker// Copyright (C) 2023 The Android Open Source Project 2*dd0948b3SAndroid Build Coastguard Worker// 3*dd0948b3SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*dd0948b3SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*dd0948b3SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*dd0948b3SAndroid Build Coastguard Worker// 7*dd0948b3SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*dd0948b3SAndroid Build Coastguard Worker// 9*dd0948b3SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*dd0948b3SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*dd0948b3SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*dd0948b3SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*dd0948b3SAndroid Build Coastguard Worker// limitations under the License. 14*dd0948b3SAndroid Build Coastguard Worker 15*dd0948b3SAndroid Build Coastguard Workercc_binary { 16*dd0948b3SAndroid Build Coastguard Worker name: "shell-as", 17*dd0948b3SAndroid Build Coastguard Worker cflags: [ 18*dd0948b3SAndroid Build Coastguard Worker "-Wall", 19*dd0948b3SAndroid Build Coastguard Worker "-Werror", 20*dd0948b3SAndroid Build Coastguard Worker "-Wextra", 21*dd0948b3SAndroid Build Coastguard Worker ], 22*dd0948b3SAndroid Build Coastguard Worker srcs: [ 23*dd0948b3SAndroid Build Coastguard Worker "*.cpp", 24*dd0948b3SAndroid Build Coastguard Worker ":shell-as-test-app-apk-cpp", 25*dd0948b3SAndroid Build Coastguard Worker ], 26*dd0948b3SAndroid Build Coastguard Worker header_libs: ["libcutils_headers"], 27*dd0948b3SAndroid Build Coastguard Worker static_executable: true, 28*dd0948b3SAndroid Build Coastguard Worker static_libs: [ 29*dd0948b3SAndroid Build Coastguard Worker "libbase", 30*dd0948b3SAndroid Build Coastguard Worker "libcap", 31*dd0948b3SAndroid Build Coastguard Worker "liblog", 32*dd0948b3SAndroid Build Coastguard Worker "libseccomp_policy", 33*dd0948b3SAndroid Build Coastguard Worker "libselinux", 34*dd0948b3SAndroid Build Coastguard Worker ], 35*dd0948b3SAndroid Build Coastguard Worker arch: { 36*dd0948b3SAndroid Build Coastguard Worker arm: { 37*dd0948b3SAndroid Build Coastguard Worker srcs: ["shell-code/*-arm.S"] 38*dd0948b3SAndroid Build Coastguard Worker }, 39*dd0948b3SAndroid Build Coastguard Worker arm64: { 40*dd0948b3SAndroid Build Coastguard Worker srcs: ["shell-code/*-arm64.S"] 41*dd0948b3SAndroid Build Coastguard Worker }, 42*dd0948b3SAndroid Build Coastguard Worker x86: { 43*dd0948b3SAndroid Build Coastguard Worker srcs: ["shell-code/*-x86.S"] 44*dd0948b3SAndroid Build Coastguard Worker }, 45*dd0948b3SAndroid Build Coastguard Worker x86_64: { 46*dd0948b3SAndroid Build Coastguard Worker srcs: ["shell-code/*-x86_64.S"] 47*dd0948b3SAndroid Build Coastguard Worker } 48*dd0948b3SAndroid Build Coastguard Worker } 49*dd0948b3SAndroid Build Coastguard Worker} 50*dd0948b3SAndroid Build Coastguard Worker 51*dd0948b3SAndroid Build Coastguard Worker// A simple app that requests all non-system permissions and contains no other 52*dd0948b3SAndroid Build Coastguard Worker// functionality. This can be used as a target for shell-as to emulate the 53*dd0948b3SAndroid Build Coastguard Worker// security context of the most privileged possible non-system app. 54*dd0948b3SAndroid Build Coastguard Workerandroid_app { 55*dd0948b3SAndroid Build Coastguard Worker name: "shell-as-test-app", 56*dd0948b3SAndroid Build Coastguard Worker manifest: ":shell-as-test-app-manifest", 57*dd0948b3SAndroid Build Coastguard Worker srcs: ["app/**/*.java"], 58*dd0948b3SAndroid Build Coastguard Worker sdk_version: "9", 59*dd0948b3SAndroid Build Coastguard Worker certificate: ":shell-as-test-app-cert", 60*dd0948b3SAndroid Build Coastguard Worker} 61*dd0948b3SAndroid Build Coastguard Worker 62*dd0948b3SAndroid Build Coastguard Worker// https://source.android.com/docs/core/ota/sign_builds#release-keys 63*dd0948b3SAndroid Build Coastguard Worker// Generated by running: 64*dd0948b3SAndroid Build Coastguard Worker// $ANDROID_BUILD_TOP/development/tools/make_key \ 65*dd0948b3SAndroid Build Coastguard Worker// shell-as-test-app-key \ 66*dd0948b3SAndroid Build Coastguard Worker// '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress[email protected] 67*dd0948b3SAndroid Build Coastguard Workerandroid_app_certificate { 68*dd0948b3SAndroid Build Coastguard Worker name: "shell-as-test-app-cert", 69*dd0948b3SAndroid Build Coastguard Worker certificate: "shell-as-test-app-key", 70*dd0948b3SAndroid Build Coastguard Worker} 71*dd0948b3SAndroid Build Coastguard Worker 72*dd0948b3SAndroid Build Coastguard Workergenrule { 73*dd0948b3SAndroid Build Coastguard Worker name: "shell-as-test-app-manifest", 74*dd0948b3SAndroid Build Coastguard Worker srcs: [ 75*dd0948b3SAndroid Build Coastguard Worker ":permission-list-normal", 76*dd0948b3SAndroid Build Coastguard Worker "AndroidManifest.xml.template" 77*dd0948b3SAndroid Build Coastguard Worker ], 78*dd0948b3SAndroid Build Coastguard Worker cmd: "$(location gen-manifest.sh) " + 79*dd0948b3SAndroid Build Coastguard Worker "$(location AndroidManifest.xml.template) " + 80*dd0948b3SAndroid Build Coastguard Worker "$(location :permission-list-normal) " + 81*dd0948b3SAndroid Build Coastguard Worker "$(out)", 82*dd0948b3SAndroid Build Coastguard Worker out: ["AndroidManifest.xml"], 83*dd0948b3SAndroid Build Coastguard Worker tool_files: ["gen-manifest.sh"], 84*dd0948b3SAndroid Build Coastguard Worker} 85*dd0948b3SAndroid Build Coastguard Worker 86*dd0948b3SAndroid Build Coastguard Worker// A source file that contains the contents of the above shell-as-test-app APK 87*dd0948b3SAndroid Build Coastguard Worker// embedded as an array. 88*dd0948b3SAndroid Build Coastguard Workercc_genrule { 89*dd0948b3SAndroid Build Coastguard Worker name: "shell-as-test-app-apk-cpp", 90*dd0948b3SAndroid Build Coastguard Worker srcs: [":shell-as-test-app"], 91*dd0948b3SAndroid Build Coastguard Worker cmd: "(" + 92*dd0948b3SAndroid Build Coastguard Worker " echo '#include <stddef.h>';" + 93*dd0948b3SAndroid Build Coastguard Worker " echo '#include <stdint.h>';" + 94*dd0948b3SAndroid Build Coastguard Worker " echo '';" + 95*dd0948b3SAndroid Build Coastguard Worker " echo 'namespace shell_as {';" + 96*dd0948b3SAndroid Build Coastguard Worker " echo 'const uint8_t kTestAppApk[] = {';" + 97*dd0948b3SAndroid Build Coastguard Worker " $(location toybox) xxd -i < $(in);" + 98*dd0948b3SAndroid Build Coastguard Worker " echo '};';" + 99*dd0948b3SAndroid Build Coastguard Worker " echo 'void GetTestApk(uint8_t **apk, size_t *length) {';" + 100*dd0948b3SAndroid Build Coastguard Worker " echo ' *apk = (uint8_t*) kTestAppApk;';" + 101*dd0948b3SAndroid Build Coastguard Worker " echo ' *length = sizeof(kTestAppApk);';" + 102*dd0948b3SAndroid Build Coastguard Worker " echo '}';" + 103*dd0948b3SAndroid Build Coastguard Worker " echo '} // namespace shell_as';" + 104*dd0948b3SAndroid Build Coastguard Worker ") > $(out)", 105*dd0948b3SAndroid Build Coastguard Worker out: ["test-app-apk.cpp"], 106*dd0948b3SAndroid Build Coastguard Worker tools: ["toybox"] 107*dd0948b3SAndroid Build Coastguard Worker} 108