Skip to main content

Kernels

The kernel is a program at the core of a device's operating system and has complete control over everything in the system. The iOS kernel is the XNU kernel of Darwin, whereas Android uses a modified version of the Linux kernel with further architectural changes implemented by Google.

Kernel

Corellium supports multiple kernel options depending on your device, operating system, and license.

Stock Kernel

The Stock Kernel is the default kernel included with the selected operating system.

Use the Stock Kernel when you want the device to boot with the standard kernel provided for the selected device and OS version.

Kernel

KASAN-Enabled Kernel

The KASAN-Enabled Kernel enables Kernel Address Sanitizer (KASAN), which helps detect memory safety issues during kernel execution.

KASAN-enabled kernels are useful for:

  • Detecting out-of-bounds memory accesses.
  • Detecting use-after-free conditions.
  • Kernel debugging and security research.
note

KASAN-enabled kernels may not be available for every supported device or operating system version.

Custom Kernel

On Enterprise Accounts, a custom Linux kernel can be uploaded for Android devices. It will be used instead of the default Linux kernel. For instance, you may want to customize a kernel to:

  • Generate a vmlinux to aid kernel debugging.
  • Enable debug symbols.
  • Add instrumentation, such as KASAN or Kcov.
  • Add or remove exploit mitigations.
  • Integrate training modules or revert security patches for security testing.

For iOS devices, you can upload and use any compatible ARM kernel instead of the stock kernel.

For either device, simply drag your custom kernel into the appropriate place in Settings to upload it. All custom kernels must be unencrypted and uncompressed.

note

Uploading a custom kernel has license restrictions and may not be available with all license types.