2

Gitとレポを使用して、Androidソースコードから外部フォルダーにlibpcapをダウンロードしました。次の手順に従ってライブラリをコンパイルするために、ndk (android-ndk-r5b) のツールケインを使用しました。

./configure --prefix=path-to-android-src/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin make clean make make install

そして、ファイル libpcap.a が生成されます。

libpcap (sniffer.c) を使用して単純なスニファーを作成しました。コンパイルしようとすると、次のエラーが発生します: agcc sniffer.c libpcap.a

sniffer.c:9:18: error: pcap.h: No such file or directory
sniffer.c:19: warning: 'struct pcap_pkthdr' declared inside parameter list
sniffer.c:19: warning: its scope is only this definition or declaration, which is      probably not what you want
sniffer.c: In function 'processPacket':
sniffer.c:23: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:24: error: dereferencing pointer to incomplete type
sniffer.c:26: error: dereferencing pointer to incomplete type
sniffer.c:33: error: dereferencing pointer to incomplete type
sniffer.c: In function 'main':
sniffer.c:45: error: 'pcap_t' undeclared (first use in this function)
sniffer.c:45: error: (Each undeclared identifier is reported only once
sniffer.c:45: error: for each function it appears in.)
sniffer.c:45: error: 'descr' undeclared (first use in this function)
sniffer.c:46: error: 'PCAP_ERRBUF_SIZE' undeclared (first use in this function)
sniffer.c:62: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:66: warning: incompatible implicit declaration of built-in function 'fprintf'
sniffer.c:66: error: 'stderr' undeclared (first use in this function)
sniffer.c:72: warning: incompatible implicit declaration of built-in function 'fprintf'

事前にオブジェクト コードを作成しようとすると、agcc -c sniffer.o sniffer.c と同じエラーが発生しました。

誰かがこの問題を解決する方法を説明できますか?

以下は、bashrc ファイルで使用する agcc のエイリアスです: ./configure --prefix=/home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/

また、上記のコマンド (configure、make、make install) の出力を含むファイルを添付しました。

(アラインメントのエラーがあったので、エラーをコード スタイルに入れました)

前もって感謝します!

- アップデート -

オプション -I および -L を使用して、インクルード ファイルとライブラリ ファイルを指定しましたが、これらのエラーはなくなりました。

ここに私の新しいエラーログがあります:

agcc --static -I /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/include -L /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/lib -o sniffer sniffer.c libpcap.a

/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
libpcap.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

何か案は?

4

1 に答える 1

2

見出し

上記の方法で解決策を見つけることができませんでしたが、 Android.mdk ファイルを作成し、Android NDK の ndk-build を使用して解決しました。

libpcap ディレクトリを android-ndk-r5b/samples に入れ、Android.mdk とディレクトリの構造を少し変更して、samples ディレクトリ内の他のディレクトリと同じように見えるようにし、ndk-build コマンドを使用しました。 android-ndk-r5b ディレクトリ内:

ndk-build -C samples/android-ndk-r5b

すべてうまくいきました!libpicap.so ファイルを生成し、次のコマンドを使用して電話に入れることができました。

                 in android (phone):
                 $ su
                 # mount -o,rw remount /dev/block/mtdblock4 /system/lib

                 in my Desktop:
                 $ adb push libpcap.so /system/lib/

簡単なスニファを作成し、libpcap.so をコンパイルしてリンクし、HTC ヒーローで完全に動作しました! ;)

于 2011-03-30T14:07:54.417 に答える