x86_64 UbuntuでQEMUを使用してAARCH64バイナリ呼び出しlibgpsをエミュレートすると、「エラーの再配置:シンボルが見つかりません」というエラーが発生します。

x86_64 UbuntuでQEMUを使用してAARCH64バイナリ呼び出しlibgpsをエミュレートすると、「エラーの再配置:シンボルが見つかりません」というエラーが発生します。

投稿された質問に似ています。ここそしてここ。名前の付いたバイナリをリバースエンジニアリングしたいです。GPSロガーしかし、GDBでデバッグする前に、QEMU(qemu-aarch64)を使って簡単にエミュレートしたいと思います。なぜなら、実行するとfile gpslogger最初にgpslogger: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, not stripped正しいインタプリタファイルをダウンロードしてUbuntu 16.04 /libx86_64フォルダに貼り付けてから、別のエラーが表示されるからです。.soその後、AARCH64アーキテクチャ用のファイルをダウンロードしてUbuntuフォルダに貼り付けlibgps.soました。すべてのエラーが消えた後.so/lib.sono such file or directory

Error relocating /lib/libgps.so: __strdup: symbol not found
Error relocating /lib/libgps.so: __fdelt_chk: symbol not found
Error relocating /lib/libgps.so: __fprintf_chk: symbol not found
Error relocating /lib/libgps.so: __snprintf_chk: symbol not found
Error relocating /lib/libgps.so: __isnan: symbol not found
Error relocating /lib/libgps.so: __syslog_chk: symbol not found
Error relocating /lib/libgps.so: __vsnprintf_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __snprintf_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __vsnprintf_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __strncpy_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __vfprintf_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __fprintf_chk: symbol not found
Error relocating /lib/libdbus-1.so.3: __vsprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __sprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: reallocarray: symbol not found
Error relocating /lib/libsystemd.so.0: __register_atfork: symbol not found
Error relocating /lib/libsystemd.so.0: __memcpy_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __snprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __vsnprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __strncpy_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __vasprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __open64_2: symbol not found
Error relocating /lib/libsystemd.so.0: __asprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __fprintf_chk: symbol not found
Error relocating /lib/libsystemd.so.0: __ppoll_chk: symbol not found
Error relocating /lib/libsystemd.so.0: fcntl64: symbol not found
Error relocating /lib/libsystemd.so.0: __explicit_bzero_chk: symbol not found
Error relocating /lib/libsystemd.so.0: parse_printf_format: symbol not found
Error relocating /lib/libsystemd.so.0: __openat64_2: symbol not found
Error relocating /lib/libgcrypt.so.20: __memcpy_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __snprintf_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __fdelt_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __vfprintf_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __memset_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __fprintf_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __read_chk: symbol not found
Error relocating /lib/libgcrypt.so.20: __syslog_chk: symbol not found
Error relocating /lib/libgpg-error.so.0: __sprintf_chk: symbol not found
Error relocating /lib/libgpg-error.so.0: __fdelt_chk: symbol not found
Error relocating /lib/libgpg-error.so.0: __vfprintf_chk: symbol not found
Error relocating /lib/libgpg-error.so.0: __memset_chk: symbol not found
Error relocating /lib/libgpg-error.so.0: __fprintf_chk: symbol not found
Error relocating gpslogger: GPSNMEA: symbol not found

最後の再配置エラーを除いて、他のすべての機能はにあるべきだと思いますglibc。だから私はlibc-2.32.soファイルをダウンロードしました。ここAARCH64アーキテクチャの場合は、/libUbuntuフォルダに貼り付けました。しかし、エラーは消えません。より多くの情報が必要な場合はお知らせください。この問題に関してご協力いただきありがとうございます。

編集する:

readelf -d gpslogger | grep 'NEEDED'返品:

0x0000000000000001 (NEEDED) Shared library: [libgps.so]

0x0000000000000001 (NEEDED) Shared library: [libc.musl-aarch64.so.1]

ではなくlibcから来たという意味ですか?muslglibc

ベストアンサー1

出力の「インタプリタ」は、/lib/ld-musl-aarch64.so.1muslで構築されたことを意味します。これはmusl動的リンカー()だけでなく。filegpsloggerld-musl-aarch64.so.1gpslogger

リストされていない記号は、インストールしたライブラリがglibc用に構築されたことを示します。

おすすめ記事