HookZz - Ninja编译asm文件时问题

因为Discord进不去,故而在这里提问了。见谅。

HookZz master 分支 编译进 Android ROM源码的模块中,AOSP Android 6.x 及 7.x (make)编译都没有问题的。 但在编译(ninja)进ROM Android 8.x时就出问题了,在编译这个唯一的汇编文件时出错 arch/arm/closure-trampoline-template-arm.s

log如下,error看最后几行:

ubuntuOS@pc:~/Android/OpenSource/MoKee/mko-mr1$ mmm frameworks/base/core/jni/
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=8.1.0
TARGET_PRODUCT=mk_dumpling
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=krait
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.15.0-50-generic-x86_64-with-Ubuntu-16.04-xenial
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=OPM7.181205.001
OUT_DIR=/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out
============================================
ninja: no work to do.
ninja: no work to do.
Environment variable BUILD_NUMBER was modified (dfafa0c4b8 => c11ea4143c), regenerating...
[ 24% 141/577] //frameworks/native/libs/binder:libbinder header-abi-diff libbinder.so.abidiff
******************************************************
VNDK Abi broken: Please check compatiblity report at : /home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/native/libs/binder/libbinder/android_arm_armv7-a-neon_krait_shared_core/libbinder.so.abidiff
*****************************************************
[ 57% 332/577] //system/libhidl/transport:libhidltransport header-abi-diff libhidltransport.so.abidiff
******************************************************
VNDK Abi extended: Please check compatiblity report at : /home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/system/libhidl/transport/libhidltransport/android_arm_armv7-a-neon_krait_shared_core/libhidltransport.so.abidiff
*****************************************************
[ 65% 380/577] //frameworks/base/core/jni:libandroid_runtime clang HookZz/arch/arm/closure-trampoline-template-arm.s
FAILED: /home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/core/jni/libandroid_runtime/android_arm_armv7-a-neon_krait_shared_core/obj/frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.o 
PWD=/proc/self/cwd prebuilts/clang/host/linux-x86/clang-4053586/bin/clang -c -Iframeworks/base/core/jni -Iframeworks/base/core/jni/include -Iframeworks/base/core/jni/android/graphics -Iframeworks/base/core/jni/HookZz -Ibionic/libc/private -Iexternal/skia/include/private -Iexternal/skia/src/codec -Iexternal/skia/src/core -Iexternal/skia/src/effects -Iexternal/skia/src/image -Iexternal/skia/src/images -Iframeworks/base/media/jni -Ilibcore/include -Isystem/media/camera/include -Isystem/media/private/camera/include -Iframeworks/base/core/jni -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -fno-exceptions -Wno-multichar -ffunction-sections -fdata-sections -funwind-tables -fstack-protector-strong -Wa,--noexecstackNinja -Werror=format-security -D_FORTIFY_SOURCE=2 -fno-short-enums -no-canonical-prefixes -DNDEBUG -g -Wstrict-aliasing=2 -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -DNDEBUG -UDEBUG -fdebug-prefix-map=/proc/self/cwd= -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument -fcolor-diagnostics -Wno-expansion-to-defined -fdebug-prefix-map=$PWD/= -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Werror=date-time -nostdlibinc -msoft-float -mfloat-abi=softfp -mfpu=neon -mcpu=krait -mfpu=neon-vfpv4 -D__ARM_FEATURE_LPAE=1 -Iexternal/giflib -Ibionic/libc/seccomp/include -Iexternal/selinux/libselinux/include -Iexternal/pcre/include -Isystem/core/libpackagelistparser/include -Isystem/core/libgrallocusage/include -Isystem/core/libmemtrack/include -Iframeworks/base/libs/androidfw/include -Isystem/core/libappfuse/include -Isystem/core/base/include -Iexternal/boringssl/src/include -Ilibnativehelper/include -Ilibnativehelper/platform_include -Ilibnativehelper/include_jni -Isystem/core/liblog/include -Isystem/core/libcutils/include -Isystem/core/debuggerd/include -Isystem/core/debuggerd/common/include -Isystem/core/libutils/include -Isystem/core/libbacktrace/include -Isystem/core/libsystem/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/native/libs/binder/libbinder/android_arm_armv7-a-neon_krait_static_core/gen/aidl -Iframeworks/native/libs/binder/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/native/libs/binder/libbinder/android_arm_armv7-a-neon_krait_shared_core/gen/aidl -Iframeworks/native/libs/ui/include -Iframeworks/native/libs/nativebase/include -Ihardware/libhardware/include -Isystem/media/audio/include -Iframeworks/native/libs/arect/include -Iframeworks/native/libs/math/include -Iframeworks/native/libs/graphicsenv/include -Iframeworks/native/libs/gui/include -Iframeworks/native/opengl/libs/EGL/include -Iframeworks/native/opengl/include -Iframeworks/native/libs/nativewindow/include -Isystem/libhidl/transport/token/1.0/utils/include -Isystem/libhidl/base/include -Isystem/libhidl/transport/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/system/libhidl/transport/manager/1.0/android.hidl.manager@1.0_genc++_headers/gen -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/system/libhidl/transport/manager/1.1/android.hidl.manager@1.1_genc++_headers/gen -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/system/libhidl/transport/base/1.0/android.hidl.base@1.0_genc++_headers/gen -Isystem/libhwbinder/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/hardware/interfaces/graphics/common/1.0/android.hardware.graphics.common@1.0_genc++_headers/gen -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/hardware/interfaces/media/1.0/android.hardware.media@1.0_genc++_headers/gen -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/hardware/interfaces/graphics/bufferqueue/1.0/android.hardware.graphics.bufferqueue@1.0_genc++_headers/gen -Iframeworks/native/libs/sensor/include -Iframeworks/av/camera/include -Iframeworks/av/camera/include/camera -Isystem/media/camera/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/av/camera/libcamera_client/android_arm_armv7-a-neon_krait_shared_core/gen/aidl -Iexternal/skia/include/android -Iexternal/skia/include/c -Iexternal/skia/include/codec -Iexternal/skia/include/config -Iexternal/skia/include/core -Iexternal/skia/include/effects -Iexternal/skia/include/encode -Iexternal/skia/include/gpu -Iexternal/skia/include/gpu/gl -Iexternal/skia/include/gpu/vk -Iexternal/skia/include/pathops -Iexternal/skia/include/ports -Iexternal/skia/include/svg -Iexternal/skia/include/utils -Iexternal/skia/include/utils/mac -Iexternal/sqlite/dist -Iexternal/sqlite/android -Iframeworks/native/vulkan/include -Isystem/core/libziparchive/include -Ihardware/libhardware_legacy/include -Iexternal/icu/icu4c/source/common -Iframeworks/av/media/libmedia/aidl -Iframeworks/av/media/libmedia/include -Iframeworks/av/media/libstagefright/include -Iframeworks/native/headers/media_plugin -Iframeworks/native/headers/media_plugin/media/openmax -Iframeworks/av/media/libstagefright/foundation/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/hardware/interfaces/media/omx/1.0/android.hardware.media.omx@1.0_genc++_headers/gen -Iexternal/sonivox/arm-wt-22k/include -Iexternal/icu/icu4c/source/i18n -Iexternal/protobuf/src -Isystem/libhidl/libhidlmemory/include -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/system/libhidl/transport/memory/1.0/android.hidl.memory@1.0_genc++_headers/gen -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/av/media/libmedia/libmedia/android_arm_armv7-a-neon_krait_shared_core/gen/aidl -Iframeworks/av/media/libaudioclient/include -Iexternal/libjpeg-turbo -Isystem/core/libusbhost/include -Iexternal/harfbuzz_ng/src -Iexternal/zlib -Iexternal/pdfium/public -Iframeworks/av/media/img_utils/include -Isystem/netd/include -Iframeworks/minikin/include -Iexternal/googletest/googletest/include -Iexternal/freetype/include -Isystem/core/libprocessgroup/include -Isystem/core/libnativebridge/include -Isystem/core/libnativeloader/include -Isystem/core/libmemunreachable/include -Isystem/libvintf/include -Iframeworks/base/libs/hwui -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_arm_armv7-a-neon_krait_static_core/gen/proto/frameworks/base/libs/hwui -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_arm_armv7-a-neon_krait_static_core/gen/proto -Iframeworks/rs/cpp -Iframeworks/rs -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_arm_armv7-a-neon_krait_shared_core/gen/proto/frameworks/base/libs/hwui -I/home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_arm_armv7-a-neon_krait_shared_core/gen/proto -Iexternal/libcxx/include -Iexternal/libcxxabi/include -Isystem/core/include -Isystem/media/audio/include -Ihardware/libhardware/include -Ihardware/libhardware_legacy/include -Ihardware/ril/include -Ilibnativehelper/include -Iframeworks/native/include -Iframeworks/native/opengl/include -Iframeworks/av/include -isystem bionic/libc/arch-arm/include -isystem bionic/libc/include -isystem bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm -isystem bionic/libc/kernel/android/scsi -isystem bionic/libc/kernel/android/uapi -Ilibnativehelper/include_deprecated -target arm-linux-androideabi -Bprebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/arm-linux-androideabi/bin  -D__ASSEMBLY__ -MD -MF /home/ubuntuOS/Android/OpenSource/MoKee/mko-mr1/out/soong/.intermediates/frameworks/base/core/jni/libandroid_runtime/android_arm_armv7-a-neon_krait_shared_core/obj/frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.o.d -o /home/ubuntuOS/Android/OpenSource/MoKee/mkNinjao-mr1/out/soong/.intermediates/frameworks/base/core/jni/libandroid_runtime/android_arm_armv7-a-neon_krait_shared_core/obj/frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.o frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s
frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s:20:13: error: unexpected token in directive
.globl cdecl(closure_trampoline_template)
            ^
frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s:21:35: error: unexpected token in argument list
cdecl(closure_trampoline_template):
                                  ^
frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s:29:22: error: unexpected token in argument list
; closure trampoline just carray the required members from the object.
                     ^
frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s:30:13: error: unexpected token in directive
.globl cdecl(closure_trampoline_template)
            ^
frameworks/base/core/jni/HookZz/arch/arm/closure-trampoline-template-arm.s:31:35: error: unexpected token in argument list
cdecl(closure_trampoline_template):
                                  ^
[ 67% 389/577] //frameworks/base/core/jni:libandroid_runtime clang++ android_os_HwBinder.cpp
ninja: build stopped: subcommand failed.
21:43:55 ninja failed with: exit status 1

#### failed to build some targets (01:29 (mm:ss)) ####

编译时我把这唯一的汇编文件名的后缀由.S改为.s,不改ninja不认没办法。求大神及HookZz作者解惑!

emmmm 没有什么错误日志好像. 看样子是 cdecl macro 和 ; comment 两个问题.

(你可以试下 dev 分支, wechat: winter1ife

dev分支在Android下支持不好。编译出来的后运行ZzReplace就Crash了:

--------- beginning of crash
2019-05-31 13:00:39.570 19884-19884/com.example.ubuntu.testhookzzwithhookzzso A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 19884 (kzzwithhookzzso)
2019-05-31 13:00:39.592 7452-7538/system_process I/BootReceiver: Copying /data/tombstones/tombstone_06 to DropBox (SYSTEM_TOMBSTONE)
2019-05-31 13:01:09.444 19884-19884/com.example.ubuntu.testhookzzwithhookzzso A/libc: failed to resend signal during crash: Operation not permitted
2019-05-31 13:01:09.461 7452-12502/system_process I/ActivityManager: Process com.example.ubuntu.testhookzzwithhookzzso (pid 19884) has died
2019-05-31 13:01:09.462 7452-12502/system_process D/ActivityManager: cleanUpApplicationRecord -- 19884

说回贴中的问题,估计是 gcc 与 clang 两编译器编译asm时有些差别造成的。 编 Android 6.x ROM时,make是用gcc,而Android 8.x ROM时ninja是用clang。我贴一下这两者的build commands上来吧。

Build commands:

ninja clang, 也即本主题的error:
HookZz_asm_error (copy).txt (9.8 KB)

make gcc, 编译成功:
HookZz_asm_gcc (copy).txt (5.1 KB)

ok 感谢.

android 平台,调用ZzReplace,程序崩溃,具体信息如下:希望大神得空时关注下。

08-15 01:58:10.322 4791-4791/com.antutu.ABenchMark A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 4791 (tutu.ABenchMark)
08-15 01:58:10.423 200-200/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-15 01:58:10.423 200-200/? A/DEBUG: Build fingerprint: ‘Android/aosp_hammerhead/hammerhead:6.0/MRA58K/jerry03160831:userdebug/test-keys’
08-15 01:58:10.423 200-200/? A/DEBUG: Revision: ‘0’
08-15 01:58:10.423 200-200/? A/DEBUG: ABI: ‘arm’
08-15 01:58:10.423 200-200/? A/DEBUG: pid: 4791, tid: 4791, name: tutu.ABenchMark >>> com.antutu.ABenchMark <<<
08-15 01:58:10.423 200-200/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
08-15 01:58:10.433 200-200/? A/DEBUG: r0 b4d97c50 r1 a833bba8 r2 be840a90 r3 00000000
08-15 01:58:10.433 200-200/? A/DEBUG: r4 b6d72ec0 r5 b4d97c50 r6 00000008 r7 be840aa0
08-15 01:58:10.433 200-200/? A/DEBUG: r8 00000004 r9 460f4680 sl b6d40968 fp be840adc
08-15 01:58:10.433 200-200/? A/DEBUG: ip b4dc2000 sp be840a90 lr b39c9953 pc b39ca3c8 cpsr 000f0030
08-15 01:58:10.438 200-200/? A/DEBUG: backtrace:
08-15 01:58:10.439 200-200/? A/DEBUG: #00 pc 0000c3c8 /system/lib/libHookZz.so (LiteCollectionIterator::getNextObject()+19)
08-15 01:58:10.439 200-200/? A/DEBUG: #01 pc 0000b951 /system/lib/libHookZz.so (gen_thumb_relocate_code(void*, int*, unsigned int, unsigned int)+276)
08-15 01:58:10.439 200-200/? A/DEBUG: #02 pc 0000beeb /system/lib/libHookZz.so (InterceptRouting::Prepare()+62)
08-15 01:58:10.439 200-200/? A/DEBUG: #03 pc 0000c05d /system/lib/libHookZz.so (FunctionInlineReplaceRouting::Dispatch()+12)

getNextObject() 中奔溃了

你用的是dev分支吧老哥,Android好像有点问题,等大神修复中。