Ошибка: не может учитывать суффикс ширины - `mov r2,#0x0'
Я пишу такой код:
void inline hook_cacheflush(unsigned int begin, unsigned int end)
{
const int syscall = 0xf0002;
__asm __volatile (
"mov r0, %0\n"
"mov r1, %1\n"
"mov r7, %2\n"
"mov r2, #0x0\n"
"svc 0x00000000\n"
:
: "r" (begin), "r" (end), "r" (syscall)
: "r0", "r1", "r7"
);
}
Android.mk
LOCAL_PATH := $(call my-dir)
ifneq ($(TARGET_ARCH_ABI),arm64-v8a)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../android \
$(LOCAL_PATH)/../inspector
LOCAL_MODULE := DexHunter
LOCAL_SHARED_LIBRARIES := Inspector
LOCAL_SRC_FILES := DexHunter.cpp
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../so/$(TARGET_ARCH_ABI) -ldvm -llog
include $(BUILD_SHARED_LIBRARY)
endif
когда я запускаю сборку gradlew.bat, получаю ошибку:
Android NDK: ПРЕДУПРЕЖДЕНИЕ:G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/Android.mk:DexHunter: несистемные библиотеки в флагах компоновщика: -ldvm Android NDK: это может привести к неправильные сборки. Попробуйте вместо этого использовать LOCAL_STATIC_LIBRARIES Android NDK: или LOCAL_SHARED_LIBRARIES, чтобы перечислить библиотечные зависимости Android NDK: текущий модуль Android NDK: ПРЕДУПРЕЖДЕНИЕ: G: /tuoke_software/Inspector-master/app/src/main/jni/trace_anti/Aceroid: несистемная библиотека в параметрах компоновщика: -ldvm Android NDK: это может привести к неправильной сборке. Попробуйте вместо этого использовать LOCAL_STATIC_LIBRARIES Android NDK: или LOCAL_SHARED_LIBRARIES, чтобы перечислить библиотечные зависимости Android NDK: текущий модуль Android NDK: ПРЕДУПРЕЖДЕНИЕ: G: /tuoke_software/Inspector-master/app/src/main/jni/adbi/dk/Android:dalvikhook: LOCAL_LDLIBS всегда игнорируется для статических библиотек Android NDK: ПРЕДУПРЕЖДЕНИЕ: G: /tuoke_software/Inspector-master/app/src/main/jni/adbi/ddi/Android.mk:dalvikhook: несистемные библиотеки в флагах компоновщика: -ldvm Android NDK: это может привести к неправильной сборке. Попробуйте вместо этого использовать LOCAL_STATIC_LIBRARIES Android NDK: или LOCAL_SHARED_LIBRARIES, чтобы получить список библиотечных зависимостей Android NDK: текущий модуль Android NDK: ПРЕДУПРЕЖДЕНИЕ: G: /tuoke_software/Inspector-master/app/src/main/jni/dvmutil/Android: несистемные библиотеки в флагах компоновщика: -ldvm Android NDK: это может привести к неправильной сборке. Попробуйте вместо этого использовать LOCAL_STATIC_LIBRARIES Android NDK: или LOCAL_SHARED_LIBRARIES, чтобы получить список библиотечных зависимостей Android NDK: текущий модуль [armeabi] Скомпилировать большой палец: base <= hook.c G:/tuoke_software/Inspector-master/app/src/main/jni/adbi/base/hook.c:205:6: предупреждение: неявное объявление функции 'u nlockpt' недопустимо в C99 [-Wimplicit-function-объявление] if (unlockpt (coms)<0) {^ G: / tuoke_software / Инспектор-мастер /app/src/main/jni/adbi/base/hook.c:211:23: предупреждение: неявное объявление функции ' ptsname' недопустимо в C99 [-Wimplicit-function-объявление] strcpy (ptsn, (char) ptsname (* coms)); ^ 2 предупреждения сгенерированы. C:\Users\johnyang\AppData\Local\Temp\hook-abd8f4.s: Сообщения ассемблера: C:\Users\johnyang\AppData\Local\Temp\hook-abd8f4.s:80: Ошибка: невозможно определить суффикс ширины -- `mov r2,#0x0' clang.exe: ошибка: команда ассемблера завершилась неудачно с кодом выхода 1 (используйте -v для просмотра вызова) make: *** [G:/tuoke_software/Inspector-master/app/build/ middleates/ndkBuild/debug/obj/local/armeabi/objs-debug/base/h ook.o] Ошибка 1
- Попробуйте: Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --debug, чтобы получить больше вывода журнала.
СТРОИТЬ НЕУДАЧИ
поэтому я изменяю свой Android.mk следующим образом:
LOCAL_PATH := $(call my-dir)
ifneq ($(TARGET_ARCH_ABI),arm64-v8a)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../android \
$(LOCAL_PATH)/../inspector
LOCAL_MODULE := DexHunter
LOCAL_SHARED_LIBRARIES := Inspector
LOCAL_SRC_FILES := DexHunter.cpp
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../so/$(TARGET_ARCH_ABI) -llog
include $(BUILD_SHARED_LIBRARY)
endif
когда я перестраиваю, я получаю эту ошибку:
1 предупреждение сгенерировано. G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/DexHunter.cpp:768: ошибка: неопределенная ссылка на 'dexStringCacheInit(DexStringCache*)' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/DexHunter.cpp:769: ошибка: неопределенная ссылка на 'dexProtoGetMethodDescriptor(DexProto const*, DexStringCache*)' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/D:405: ошибка: неопределенная ссылка на 'dvmThreadSelf()' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/DexHunter.cpp:405: ошибка: неопределенная ссылка на 'dvmDecodeIndirectRef(Thread*, _jobject) *)' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/DexHunter.cpp:467: ошибка: неопределенная ссылка на'dvmDefineClass(DvmDex*, char const*, Object*)' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/DexHunter.cpp:476: ошибка: неопределенная ссылка на 'dvmInitClass' G:/tuoke_software/Inspector-master/app/src/main/jni/DexHunter/../android/common.h:50: ошибка: неопределенная ссылка ence to 'dvmGetRelativeTimeNsec()' clang++.exe: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова) make: *** [G:/tuoke_software/Inspector-master/app/build/ промежуточный тип /ndkBuild/debug/obj/local/x86/libDexHunter.so] Ошибка 1
кто поможет мне решить проблему?