Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
strilight — ストライド区間解析によりx86-64バイナリのループを閉形式のSMT制約へリフトし、O(1)のシンボリック実行とcrackmeのキー回復を可能にします。 | Kitploit
ツール/GitHubGitHub/asama7706r-ui/strilight
静的分析コード分析リバースエンジニアリングバイナリ解析
GitHubasama7706r-ui/strilight

strilight

ストライド区間解析によりx86-64バイナリのループを閉形式のSMT制約へリフトし、O(1)のシンボリック実行とcrackmeのキー回復を可能にします。

リポジトリを見るウェブサイト
231ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Strilight (v0.2.0)

Python および C 向けの高性能代数ループリフティング&厳密有理漸化式エンジン

Release Python Version Complexity Exact Arithmetic Tests License


概要: 反復する必要があるのか、それとも解けるのか?

従来のコンパイラ、ランタイム、JIT エンジン(GCC、Clang、PyPy、Numba など)は、ループを反復的な制御フローシーケンスとして扱い、命令をステップバイステップで実行します:

$$ \text{Runtime Cost} = \mathcal{O}(N) $$

$N = 10^6$ や $N = 10^9$ の場合、逐次実行には数十億の CPU サイクルがかかります。Strilight は記号的代数リフティングによってループ実行を根本から再設計します:

  1. 状態遷移の定式化: ループ本体を静的に検査し、その数学的状態遷移行列を定式化します:

$$ \vec{\mathbf{X}}(N) = \mathbf{A}^N \cdot \vec{\mathbf{X}}0 + \sum{k=0}^{N-1} \mathbf{A}^{N-1-k} \vec{\mathbf{B}} $$

  1. 閉形式解: 漸化式システムを閉形式で解き、実行時間を $\mathcal{O}(N)$ から $\mathcal{O}(1)$(スカラー/周期的/テレスコープ級数の場合)または $\mathcal{O}(\log N)$(高速なバイナリ行列累乗による)へと削減します。

設計哲学: 開発者の QoL を最優先

Strilight は難解な魔法を導入するふりはしません。本質的には開発者の QoL ツールです。

物理モデリング、科学技術計算、数値シミュレーションの分野では、エンジニアはしばしば苛立たしいジレンマに直面します:

  • 可読性の高いコード: 教科書の物理をそのまま反映した自然で表現豊かな方程式だが、数百万回反復すると実行が遅い。
  • 手動最適化コード: 複雑で手作業でアンロールされたループや難解な算術ショートカットにより高速に動作するが、脆く、デバッグが困難で、根底にある物理を覆い隠してしまう。

Strilight はこのジレンマを解決します。 物理的・数学的概念を、好みのわかりやすく自然な構文で書くだけです。Strilight がループ構造を検査し、厳密な閉形式漸化式を導出し、舞台裏で実行を高速化します—コードベースの完全な可読性とシンプルさを保ちながら。


アーキテクチャの基盤

1. $\mathbb{Q}$ 上の厳密有理演算(精度損失ゼロ)

浮動小数点演算は累積的な切り捨て誤差を導入します($1/3 \times 3 \approx 0.9999999999999999$)。Strilight は有理数体 $\mathbb{Q}$ 上でアフィン帰納法とストライド解析を実行します:

  • 乗数とオフセットは正準分数($\frac{p}{q}$)としてモデル化されます。
  • C では倍精度カーネルを、Python では厳密な Fraction 表現を出力し、100% ビット単位で正確な数学的整合性を保証します。

2. 多変数連成漸化式システム($\mathcal{O}(\log N)$)

互いに依存し合う変数(例: 位置が速度に依存し、速度が加速度に依存する物理シミュレーション)は自動的に変数結合行列($\mathbf{A}$)に抽出されます。Strilight は $\mathbf{A}$ に対してバイナリ累乗を実行し、数百万回の反復を2 ナノ秒未満で実行します。

3. 透過的な @accelerate デコレータ(仕組み)

