Androidプラットフォームでlibpcapとjpcapをコンパイルして使用します



Compile Use Libpcap



この記事のナビゲーション

1.jpcap.jarとjpcap.soをAndroidプロジェクトにインポートします

Android Studioはサードパーティのjarパッケージをインポートするのは比較的簡単で、特定のストレージパスを必要としません。最初に、app / src / main / Libsの下に配置し、jpcap.soをディレクトリの下に配置することを考えました。app/ buildを構成します。 .gradleコンテンツを作成し、依存関係セクションの下に次の参照を追加します。

dependencies { ... ... compile files('src/main/Libs/jpcap.jar') }

次に、オンラインで見つかるjpcapの参照モジュールコードを作成します。 Jpcapのユースケースコード 主にネットワークデバイスのリストを取得するために、SnifferTraffic.javaに追加されました。



次に、apkをコンパイルして生成し、携帯電話に置いて実行します。結果はapkの実行後に生成され、libjpcap.soが見つからないことを示します。以下のアプリインストールディレクトリへのadbシェルでは、libフォルダーにライブラリファイルがありません。これは、jpcap.soが埋め込まれていないことを示しています。 apkパッケージの中に入る。いくつか検索した後 ブログに 答えが見つかりました。元のjpcap.soの保存パスに問題があります。最も簡単な解決策は、src / main /の下にjniLibsディレクトリを作成し、すべてのネイティブを以下に配置して、依存関係セクションの参照を更新することです。

dependencies { ... ... compile files('src/main/jniLibs/jpcap.jar') }

OK、パスストレージの問題を解決し、コンパイルして実行します。結果はまだエラーであり、libpcap.so.1が見つからないことを示唆しています。ここで誤解が生じ、libpcap.so.1を誤ってlibjpcapと見なしました。 so.1 jpcapか、正しくインポートされていないと思いました。次に、ファイル名を変更するか、libjpcap.soの名前を変更したビットlibjpcap.so.1などのリンクファイルを作成して解決しようとしましたが、常にプロンプ​​トが表示されたlibpcap.so.1が見つかりません。解決策に問題があることを説明します。



次に、嘘をついてよく見てください!プロンプトの名前はlibpcap.so.1であり、libjpcap.so.1ではありません。 jpcapのインポートは正しいが、libpcapは正しくインポートされないことに注意してください。そうすると、IDAはjpcap.soによって参照されるサードパーティライブラリにlibjpcap.so.1が含まれているように見え、問題が最終的に発見されます。次に、上記でコンパイルしたlibpcap.soの名前をlibpcap.so.1に直接変更し、jniLibsディレクトリに配置します。

OK、libjpcap.so.1の問題を解決し、コンパイルして再実行すると、エラーが発生するか、プロンプトlibjpcap.so.1が見つかりません。アプリのインストールディレクトリにadbシェルを追加して、見つかったlibフォルダーのみを表示します。 libjpcap.so oneファイル。libpcap.so.1ファイルはありません。サフィックスxx.so.1がまったくインポートされないことを知った後、libpcap.so.1ファイルはありません。

次に、インターネットを検索し続けて、答えを見つけます。 この記事 この記事の意味は、soファイルの名前、so ELFファイル構造のSONAME名、およびJavaコードのSystem.loadLibrary(soname)を保持することです。注意深い分析は役に立たず、回り道をしました。



とにかく、自分で分析して、 インポートされたサードパーティのライブラリ名がxx.so.1ではない場合、xx.so.1はそれをapkに入れる方法がありません 。インポートされたサードパーティライブラリの名前を強制的にxx.soにし、それをxx.soに配置しました。では、試してみましょう。最初に010editorはjpcap.soで文字列xx.so.1を検索し、次にそれをxx.soに変更してから、xx.soをjniLibsの下に置きます。

最後に、コンパイルして再実行します。OK、エラーxxライブラリが見つかりません。コードがアップしています。ははは〜

しかし、まだ問題があります。デバイスリストは空です。オンラインでは、APPにはroot権限がないと述べています。私はまだこの問題を解決していません。フォローアップの更新。