問題タブ [frida]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - frida-trace onEnter での関数呼び出しの停止
frida
特にfrida-trace
iOSで遊んでいます。
メソッドがフックされ、パラメータをログに記録できる場合onEnter
、この関数呼び出しを早期に終了させ、元のメソッドを呼び出さないようにする方法はありますか?
メソッドに追加しようとしましreturn;
たが、まだ呼び出されており、その間のメソッドが呼び出されています。onEnter
onLeave
android - Frida を使用した抽象クラス メソッド呼び出しの Android フック
私はFridaを学ぼうとしており、これまでに少し実験してきました。ありがたいことに、私を助けるのに十分な例とチュートリアルを見つけることができたので、物事はほとんどうまくいきました。ただし、現時点では、非常に具体的なタスクが迫っています。
以下は、私が参照している Frida フックであるとしましょう。
これまでの私の理解によると、上記の Java.use を使用して、 myPackage.myClass のオブジェクトが作成され、そのオブジェクトがメソッドmethodM1を呼び出す場合は常に、代わりに私の javascript 関数に制御を取得し、言及されていることは何でも行うと言っています。そこで。
期待どおりに機能します。ただし、ポイント (この議論のために興味深い) は次のとおりです。オブジェクトが作成された場合、これが発生します。
同様に、Java.use の代わりに、Java.choose() についても話している場合、状況は同じでした。その場合でも、オブジェクトが作成されたら、コールバックを呼び出すと言っています。
では、抽象クラスのメソッドにフックしようとするとどうなるでしょうか。メソッドにフックしようとしているとしましょう。
java.security.KeyPairGenerator (抽象クラス) の「static getInstance(String)」。
このクラスはabstractであり、実際にはまったく作成されないオブジェクトです。メソッドはstaticであるため、クラス名自体を使用して直接呼び出されます。したがって、この場合、Java.use() も Java.choose() も役に立ちません(上記の私の理解が正しければ)。
では、そのような状況で getInstance() にフックするにはどうすればよいでしょうか?
これは私がすでに試したことです:
しかし、これはうまくいきません。ここでも、オブジェクトが作成されて getInstance() が呼び出されるたびに、それをフックすると仮定します。しかしここでは、KeyPairGeneratorは抽象クラスであるため、そもそも実際にインスタンス化されることはありません。私も試しました:
クラス名.getInstance()
それ以外の
item.getInstance()
それもうまくいきません。
android - Frida を使用した Android フック HTTPS トラフィック
フリーダをさまざまなアプリケーションにフックすることを学ぼうとしています。具体的には、Android アプリケーションに接続しようとしています。Appmon プロジェクトを使用しています。このプロジェクトには、HttpUrlConnection クラスから getInputStream および getOutputStream にフックする HTTPS.js スクリプトがあります。HTTPS.js スクリプトはメソッドを正常にフックしますが、HTTPS トラフィックが送信されると、表示されるデータは暗号化されます。
HTTPUrlConnectionに関する Android ドキュメントによると、URL.openconnection() メソッドが HTTPS URL を受け取ると、HTTPSUrlConnection オブジェクトが返されます。
HttpsURLConnectionの Android ドキュメントには、HttpURLConnection を拡張する抽象クラスであると記載されています。
パブリック抽象クラス HttpsURLConnection は HttpURLConnection を拡張します
Android ソース コードを検索したところ、HttpsURLConnection が抽象的であり、これも抽象的である DelegatingHttpsURLConnection によって拡張されていることがわかりました。DelegatingHttpsURLConnection はHttpsURLConnectionImplによって拡張されます
私は夢中になった
com.android.okhttp.internal.huc.HttpsURLConnectionImpl
これは成功しますが、データはまだ暗号化されています。ここにコードがあります
ところで、これが機能するようになったら、プル リクエストを送信する予定です。
Android のドキュメントには、HTTP リクエストを作成する方法の例があります。
これを読むと、getInputStream() メソッドを呼び出すだけでクリア テキスト ストリームが返されるはずですが、そうではないようです。
質問: HTTPS トラフィックからクリア テキスト データを取得するにはどうすればよいですか? 実際のデータではなく、ヘッダーが表示されます
10/13更新
表示されているデータが暗号化されておらず、単にエンコードされているだけなのだろうかと思っています。これは、私が受け取ったデータの抜粋です。
応答ヘッダーは、gzip でエンコードされていることを示します
送信リクエストには「Accept-Encoding: gzip」ヘッダーがありますが、このスタックオーバーフローの回答に関連しているのでしょうか。GZIPInputStream への呼び出しを追加しようとしましたが、アプリケーションは応答を好みません
更新 2 データをキャプチャすることができます。これは gzip の問題です。私が今直面している問題は、Android デバイス上のアプリケーションが GZIP された入力ストリームを期待していることです。Frida 内でデータを表示するには、GZIPInputStream を介してデータを実行する必要がありますが、再度圧縮してアプリに送信する方法はまだわかりません。GZIPOutputStream で簡単に試してみましたが、うまくいきませんでした。これが私の更新されたコードです。