標準的な Python 関数を @accelerate でデコレートすると、関数定義時に自動パイプラインが実行されます(呼び出しごとの実行時解析オーバーヘッドはゼロ):

  1. AST 抽出: 関数の AST を検査し、for ループ構文を特定して、帰納変数を抽出します。
  2. 閉形式合成: ループを等価な閉形式漸化式モデルまたはバイナリ行列累乗カーネルに変換します。
  3. インプレース置換: ループの AST ノードをインプレースで置き換え、呼び出し可能オブジェクトをメモリにコンパイルし、モジュール名前空間を汚染することなく実行時グローバル(Fraction、math)を注入します。
  4. 契約リフレクション: コンパイルされた関数オブジェクトに _loop_summary と _invariant_contract を付加し、下流のコンパイラや検証ツールが基盤となる遷移行列 $\mathbf{A}$ を検査できるようにします。
  5. グレースフルフォールバック: 非線形インデックスやサポートされていない動的呼び出しに遭遇した場合、Strilight は診断警告を発し、クラッシュすることなくネイティブ実行へクリーンにフォールバックします。
from strilight import accelerate

@accelerate
def compute_simulation(steps: int) -> int:
    acc = 0
    for i in range(steps):
        acc += (i * 3) + 7
    return acc

# Executes in O(1) time (~0.001 ms even if steps = 100,000,000)
result = compute_simulation(100_000_000)

