本日・明日に東京・多摩で開催されているオープンソースカンファレンスに

出展します.



セミナー「バイナリで遊ぼう!」,ライトニングトークなどやらせていただきます.

展示はアセンブラ短歌,バイナリかるた,アセンブラかるた,

熱血!アセンブラ入門など.



AD
「フィーリングで読むアセンブラ入門」という本をずっと書いていましたが,
「熱血!アセンブラ入門」というタイトルでようやく発刊されることになりました.
今週末に書店に並ぶと思います.

脱稿自体は2013年明けにできていて,出る出ると言って出てなかったですお待たせしたかたすみません.

まあちょっといろいろあって延び延びになっていたのですが,このたび秀和システムさんにお世話いただき
発刊までこぎつけました(まだ出てないけど).800ページもの大作を削減すること無く引き受けてくださり,
また迅速に出版していただき,ありがとうございました.

本書はドキュメントを調べてというよりも,実際に手を動かして調べた結果をメインに執筆しています.
執筆する上で様々なかたがたと有益な情報交換をさせていただいています.
ご協力いただいたかたがた,ありがとうございました.

内容は,「フィーリングで読むアセンブラ入門」のそのまんまです.タイトルは変わりましたが,内容を削減したり
路線を変更したりはしていないです.執筆した原稿がフルに入っていますので,なかなか読みごたえはあるかと.
(まあタイトルは,当初とはフツー変わるものなので)

書籍中では,40種類のアセンブラを扱っています.メインとして扱っているのは6種類で,第1部では
それらを横並びにして見ています.普通のアセンブラ入門書は単一アーキをひたすら説明するのが
普通だと思うのですが,本書では複数種類を,というより,とにかくたくさんの種類を横並びにして
読んでみることに注力しています.

この「複数種類を横並びにして」っていうのがミソで,単一のアーキのアセンブラを見るだけでなく,
複数のアーキのアセンブラを横並びにして見ることで,CPUやアセンブラはさらに理解しやすくなると
いうか,新たに見えてくるものがいろいろあるかと思います.
「あー,これってこっちのアーキでもおんなじじゃん」みたいな感じで.

実際に手を動かして調べた結果がメインなのですが,アセンブラの出力環境を自分のPC上に構築して,
試してみることもできます.第3部の頭で説明しています.あと環境構築済みのVMイメージとかを
サポートページで配布しています.

私的にいちばん面白いのは,第3部のシミュレータ対応で,GDBのシミュレータのソースコード見て各種アーキの
対応して動かしていく,というところです.事実を説明するだけでなく,実際の調べものや思考の過程が書けたので,
自分的にはよかったと思っています.(そういう記事が好きなので)

あとタイトルは,なかなかインパクトある感じになりました.笑

秀和システムの本書の案内ページ

Amazonのページ

書籍サポートページ

AD
ツールとプログラミングの本を書きました.本日発売です.
久々の(考えてみたら,初のか!?)初心者向け本です.

開発ツールを使って学ぶ!C言語プログラミング

各種開発ツールを触っていじりながらC言語プログラミングも体験してみるという内容です.
プログラミングを勉強する際には,実際にはプログラミングだけでなく各種ツール類の操作も必要になるので,そうしたひととおりのツール操作とプログラミングの両方を触って広く浅く体験していくという本があったらいいんじゃないかなーと思って書きました.
シェル操作,viエディタ,nano,make,diff,patch,make,git,gdb,Perlなど説明しています.

CentOSのVMイメージも同時に配布しているので,実際にPC上で(VM環境で)試しながら触ってみることができます.

薄く広く扱っているので,それぞれのツールやC言語の説明は浅いし網羅性もありません.
が,プログラミングやLinuxディストリビューションの初心者のかたが,いろいろひととおり体験してみる,というためにはいいかと.

勉強会とかで説明とか演習とかするときに,CUI操作をベースに説明することが多いのですが,そうしたときにそもそもCUIでのコマンド操作が不慣れだと,本題に入る以前のところで進まなくなってしまいます.そういうのをなんとか対策したいなーという思いもありました.
(本があれば,今後は「この本で説明してあるCUI操作くらいはできるものとして話を進めるので,不安だったら本を確認しておいてください」と言うことができる.初心者は事前に本を読んでレベルを確認して,操作に慣れておくこともできる)

AD
いくつか告知です.

今更ですがInterface誌2014/08号に記事を書きました.
pkttoolsの紹介などもあります.

あと,9月に行われる以下イベントに登壇します.

SECCON x CEDEC CHALLENGE 表彰式 / 今昔ハッカー対談

ゲームセンターあらしのすがやみつる先生とのトークセッションです.

あとちょっと前の話ですが,pkttoolsというツールを作成し公開しました.
パケットのRAWデータを送受信できます.

http://kozos.jp/software/index.html

今年のセキュリティキャンプのセキュアなシステムを作ろうクラス・組込みゼミでは,テーマが10個提示されています.
が,タイトルだけでは何をやるのかわかりにくいかと思いますので,クラスの説明のほうに書いてあるゼミ説明を,ここに再掲します.

モノづくりが好きで好きでしょうがなく,昼も夜も寝ても醒めてもモノづくりのことばかり考えているというかた,アセンブラやコンピュータ・アーキテクチャなどの低レイヤーの学習を「面白そう」と思えるかたは,ぜひ応募を検討してほしいです.

アセンブラは事前学習で勉強するので,始めから知っている必要は無いです.ただ学習することに抵抗感が無いことが重要です.

各テーマでは,基本として開発ターゲット(OS,アーキテクチャなど)はしぼりません.自由に使えるものならば,基本,何でもOKです.

