今年、私たちは以前の結果の公開を再開し、Habrahabrリソースでオープンソースプロジェクトのレーダー2の新しいGSoCを発表することにしました。
現在の結果
以前に書かれたように、2015年にradare2はまだ別のプロジェクトとして受け入れられていませんでしたが、 solardizとそのOpenwallプロジェクトのおかげで、 radare2のタスクの1つがその翼の下で行われました。 その後、2016年から、このフレームワークは既に別の会社として参加しています。 前回の公開以降、長年にわたり、次の重要なタスクがGSoC内で完了しています。
- radeco逆コンパイラ(まだ開発中)
- Windowsのサポートの改善
- 可逆デバッグ
- GDBおよびLLDBのリモートデバッグのサポート
- 関数の引数を定義する
- WebUIの改善
さらに、プロジェクトはGSoCの独自のアナログであるRSoC(Radare Summer of Code)を実施しました。 違いの1つは、学生だけがアプリケーションを送信できないことです。 このプロジェクトのフレームワーク内で、次のタスクが完了しました。
- FLIRTおよびYARA署名のサポート
- PDBデバッグ情報のロード
- 構造のサポート(010 Editorと同様)
- Mach-0からのObjCメタデータを解析してクラスとキャラクター情報を定義する
おそらく今年、RSoCは実施されませんが、これまでのところ決定は確定していません。
プロジェクト開発方法論
すべてのリポジトリはgithubでホストされ、 githubの問題はバグトラッカーとして使用されます。 テストは別のリポジトリに割り当てられ、 Travis CI 、 AppVeyor 、およびJenkinsで実行されます 。 また、 Coverityを使用してバグを見つけ、さまざまなデモではasciinemaサーバーを使用します。
さらに、プロジェクトの開発者の1人になりたい人のために、いくつかのドキュメントが準備されました。
開始するには、プロジェクトのコードベースを理解するために、 最初の問題としてマークされた問題の1つを修正することをお勧めします。
必須スキル
radare2プロジェクトのほとんどはCで記述されているため、候補者はこのPLに精通している必要があります。 しかし同時に、いくつかのタスクでは、Goが相互運用性プラットフォームを作成する必要があります。RustはRustで、QtはC ++でCutterです。 Radecoについて既に述べられている場合、Cutter(最近Iaitoと呼ばれるまで)は比較的最近導入され、radare2のGUIです。
GSoCへの参加
参加するために必要なこと:
- Googleのメンバーシップポリシーを表示します 。
- いずれかのタスクを実行するか、独自のタスクを提供します。
- Googleドキュメントとテンプレートを使用してドラフトアプリケーションを作成し、メンターの1人に確認してもらいます。
- Googleインターフェースを使用してリクエストを送信します。
参加するには、アプリケーションに加えて、小さなプルリクエストを送信して、 マイクロタスクの 1つを解決する必要があります。
- 分析
- カウント #6967
- 逆アセンブラーとアセンブラー
- RAGG2 #6949
- リファクタリング
- Unicodeサポートの改善(UTF-8)
- ファイル形式
- デバッグ
- その他
- ラデコ
- ルーン
- カッター
または、マイクロタスクの複雑さに適したgithubの問題の 1つを修正できます。
アプリケーションの作成に関する推奨事項:
- アプリケーションは大きくなく、数ページである必要があります。
- GSoCへの参加期間をタスクに分割し、各タスクをサブタスクに分割してください。 これは、タスクを完了することにどれだけ興味があるかを理解するだけでなく、あなたにとっても役立ちます。開始する前にタスクをより深く評価し、優先順位を付けます。
- プロジェクトに費やす予定の日/週の時間を書き留めてください。
- コミュニケーションを簡素化するために、同様のメンターを見つけることができるように、タイムゾーンを指定します。
- 直前ではなく、事前に申請書を提出してください。
- また、「フォールバック」タスクを選択することもできます。これにより、利益相反(2人の生徒が1つのタスクを選択した場合)の場合、これを簡単に解決できます。
タスクリスト
Radare2プロジェクトには、 Radeco 、 Rune 、 Cutterというサブプロジェクトがいくつかあります。 したがって、それぞれに1つのタスクが割り当てられました。
- [Radeco]逆コンパイルのためのPseudo-Cバックエンド -今年、Radecoの分析機能を使用して、Pseudo-Cのコードを逆コンパイルする機能が最終的に完成すると想定されています。
- [Rune] radeco-libおよびradare2との統合 -シンボル実行を使用してバイナリファイルのセクションを分析するためのRuneライブラリが作成されました
- [カッター]デバッグとエミュレーションのサポートを追加 -現在、静的解析のみがカッターでサポートされており、ESIL(エミュレーション)およびデバッグとの相互作用はCLIインターフェースを介してのみ可能です。
フレームワークに直接関連するタスク:
- コンソールインターフェイス -現在のCLIインターフェイス機能を改善します(たとえば、サブプルの1つであるradiff2を介してファイルを比較するための分割モードを追加します)
- 型 -型と構造(構造体/ユニオン)のサポートを改善
- EXE / DLLをFATファイルとして解析 -マッチョ形式のサポートとPEの分離を改善(dos、win、.net)
- Windowsプラットフォームのサポート -さまざまなプロトコル(ネイティブ、gdb://およびwindbg://)を介したデバッグ時のバグ修正と、現在の機能の改善の両方が含まれます
- リアルタイムインタラクションのプラットフォーム -collabREate 、 YaCo 、 solIDArityプロジェクトとの類推により、ファイルを共同でリバースする機能を追加します。これは、大きなファイルの分析とチームでのCTF問題の解決の両方に役立ちます。
- ragg2を使用したROPchainジェネレーター-ROPgadgetで行われるように 、ROPガジェットのコンパイルを改善し、ROPチェーンの自動作成を追加(Z3などのSMTソルバーを推奨)
より詳細なサマープランは、GSoCページrada.re/gsocで入手できます。
プロジェクトの公式サイト: rada.re
タスクまたはフレームワークの使用に関する質問は、Freenodeネットワークの#radare IRCチャネルまたはhttps://t.me/radareテレグラムチャネル(それらの間でトランスポートが構成されています)で質問することもできます。