4. 契約誘導型Cソースディレクティブ(#pragma strilight)

Pythonの動的リフレクションとは異なり、StrilightにおけるCコード変換は、OpenMPスタイルのpragmaディレクティブを介した明示的な開発者契約モデルに厳密に従います。エンジンはCソースコードを暗黙的に変更することは決してなく、変換は明示的な開発者契約条項(contract、target、include、model)によって指示された場合にのみ実行されます:

  • #pragma strilight accelerate:注釈が付けられたCのforループを等価な閉形式数式へ持ち上げることをStrilightに明示的に許可します。
  • #pragma strilight fuse:同一の反復領域を共有する指定された隣接ループを、統合された$\mathcal{O}(\log N)$バイナリ行列漸化式カーネルへ融合するようStrilightに指示する明示的な開発者ディレクティブです。
// Example of contract-guided multi-loop fusion via developer directive
int simulate_motion(int n) {
    int pos = 0, vel = 10;

    #pragma strilight fuse
    for (int i = 0; i < n; i++) {
        pos += vel;
    }
    for (int i = 0; i < n; i++) {
        vel += 2;
    }
    return pos;
}

5. ファイル間のシンボルと定数の解決 (CrossFileResolver)

数値シミュレーションでは、パラメータを別のヘッダーファイルや設定モジュールで定義することが頻繁にあります。Strilight の CrossFileResolver は次のことを行います:

  • ローカルモジュールのインポートや C の #include / #define ディレクティブを静的に追跡します。
  • 任意のランタイムコードを実行したり、安全でない eval を使用したりすることなく、AST 評価を通じてファイル間のリテラル定数式(例: SOLAR_MASS = 4 * PI * PI)を評価します。

6. 配列スライスの帰納と巡回テーブル参照

  • 巡回配列参照: 巡回テーブル参照(table[i % P])を、事前計算された累積和の閉形式へと $\mathcal{O}(1)$ で持ち上げます。
  • インプレースの配列スライス変更: 定数による埋め込みや等差数列を分類し、最適なハードウェア memset 呼び出しやベクトルスライス代入(arr[:N] = ...)を合成します。

7. 物理的・運動学的アクセラレーションの内部動作

力学や天体物理のシミュレーション(例: $N$ 体問題、軌道力学、粒子運動学)では、物理的な物体が、急激な衝突や方向転換を伴わずに、滑らかで摂動のない軌道を長時間にわたって移動することが頻繁にあります:

  • 解析的軌道合成: Strilight は、粒子や天体が摂動のない重力軌道または線形軌道に従っていることを識別すると、反復的な時間ステップループを、可能な限り最小の数学的演算(解析的なケプラー/調和軌道の定式化)へと畳み込みます — 座標の精度を犠牲にすることなく。
  • 複雑なイベントへの遷移: 複雑なイベント(離散的な衝突、境界壁への衝突、不規則な多体結合など)が発生すると、実行は専用の衝突結合行列($\mathbf{A}$)や局所的なシミュレーション段階へと遷移します。
  • コードリスクゼロ: Strilight は完全に非侵襲的です。Python では単一の @accelerate デコレータ、C では標準の #pragma です。アルゴリズムやビジネスロジックを変更することなく、いつでも追加・削除できます。
  • 断固たる優雅なフォールバック: Strilight が、構造化されていない副作用、未知の外部呼び出し、または非アフィンなダイナミクスを含むループに遭遇した場合、アクセラレーションの試行を断固としてかつクリーンに停止し、ネイティブ実行へフォールバックします。プログラムがクラッシュすることは決してありません。

8. AI コーディングアシスタントとの連携とアクセラレーションされたコードの検査

現代の AI コーディングアシスタント(Claude、Gemini、GPT、Jules など)は、代数式や閉形式の方程式を扱う際に優れた能力を発揮します。Strilight は、開発者や AI エージェントが合成されたコードと数学的契約を直接検査できるようにします:

Python における数学的契約の検査:

from strilight import accelerate

@accelerate
def compute_energy(steps: int) -> int:
    total = 0
    for i in range(steps):
        total += 15
    return total

# Execute once to trigger definition-time synthesis
result = compute_energy(100)

# Inspect the underlying mathematical contract:
summary = compute_energy._loop_summary
print("Extracted Induction Formulas:", summary.to_induction_formulas())
print("Invariant Contract:", compute_energy._invariant_contract.to_dict())

スタンドアロンの高速化 C ソースの生成:

C ソースコードを直接 accelerate_c_source に渡すことで、検査可能で人間が読める高速化 C カーネルを生成できます:

import strilight as sl

c_source = """
long long simulate(void) {
    long long total = 0;
    #pragma strilight accelerate target(total)
    for (int i = 0; i < 1000000; i++) {
        total += 42;
    }
    return total;
}
"""

accelerated_c = sl.accelerate_c_source(c_source)
print(accelerated_c)
# Emits: total += (42LL * 1000000);

9. 現実的な期待値と開発者契約

私たちはエンジニアリングの透明性を重視しています:

  • 包括的な保証はなし:Strilight は、任意の制約のないループがすべて魔法のように $\mathcal{O}(1)$ になるとは主張しません。非常に不規則なポインタチェイシング、任意の動的 I/O、非代数的な外部関数呼び出しは、根本的に還元不可能です。
  • 予測可能な成功:構造化されたループ(スカラーリダクション、多変数線形結合、巡回配列、契約誘導ループ)に対しては、Strilight は確実に成功します。C では、明示的な pragma 句(target、include、model)を指定することで、決定論的な変換保証が得られます。

ベンチマーク結果

高反復の数値ループ全体で評価し、ネイティブ実行と Strilight による高速化を比較しました:

ベンチマークシナリオ反復回数 ($N$)ネイティブベースラインStrilight 高速化測定された高速化率精度の忠実性
結合 4x4 線形システム (Python)$1,000,000$$75.2\text{ ms}$$0.0002\text{ ms}$$376,000\times$100% ビット完全一致
結合 4x4 線形システム (GCC -O2)$1,000,000$$1.1\text{ ms}$$0.00002\text{ ms}$$55,000\times$100% ビット完全一致
巡回配列ルックアップ総和$1,000,000$$74.8\text{ ms}$$0.0044\text{ ms}$$17,000\times$100% ビット完全一致
惑星 N 体天体力学$100,000$$7.17\text{ ms}$$0.051\text{ ms}$$140\times$解析的軌道一致

アーキテクチャと実行パイプライン

flowchart TD
    SRC["Source Code (Python / C)"] --> LIFTER["SourceLifter: AST & Pragma Parser"]
    LIFTER --> RESOLV["CrossFileResolver: Static Import Resolution"]
    RESOLV --> VSA["Algebraic Induction Engine: models.py"]
    VSA --> MATRIX["VariableCouplingMatrix: System Transition Matrix A"]
    VSA --> QFIELD["Exact Rational Domain over Q: AffineExpr"]
    REDUCE --> CODEGEN["CodeGenerator: C / Python Synthesis"]
    VSA --> REDUCE["Schur Reduction & Block-Diagonal Decomposition"]
    CODEGEN --> OUT["O(1) / O(log N) Executable Kernel"]

主な用途と実世界でのユースケース

Strilight は、科学、工学、金融の各分野にわたる計算上のボトルネックに対処します:

ツールをダウンロード