在使用NDK和NativeActivity进行攻击时,我无法获得有关触摸输入的有用信息 - 我只是获得了标记的混淆信息。
这是相关代码的片段(从样本中的plasma.c编辑):
static int32_t engine_handle_input(struct android_app* app, AInputEvent* event) {
struct engine* engine = (struct engine*)app->userData;
LOGI("Event: action=%d\nkeyCode=%d\nmetaState=0x%x\nAction=0x%x\nx=%d\ny=%d"
"\nflags=0x%x\nxprec=%d\nyprec=%d\nxoff=%d\nyoff=%d\nguessX=%d\n\n",
AKeyEvent_getAction(event),
AKeyEvent_getKeyCode(event),
AKeyEvent_getMetaState(event),
AMotionEvent_getAction(event),
AMotionEvent_getX(event,0),
AMotionEvent_getY(event,0),
AMotionEvent_getFlags(event),
AMotionEvent_getXPrecision(event),
AMotionEvent_getYPrecision(event),
AMotionEvent_getXOffset(event),
AMotionEvent_getYOffset(event))
return 0;
}
这是我触摸屏幕时得到的那种日志输出:
I/libplasma(24786): Event: action=1
I/libplasma(24786): keyCode=0
I/libplasma(24786): metaState=0x0
I/libplasma(24786): Action=0x1
I/libplasma(24786): x=1074838969
I/libplasma(24786): y=1073741824
I/libplasma(24786): flags=0x408cf365
I/libplasma(24786): xprec=-2147483648
I/libplasma(24786): yprec=1081822550
I/libplasma(24786): xoff=0
I/libplasma(24786): yoff=1074839057
I/libplasma(24786):
我不确定我应该如何从这个垃圾中提取有用的信息,我找不到关于NDK NativeActivity输入的单一教程。这里有NDK大师吗?
答案 0 :(得分:3)
floats
。
AMotionEvent_getX(event,0)
AMotionEvent_getY(event,0)
AMotionEvent_getFlags(event)
AMotionEvent_getXPrecision(event)
AMotionEvent_getYPrecision(event)
AMotionEvent_getXOffset(event)
AMotionEvent_getYOffset(event)
如果我将它们用作%f
的浮点数,这是我的输出:
I/libplasma(29039): Event: action=1
I/libplasma(29039): keyCode=0
I/libplasma(29039): metaState=0x0
I/libplasma(29039): Action=0x1
I/libplasma(29039): x=1513.833618
I/libplasma(29039): y=697.899841
I/libplasma(29039): flags=0x0
I/libplasma(29039): xprec=1.533854
I/libplasma(29039): yprec=1.547500
I/libplasma(29039): xoff=0.000000
I/libplasma(29039): yoff=0.000000
如果将来有人遇到此问题,请务必打开源文件android/input.h
以获取有关每项功能的信息。默认情况下,它位于<NDK-Install-Path>/platforms/<ndk-platform>/arch-arm/usr/include/android/input.h
。