2017-03-16 3 views
0

私はLinux実行可能バイナリファイル(CまたはC++コンパイル済み)を持っています。ある時点で、プログラムはタイムスタンプを使用して乱数を生成します。カスタムタイムスタンプを返す

乱数の特定のシーケンスを達成する必要があるため、システムへの呼び出しを傍受するスクリプト(好ましいPython)を作成します(AFAIKタイムスタンプを取得し、必要なシーケンスが得られるまでカスタム値を返すために、「フック」と呼ばれます)。実行可能ファイルがタイムスタンプ全体を使用していないので、このようにする必要があります。timestamp % 10000

これは可能ですか?もしそうなら、どうですか?

答えて

1

これは、カーネルの内のからのみ実行できます。だからあなたはPython(または他のユーザー空間プログラム)を使うことができません。Cを使う必要があります。

ロード可能なカーネルモジュールで行う方法もあります。 例があります。 here

1

ライブラリのプリロードメカニズムを使用すると、呼び出しを代行受信して置き換えることができます。 Cライブラリと動的にリンクされているバイナリの場合、time()などの呼び出しを傍受して、別の時間をエミュレートすることができます。

オープンソースの「libfaketime」プロジェクトでは既に偽装時間を実装しています。https://github.com/wolfcw/libfaketime