テーマは「組込み系テーマ」と「アーキテクチャ系テーマ」の2通りがあります.組込み系はマイコンボードをガシガシいじりたおす感じ,アーキテクチャ系はアセンブラとにらめっこしながらモノ作りする感じです.

■ 選択テーマ一覧

・テーマ#01「マイコンボードでの不正実行の検出機能を作ってみよう」(組込み)

マイコンボード上で脆弱性のあるソフトウェアが外部から攻撃された場合を想定して,
アプリケーション・プログラムの挙動を監視し,不正実行を判断して中断・ログ保存す
るようなセキュリティ機能をマイコンボードに実装します.

ログはマイコンボード上の制限されたメモリ内に保存することと,PC側にアップロー
ドできることが必要になります.

・テーマ#02「セキュリティソフトを作ってみよう」(アーキテクチャ)

UNIX系のシステムではptrace()のようなデバッガ向け機能を利用することで,アプリケ
ーションの挙動を高度に制御することができます.

デバッガ向け機能を利用してアプリケーションの挙動を能動的に監視しチェックするこ
とで,PC上で動作するセキュリティソフト「もどき」を作成してみましょう.

・テーマ#03「アプリケーションの挙動を見える化してみよう」(アーキテクチャ)

「セキュリティソフトを作ってみよう」の発展系です.

ptrace()のようなデバッグ機能によりアプリケーションの挙動を見張り,レジスタやス
タックの状態を動的に取得し変化をリアルタイム表示することで,動作を見える化して
みましょう.さらにバッファオーバーランの脆弱性の攻撃等を実験的に行い,視覚的に
見てみましょう.
なお本テーマはPCでの開発を想定していますが,マイコンボードをターゲットとした
開発でも構いません.(この場合はGDBによるリモートデバッグ機能が利用できます)

・テーマ#04「セキュアな組込みOSを自作してみよう」(組込み)

既存の組込みOSに独自に機能を追加することで,セキュアな組込みOSを自由なアイ
ディアのもとで開発してみます.

何らかのオープンソースな組込みOSが動く,マイコンボードをターゲットとします.

・テーマ#05「アーキテクチャの違いを検証してみよう」(アーキテクチャ)

バッファオーバーラン等による脆弱性の既存の攻撃方法を,様々なアーキテクチャにつ
いて検証し横断的に比較することで,スタックやレジスタの扱い,命令コードの特徴,
命令セットの違いなどによるアーキテクチャごとの脆弱性の特徴を検討します.シェル
コード挿入やROP,Exploitコード作成をエミュレータ環境により実験します.

想定するアーキテクチャはx86,ARM,MIPS,PowerPC,SH,H8,V850,AVR,RX,6502,
Z80,VAXなどですが,可能な限り多く扱い横並びにして比較することを目的とします.

・テーマ#06「エミュレータでの不正実行の検出機能を作ってみよう」(組込み)

エミュレータ上で組込みOSのカーネルやアプリケーション・プログラムを動作させ,
OSへのシステムコールや特権命令の実行,メモリ読み書きなどの詳細なトレースを採
取する機能をエミュレータに実装します.さらに実行中のプログラムの動作のチェック
を行うことを可能にします.

エミュレータでの開発がベースとなるため,マイコンボードは利用しません.

・テーマ#07「組込みシステムをセーフティに設計してみよう」(組込み)

組込みシステムでは「セキュリティ」(脅威対策)に対して「セーフティ」(機能安全)と
いう考え方も重要になります.

エレベータ制御や踏切制御等を題材として制御プログラムを作成し,シミュレーション
動作させ,ドアの開閉・ボタンの押下・人がドアにはさまれたことの検知などをして適
切に振舞うかどうか,検証してみましょう.なおシミュレータも自作することを前提と
します.シミュレータでの確認がベースとなるため,マイコンボードは利用しません.

・テーマ#08「プロセッサのセキュリティアシスト機能を設計してみよう」(組込み)

プログラムの不正実行や不正領域アクセスなどの検出を考えた場合,既存のプロセッサ
に対して専用のハードウェアアシスト機能を搭載しOS側から適切に利用することで,
高速かつ確実に検出できる可能性があります.

既存のプロセッサに追加する形でそのような専用機能や特殊命令を設計し,OSと協調
してセキュリティを確保する方法を検討します.さらにプロセッサのエミュレータ上で
特殊命令の実装を行い,命令の動作やOSからの利用などの動作検証を行ってみます.

エミュレータでの開発がベースとなるため,マイコンボードは利用しません.

・テーマ#09「セキュアなインターフェースを設計してみよう」(アーキテクチャ)

既存のアーキテクチャでもABI(Application Binary Interface)を工夫することで既出の
攻撃手法を無意味にしセキュリティを高めることができる可能性があります.

セキュアなABIを定義し,アセンブラベースでプログラミングすることで効果を確認しま
す.可能ならばコンパイラやリンカを改造し,そのようなABIでコード生成してみます.

アーキテクチャは一つに絞らず,x86,ARM,MIPS,SH といった様々なものを扱います.

・テーマ#10「低レイヤー学習のための教材を作ってみよう」(アーキテクチャ)

セキュリティ理解のための低レイヤー学習の促進を目的として,2013年には「アセンブ
ラ短歌」や「バイナリかるた」「アセンブラ・クロスワード」といった新しいコンテス
トや競技,ゲームが考案され,実施されています.

勉強会で実施できるような題材として,そのような新しい教材を考案し,開発してみま
しょう.アイディア出しだけではなく,自身で実装し普及させることを前提とします.