Table of Contents
Introduction
Corellium's generic Android (AOSP) device is based on Ranchu, a virtual Android system-on-chip. It is compiled from the android-goldfish-3.18 branch with the corellium_defconfig configuration.
Corellium currently supports Android versions 7, 8, 9, 10, 11, and 12.
The Corellium Android device is rooted, and SELinux enforcement is permissive. You can check the console or logcat for auditd diagnostics to see if SELinux will affect your testing.
Creating your Device:
Log in to Corellium.
When you reach the Corellium Devices page, click CREATE DEVICE.
Select the device you would like to create, then click SELECT. We will use a Generic Android.
Select the version of the Android OS then click SELECT. We will use version 12.0.0.
Confirm your selections, then click CREATE DEVICE. We will not use advanced boot options for this example. You do not need to name the device.
Please be patient while your virtualized Android environment initializes. This process may take several minutes, depending on the device complexity.
You will see a “Device is ready!” confirmation.
The device will boot up to the home screen, and you're all set!
Supported Hardware Devices, Peripherals, & Extensions
The following virtual hardware devices are currently supported for Corellium's virtual Android devices:
ARM PL011 serial
ARM Generic Interrupt Controller v2
Goldfish audio
Goldfish battery
Goldfish events (supporting the Android back, home, and overview buttons, touch screen, and keyboard)
Goldfish GSM modem
Goldfish real-time clock
graphics card
VIRTIO hard disk drive
VIRTIO network interface card
The following Android peripherals are not currently supported:
Bluetooth
TrustZone features, including Keymaster, PlayReady, and WideVine
Corellium's virtual Android devices support OpenGLES 3.0. The following EGL extensions are not supported:
EGL_ANDROID_blob_cache
EGL_ANDROID_framebuffer_target
EGL_ANDROID_image_crop
EGL_ANDROID_image_native_buffer
EGL_ANDROID_native_fence_sync
EGL_ANDROID_recordable
EGL_EXT_buffer_age
EGL_EXT_create_context_robustness
EGL_EXT_pixel_format_float
EGL_KHR_no_config_context
EGL_KHR_partial_update
EGL_KHR_surfaceless_context
The following OpenGLES 2 extensions are supported:
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth24
GL_OES_depth32
GL_OES_depth_texture
GL_OES_depth_texture_cube_map
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_sync
GL_OES_element_index_uint
GL_OES_framebuffer_object
GL_OES_packed_depth_stencil
GL_OES_rgb8_rgba8
GL_OES_standard_derivatives
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_texture_3D
GL_EXT_blend_minmax
GL_EXT_color_buffer_half_float
GL_EXT_draw_buffers
GL_EXT_instanced_arrays
GL_EXT_occlusion_query_boolean
GL_EXT_read_format_bgra
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_rg
GL_ANGLE_framebuffer_blit
GL_ANGLE_framebuffer_multisample
GL_ANGLE_instanced_arrays)
GL_CHROMIUM_texture_filtering_hint
GL_NV_fence
GL_NV_framebuffer_blit
GL_NV_read_depth
The following OpenGLES 3 extensions are supported:
GL_APPLE_texture_max_level
GL_EXT_clip_cull_distance
GL_EXT_color_buffer_float
GL_EXT_discard_framebuffer
GL_EXT_frag_depth
GL_EXT_gpu_shader5
GL_EXT_read_format_bgra
GL_EXT_render_snorm
GL_EXT_robustness
GL_EXT_shader_implicit_conversions
GL_EXT_shader_integer_mix
GL_EXT_shader_io_blocks
GL_EXT_sRGB_write_control
GL_EXT_texture_compression_bptc
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_rgtc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_compression_s3tc_srgb
GL_EXT_texture_cube_map_array
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_norm16
GL_EXT_texture_rg
GL_EXT_texture_sRGB_decode
GL_EXT_texture_sRGB_R8
GL_EXT_texture_type_2_10_10_10_REV
GL_EXT_unpack_subimage
GL_KHR_context_flush_control
GL_KHR_no_error
GL_KHR_texture_compression_astc_ldr
GL_KHR_texture_compression_astc_sliced_3d
GL_MESA_shader_integer_functions
GL_NV_fbo_color_attachments
GL_NV_image_formats
GL_NV_read_depth
GL_NV_read_depth_stencil
GL_NV_read_stencil
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth24
GL_OES_depth_texture
GL_OES_depth_texture_cube_map
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_image_external_essl3
GL_OES_EGL_sync
GL_OES_element_index_uint
GL_OES_fbo_render_mipmap
GL_OES_gpu_shader5
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_required_internalformat
GL_OES_rgb8_rgba8
GL_OES_sample_variables\
GL_OES_shader_image_atomic
GL_OES_shader_io_blocks
GL_OES_shader_multisample_interpolation
GL_OES_standard_derivatives
GL_OES_stencil8
GL_OES_texture_3D
GL_OES_texture_cube_map_array
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_texture_stencil8
GL_OES_vertex_array_object
GL_OES_vertex_half_float
Next Steps
Now that you know how to set up your first android device, check out our Connect to the Corellium VPN article.