2
votes

I have downloaded the libpcap in external folder from android source code using the Git and repo. I used the toolcains of ndk (android-ndk-r5b) to compile the library following these steps:

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

and then a file libpcap.a is produced.

I have make a simple sniffer using libpcap (sniffer.c). When I try to compile it, these errors occur: 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'

when I try to produce the object code in advance: agcc -c sniffer.o sniffer.c the same errors occured.

Can someone explain me how to solve this problem?

here is the alias of agcc I use in bashrc file: ./configure --prefix=/home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/

Also, I have attached a file with the outputs of the commands above: configure, make and make install.

(I put the errors in code style because there were errors of alignment)

Thank you in advance!

-- update --

I used the options -I and -L to specify the include and library files, and these errors are gone now..

Here is my new error log:

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

any ideas?

1

1 Answers

2
votes

Heading

I couldn't find the solution following the way I describe above, but I made it through writing a Android.mdk file and by using the ndk-build of android NDK.

I put the libpcap direcotry into the android-ndk-r5b/samples, I modified a bit the Android.mdk and the structure of the direcotry, so as to look like the other ones inside the samples dir and I used the ndk-build command inside the android-ndk-r5b direcory:

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

All worked fine! I was able to produce a libpicap.so file, and put it in the phone using the commands:

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

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

I made a simple sniffer, I compiled and linked with the libpcap.so and works perfectly in my HTC Hero! ;)