Googleのルールに従う必要がないという事実により、2人の「公式」メンバーを「オンザフライ」で変更することができました。 昨年、 2人の公式参加者と6人の「非公式」(現金報酬なし)を選択しました 。 ただし、コーディングプロモーションプロセスでは、非公式の参加者は3人しか残っていません。 しかし、彼らはタスクを正常に完了したので、集めたお金を彼らの間で均等に分けました(1人あたり約700ドル)。 タスクをさらに詳しく考えてみましょう。
2つのタスクが完了/完了していません-これは、sdbデータベースを使用して webuiを微調整するためのフレームワーク全体の完全な翻訳です。
一方、3つのタスクは正常に完了し、現時点ではすべてのコードがメインブランチにあります。
まず、pfコマンドとCデータ記述パーサー(struct / unionなど)を使用して、複雑な構造の解析と必要な形式での構造の表示をサポートします。
第二に、 FLIRT形式の署名(IDA Proから)のダウンロードと使用、およびYaraとの統合をサポートしています。 このタスクが正常に完了したという事実により、radera2は、IDA ProおよびYaraとの長年の作業で蓄積された既存の署名データベースを使用してマルウェアを分析するために使用できます。 Yaraとの統合コードは別のリポジトリに移動しました。
さて、最後に正常に完了したタスクはPDBサポートです。 多くのデバッガーや逆アセンブラー(IDA Proを除く)との主な違いは、Windowsシステムライブラリの呼び出しを使用せずに、独自の形式で解析することです。
さらに、ドキュメンテーションの状況は昨年から大幅に改善されました: radare.today/radare2-is-documented
今年、radare2はGoogle Summer of Codeの独立組織としての資格を失いましたが、それは私たちを止めるものではありませんでした。 さらに、悪名高いsolardizとそのOpenwallプロジェクトに感謝します。このプロジェクトの後援の1つとして、GSoC'15に参加します。 独自のRSoC'15を実施するには、3人の参加者を引き付けるために3,000ユーロが必要です。
したがって、コードの両方のSummerに関する情報を要約します。
Google Summer of Code:
- 1人の参加者のための場所があります
- 申請書は3月16日から3月27日まで提出できます。
- 5000ドルの支払い
- 標準プログラムの制限(学生のみ、イベントのルールの厳格な遵守)
Radare Summer of Code:
- 申し込みは3月11日から5月3日まで受け付けています
- 5月8日に受け入れられた参加者の発表
- 6月17日から9月16日までのプログラミング
- 1000ユーロの金額での支払い(調達した資金の量に依存すると思われます)
- 参加者に制限はありません
今年は、GSoCの学生とRSoCの参加者向けに次の課題を提示しました。
課題を見る
ウィジェットの作成:
さらに、デスクトップおよびタブレットに適用可能な「ゴム」インターフェースを提供するとともに、インターネットを介した作業を高速化するためにネットワークへのリクエストの数を最小限に抑える必要があります。
最初に、より多くのアーキテクチャーのためにESILサポートを追加(および改善)する必要があります(libr / anal / p / *を参照)。
次に、ESILエンジン自体に次の機能を追加する必要があります。
ここで、私はそれが何を意味するのかを明確にする必要があると思います。 このタスクは、実行中に自動コード分析を実装できるため、前のタスクと密接に交差します。
多くの人が知っているように、これは完全な逆コンパイルへの最初のステップです。 この課題では、学生は3つのレベル(バイナリコード(および悲惨)、ESILビュー、SSAビュー)の間で3方向の情報交換を作成する必要があります。
このタスクは、既存のデバッグの機能の比較に基づいて実行する必要があります:gdb、lldb、voltron、mona.py、peda、immunity。 実行する必要があるもののリスト:
これは、アセンブラー間で構文を統一し、マクロをサポートするために、capstoneやsdbなどの別個のプロジェクトに分離するために必要です。 fasm構文とマクロ言語のサポートが理想的だと考えています。
ここで、参加者は、オーバーラップするブロックを描画するアルゴリズムを改善し、Unicodeと美しいノードの完全なサポートを追加し、色と構文の強調表示のサポート、ノードのグループ化とコメント化を行う必要があります。
すべてのタスクを説明したわけではなく、最も「バックボーン」なタスクを強調しただけで、対応するページでより完全な情報を取得できます 。
Webインターフェース
ウィジェットの作成:
- カスタム六角列六角エディタ
- グラフ:ブロック、関数、および比較のためのインタラクティブなグラフ
- セクション
- 文字列、オペコード、パターンを検索する
- 構造:表示、作成、および変更
さらに、デスクトップおよびタブレットに適用可能な「ゴム」インターフェースを提供するとともに、インターネットを介した作業を高速化するためにネットワークへのリクエストの数を最小限に抑える必要があります。
ESIL機能の強化
ESILベースのエミュレーションサポート
最初に、より多くのアーキテクチャーのためにESILサポートを追加(および改善)する必要があります(libr / anal / p / *を参照)。
次に、ESILエンジン自体に次の機能を追加する必要があります。
- ESILコマンドの簡素化
- 選択した機能をエミュレートする機能(ESIL経由)
- 要求に応じてプログラムの選択したポイントで選択したレジスタの値を計算
- 標準ライブラリ関数の組み込みエミュレーション
- トレースサポート
- 逆デバッグ
ESILを介したエミュレーションに基づく動的分析
ここで、私はそれが何を意味するのかを明確にする必要があると思います。 このタスクは、実行中に自動コード分析を実装できるため、前のタスクと密接に交差します。
- 自動検出スイッチ()
- 動的ジャンプ値の検出(リンク)
- 関数パラメーターの自動分析
- クロスリンク認識の改善(外部参照)
ESILコードのSSAへの自動変換(単一静的割り当てフォーム)
多くの人が知っているように、これは完全な逆コンパイルへの最初のステップです。 この課題では、学生は3つのレベル(バイナリコード(および悲惨)、ESILビュー、SSAビュー)の間で3方向の情報交換を作成する必要があります。
インターフェイスとデバッガー機能を操作する
このタスクは、既存のデバッグの機能の比較に基づいて実行する必要があります:gdb、lldb、voltron、mona.py、peda、immunity。 実行する必要があるもののリスト:
- コード/スタック/レジスタパネルを備えたUI(peda / voltronなど)
- 過去および将来のブレークポイントを表示する
- ホットキー
- ASLRを構成する
- ブレークポイントがこの関数の呼び出しにある場合、関数パラメーター値を表示します(OllyDbgなど)
- スタック上およびレジスター内の値(入力済み)の表示
アセンブラー用のユニバーサルパーサーライブラリの作成(rasm2)
これは、アセンブラー間で構文を統一し、マクロをサポートするために、capstoneやsdbなどの別個のプロジェクトに分離するために必要です。 fasm構文とマクロ言語のサポートが理想的だと考えています。
強化されたradare2グラフとデータおよびコードの視覚化機能
ここで、参加者は、オーバーラップするブロックを描画するアルゴリズムを改善し、Unicodeと美しいノードの完全なサポートを追加し、色と構文の強調表示のサポート、ノードのグループ化とコメント化を行う必要があります。
すべてのタスクを説明したわけではなく、最も「バックボーン」なタスクを強調しただけで、対応するページでより完全な情報を取得できます 。
タスクの詳細な説明を含む夏の計画はこちらです: rada.re/rsoc
プロジェクトの公式サイト: rada.re
RSoCキャンペーンのスポンサーになるか、寄付を送信してください。
PS今年(GSoC / RSoCから分離):Windowsサポートの改善( WinDbgとPDBサポートのより良い統合を含む)、SDBへの完全な移行を完了し、ライセンスの改訂を完了します(商用製品とのリンクの便宜のため、アセンブリに含めることができるものとできないもの。モバイルプラットフォーム(ARM、MIPS)のサポートを改善し、プラグインの記述を簡素化し、アセンブリとバインディングの使用をより明確にし、回帰テストの数を増やし、新しい開発者を引き付けます。