app_process32 crashes on Android O
Created by: ghost
I'm trying to run app_process32 with drrun on my Pixel 2 (Android 8.1.0) but it crashes with SIGSEGV instantly every time (even without any argument)
walleye:/data/ssh/root # /system/xbin/dynamorio/bin32/drrun -- app_process32
<Application /system/bin/app_process32 (28241). DynamoRIO internal crash at PC 0xf6326f30. Please report this at http://dynamorio.org/issues/. Program aborted.
Received SIGSEGV at pc 0xf6326f30 in thread 28241
Base: 0xf628b000
Registers: r0 =0x00000000 r1 =0x00000000 r2 =0x0000f7ff r3 =0xf7ffbffe
r4 =0x00000000 r5 =0x4bc46a84 r6 =0x00000000 r7 =0x00000000
r8 =0x4bc40c88 r9 =0x4bc40c90 r10=0x00000000 r11=0x00000001
r12=0x00004c22 r13=0x4bc40c80 r14=0xf6326e25 r15=0xf6326f30
eflags=0x200b1830
version 7.1.0, build 1
-no_dynamic_options -code_api -stack_size 56K -signal_stack_size 32K -max_elide_jmp 0 -max_elide_call 0 -early_inject -emulate_brk -no_inline_ignored_syscalls -native_exec_default_list '' -no_native_exec_managed_code -no_indcall2direct >
I'm using the release version DynamoRIO-ARM-Android-EABI-7.1.0-1.tar.gz
.
According to addr2line it crashes at /dynamorio_package/core/arch/arm/encode.c:3084
if (di.isa_mode == DR_ISA_ARM_THUMB) {
if (di.instr_word >> 16 != 0) {
*((ushort *)copy_pc) = (ushort)(di.instr_word >> 16); // <- HERE
copy_pc += THUMB_SHORT_INSTR_SIZE;
}
*((ushort *)copy_pc) = (ushort)di.instr_word;
copy_pc += THUMB_SHORT_INSTR_SIZE;
} else {
*((uint *)copy_pc) = di.instr_word;
copy_pc += ARM_INSTR_SIZE;
}
btw I tried some simple commands like ls
date
wget
ping
etc. they all works perfectly fine