問題タブ [function-interposition]

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.

0 投票する
1 に答える
298 参照

macos - 実行する前に新しいプロセスのPIDを取得するにはどうすればよいですか?

inject_and_interposeコードを使用してインジェクションとインターポーズを実行できるように、実際に実行する前に、新しく起動したプロセス(一般的なクローズドソースユーザーアプリケーション)のPIDを取得する方法が必要です。

明確にするために、私は単に「すぐに気付く」よりもうまくやる必要があります。ポーリングしたり、アクションを実行するまでにプロセスがすでに数ミリ秒実行されていることを意味する非同期通知を受信したりすることはできません。

単一のステートメントが実行される前に、注入と介入を行う機会が必要です。

特定の名前のプロセスが発生したときに同期的に通知されるバックグラウンドプロセスを作成することはできます。また、ターゲットアプリケーションを起動するランチャーアプリケーションを作成することもできます。

すべてのソリューションは、少なくとも10.5(Leopard)から10.8(Mountain Lion)未満の64ビットコードをサポートする必要があります。

これが非常に単純であることが判明した場合は、先に進んで、OSXを初めて使用することを認めます:)ありがとうございます。

0 投票する
1 に答える
297 参照

c - 構造内に関数ポインタとして定義されたC関数を挿入する

おはようございます、

dyld介入機能を使用して、この種のC関数を挿入することは可能ですか? 

関数の呼び出し方法:

0 投票する
1 に答える
4056 参照

linux - 多くの競合する機能を持つ2つの共有ライブラリとリンクする方法

現在、Linux上の2つのサードパーティ共有ライブラリ(A.soとB.so)とリンクしています。問題は、2つのsoの両方が別のライブラリと静的にリンクされていることです。その結果、A.soとB.soから同じ名前の関数が約400個あります。コンパイルして-lA-lBまたは-lB-lAとリンクすると、問題の原因となった関数の挿入の結果として、関数がAまたはBから個別に取得され、コードが実行できなくなります。関数名をライブラリにバインドして、両方のライブラリをリンクして使用できるようにする方法があるかどうか疑問に思っていますか?これらの重複する関数名はAとBの内部で呼び出されるため、objcopyなどを使用できません。dlopenは役に立ちますか?

0 投票する
1 に答える
568 参照

c - C 関数をフックする

AudioUnitInitializeアプリケーションの開始時にバンドルを挿入して、アプリケーションの Audio Unit を取得する関数をフックしたいと考えています。
例 ( http://pastie.org/1882125 ) を見つけましたが、関数を使用してMSHookFunction関数名を置き換えています。問題は、iOS ではなく Mac OS X で機能を置き換えたいことです。
C 関数をフックする別の方法はありますか?

0 投票する
2 に答える
1311 参照

osx-mavericks - OSX Mavericks での関数介入

このサイトの指示に従ってください。

http://www.newosxbook.com/src.jl?tree=listings&file=4-5-interpose.c

これがそのページのコードです

OSX の最新バージョンまたはここに記述されているコードに何か違いはありますか? 何も傍受していないようでした。

0 投票する
2 に答える
3417 参照

macos - 任意のプログラムにシグナルを無視させることは可能ですか?

特に Mac OS X では、プログラムが DYLD_INSERT_LIBRARIES を介して SIGTERM を無視するようにすることは可能ですか?

これをコンパイルして挿入しようとしました:

でも、

問題なく kill -15 できました。

0 投票する
1 に答える
1629 参照

android - 私のAndroidアプリのシステムコールをフックする方法

connect() システム コールをインターセプトし、独自のカスタム実装を使用したいと考えています。カスタム実装は、簡単にするためにログを出力するなどのアクションを実行してから、システム実装をさらに呼び出します。

PLT にパッチを適用するというアプローチの Audrey のブログを見ました。しかし残念なことに、再配置テーブルのアドレスを変更しようとすると、このコードがクラッシュします。

しばらくゴーグリングした後、これはすでに質問に答えています。しかし、ここで説明するアプローチでは、次のエラーが発生します。

***** ケース ラベルにジャンプ [-fpermissive] jni/test.cpp:107:20: エラー: 'uint32_t entry_page_start' の初期化を超えています jni/test.cpp:106:15: エラー: 'uint32_t page_size の初期化を超えています'*****

提案された変更の後のAndrey のブログからのフック呼び出しメソッドHereは、次のようになります。

私は何を間違っていますか、mProtect() メソッドを間違った場所に置いていますか? アンドレイのブログの助けを借りてそれをやった人はいますか? 他のアプローチはありますか?私はブロックされています。どんな助けでも大歓迎です。

0 投票する
2 に答える
1799 参照

matlab - 補間を実行するための Polyfit と polyval

私は持っている

x = linspace(-5,5,256) y = 1./(1+x.^2) plot(x,y,'...') %plot of (x,y)

多項式が 11 点でグラフと交差するように、次数 10 の多項式でこれを推定したいと考えています。

だから、私はこれをしました:

x2 = linspace(-5,5,11) y2 = 1./(1+x2.^2) p = polyfit(x2,y2,10) %finds coefficients of polynomial of degree 10 that fits x2,y2 y3 = polyval(p,x2) plot(x,y,x2,y3,'...')

polyfit は 10 次までの多項式の係数を与えてくれると思いました。これはポイント(x2,y2)(つまり 11 ポイント)と交差し、y3本質的にyは 10 次多項式が着地する場所の値にすぎないので、それらをまとめてプロットすると 10 次が得られます。多項式、元のグラフと 11 の一意の点で交差しますか?

私は何を間違えましたか?

私の結果:ここに画像の説明を入力

0 投票する
1 に答える
1218 参照

c - 標準 C および C++ ライブラリでの malloc 関数の挿入

リンク先のアプリケーションからメモリ使用量を分離できるように、共有ライブラリを作成したいと考えています。つまり、共有ライブラリを と呼びましょう を呼び出す場合libmemory.somallocそのメモリを、アプリケーションで行われた への呼び出しを処理するために使用されるヒープとは別のヒープに維持したいと考えてmallocいます。この質問は、メモリ アロケータの作成に関するものではなく、ライブラリとアプリケーションをリンクしてロードすることに関するものです。

これまでのところ、関数の挿入、シンボルの可視性、およびリンクのトリックの組み合わせを試してきました。これまでのところ、1 つの理由でこれを正しく理解できませんでした: 標準ライブラリです。アプリケーションと内部mallocで発生する標準ライブラリの呼び出しを区別する方法が見つかりません。libmemory.soこれにより、内部で標準ライブラリを使用libmemory.soするとアプリケーション ヒープが汚染されるため、問題が発生します。

malloc私の現在の戦略は、共有ライブラリに の定義を隠しシンボルとして挿入することです。これはうまく機能し、実行時に動的にロードされる標準ライブラリを除いて、すべてのライブラリ コードが期待どおりに機能します。当然のことながら、標準ライブラリの使用法を静的に組み込み、コンパイル時に挿入mallocされた inを使用する方法を見つけようとしてきました。libmemory.so私は試してみましたが-static-libgcc成功し-static-libstdc++ませんでした(とにかく、これは推奨されていないようです)。これは正しい答えですか?

どうする?

Ps、さらに読んでいただければ幸いです。質問のタグ付けに関するヘルプがあれば幸いです。