SM-A500FU执行afl-fuzz报错:64位ELF文件不可执行
解决afl-fuzz在SM-A500FU上“64-bit ELF file”无法执行问题
核心原因
SM-A500FU(Galaxy A5 2015)是32位ARMv7架构设备,无法运行你编译的64位ARM64(arm64-v8a)版本afl-fuzz,这就是报错的根本原因。
解决步骤
1. 确认设备架构
在设备终端执行:
uname -m
输出应为armv7l,验证设备确实是32位ARM架构。
2. 正确编译32位ARM(armeabi-v7a)版afl-fuzz
- 配置Android NDK交叉编译工具链:
确保你已安装对应版本的Android NDK,然后设置环境变量(替换为你的NDK实际路径):export NDK_PATH=/path/to/your/android-ndk export TOOLCHAIN=$NDK_PATH/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 export PATH=$TOOLCHAIN/bin:$PATH export CC=arm-linux-androideabi-gcc export CXX=arm-linux-androideabi-g++ export CFLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -pie -fPIE" export LDFLAGS="-pie -fPIE" - 清理之前的编译缓存:
make clean - 针对Frida模式编译afl-fuzz:
按照指南中的编译步骤,确保编译脚本针对32位ARM架构生成二进制文件。如果Makefile中有架构选项,明确指定armv7。
3. 排查编译异常
如果编译armeabi-v7a时仍报错,按以下方向排查:
- 检查NDK版本兼容性:避免使用过高版本的NDK,建议用NDK r16b及以下版本(旧版工具链对ARMv7支持更稳定)。
- 确认依赖项:确保编译环境中安装了必要的依赖(如
build-essential、libssl-dev等,针对Linux编译环境)。 - 查看具体错误日志:把编译时的错误信息复制出来,定位是工具链路径错误、语法兼容问题还是依赖缺失。
4. 验证并运行
编译完成后,在本地用file命令检查二进制文件:
file afl-fuzz
输出应包含ELF 32-bit LSB pie executable, ARM字样。将文件推送到设备,确保权限为rwxrwxrwx,再次执行./afl-fuzz即可正常运行。
内容的提问来源于stack exchange,提问作者slsanna
相关产品推荐
相关产品推荐

