2009/9/24 20:41 |
再びリバースエンジニアリングチャレンジ2009 さて期日が終わったので再び。 まあLevel1に関しては簡単。 (ほぼ)そのまま答えが書いてあるレベル。 まあ59名突破ってなってるけど、これはちょっとそれ系の技術持ってる人なら、 すぐ解るだろうから、この人数=真面目に取り組んだ人数じゃないかなと。 で、Level2については、プログラムの暗号化&デバッガの検出が組み込まれている。 単純に逆アセとかデバッガとかはかけれないので、ある程度の経験が無いと難しいのかな。 Level3については、まあここで投げ出したわけですが・・・。 なぜ諦めたかというと、64bit版のwindowsとlinuxが必要だったからです。 まぁー、ハードはあるわけだからlinuxについては環境を作れなくも無いんだけども、 Win64についてはそもそも持ってない。 ま、そもそも64bitについては解析の経験もツールも無いから、環境を用意したところで あんま良く解らないのも明らかだし。 特にlinuxなんてgccをほんのちょっと遊んだことある程度だから全く解析の手法もAPI(?)も 解らないから、手も足も出ないってのが本音。 というわけで結局Level2、しかもトップ10入りも出来なかった訳ですが、 ほんのちょっと解析のヒントを。 ●Level1 設問は、『「atoi」の意味は?』 はっきり言って、この設問の意味は未だにわかりません。 が、プログラムを覗くと、「PASSWORD: %c%c%c%c」という文字列があるんで、 まあこれを表示させれば良いんだろうと。 実アドレスで4011e5(以下同)から、 push 0040A128 call 004038FC add esp, 00000014 xor eax, eax pop ebx pop ebp ret ってのがある。で、この前の方に、 cmp eax,??? je ???? ってのが4組があって、そのcmpの値がそのまま%cに渡される感じ。 まあここまで来ればあとは予想通り。 ●Level2 設問は、『このゲームクリアしろ』 内容は、単純なブロック崩し。ただしパドルが上方向に移動していって、数秒で 一番上に到達してしまう無理ゲー。 さて問題はデバッガ検出と暗号化。 暗号化の解除はプログラムの一番最初で行っている(デバッガ検出より前)なので、 暗号化を解除したあとのバイナリをexeに書き戻して逆アセとかかけると、 普通に読めるコードができる。 で、読めるコードが出来たとして、どうやってゴールにたどり着くか。方法はたくさんあります。 ・パドルが上に行かないようにする ・1つでもブロックを崩したらクリアにする などですかね。 まず手がかりとして、実行速度を落としてみましょう。 時間測るのはtimerとかsleepとかが予想出来るので、それ系のAPIを呼び出している所を探すと、 sleepしている箇所があるので、その定数をいじってみます。 暗号化自体は単純なxorなので、暗号化したままでも書き換えるのは簡単。 そうするとゆっくりゲームを進行することができるので、ゲーム起動後に、 プロセスからデバッガをアタッチ。そうするとデバッガ上でもうごかせれます。 あとはメモリをじーっと見てると(ゲーム改造の要領)、ボールの座標とかパッドの座標とかあるので、 その辺を手がかりに解析できます。座標とか壊したブロックの数はスタックじゃなく固定アドレスに 持ってるので、逆アセ結果と照らせ合わせるのも簡単。 あとはその辺を手がかりにすれば、パッドが上に行かないようにするのも、壊すブロックの数を変えるのも できます。 が・・・・・。 途中でプロセスにアタッチして、デバッガ上でゲームを進めると、最後のパスワード表示部で、 デバッガ検出に引っかかります(これで騙されました)。 というわけで、デバッガ上で改造ポイントを調べた後、exeを直接書き換えて再実行しましょう。 それでクリアすると、自己書き換えチェックなどは無いのでパスワードを入手できます。 ●Level3 とりあえずダウンロードしたファイルを解凍すると、 1)1.44MB FDイメージ 2)win32 exeファイル(JAVA VM) 3)linux elfファイル(詳細不明) 4)win64 exeファイル(JAVA VM?) 5)win32 exeファイル(?) 6)win32 exeファイル(perl?) 7)不明 ってのが入ってました。 3) 4)がある時点で投げました。 1)は起動するとブートセクタにプログラムが書いてあってなんか表示します。 win32 exeはそのまま実行しても何も起きませんでしたが解析してません・ という感じでした。 |
2009/9/19 15:12 |
リバースエンジニアリングチャレンジ 2009:イベント情報:NetAgent Co., Ltd. Level3は無理っ まだ開催期間中なんで理由はかかないけど無理っ。 ちなみに20分ほど遅れて始めたけど、Level2クリアまでは実時間で約1:50かかりました。 まだまだ修行が足りないかのう |
2009/9/19 4:18 |
ついにヨドバシとビックからKUROの50インチが消えた。 最終的には展示品処分で最後の一台は売られたようだ。 60インチはまだ現品処分には残っている物の、通電はされていない。 これはもう、ヨドバシクラスの流通力を持ってしてももう入荷できないのか、 それとも、欲しい人はもう買ったから店頭でスペースを取って 展示するのは無駄と判断したのか、そこはわからない。 (ブラウン管と比べると)お世辞にも「感動するほど綺麗」とは言えないが、 それでも他社薄型テレビとは格段の差があるのは、現品を見れば 明らかだった。それがもう所有者以外の人の目に触れることが無いのは とても残念だ。 KRP-500Aは発売直後に買った。値段は約50万。 1インチ1万円の価値をどう見るか。 まあNTSCブラウン管モニターでも1インチ1万円クラスのを使ってたと いうのもあって、PDPの画質は決して良い物ではない。 けれど、(がらくたが大量にあって)狭い部屋に50インチを置けるという スペースメリットはやっぱりある。 もし仮にブラウン管で50インチとかあっても絶対に置けないだろうし、 液晶プロジェクタとかも設置は無理だったから。 だから、画質面だけで言えば合格点はギリギリってところだけども、 総合評価では不満はない。 さあ、いよいよもう最後のチャンスだ。 通販ならまだ買える(らしい)。 欲しいなら借金してでも買っておけ。 |
2009/9/3 21:44 |
ちょっと前だが、ディズニー映画「ボルト」見てきた。 これ3D上映なんだよね。 3D上映ってどんなもんかなーと。 まあ予想としては、偏光板を使った3Dメガネかなーと思ってたんだけど、 意外と作りはしっかりしてる。どう見ても電子制御。 ちょっとパクってこれるような値段の物じゃなさそう(ぉぃ メガネにはXPANDのロゴ。 ユニバーサルビジネステクノロジーっていう会社のらしい。 内側にはボタン電池が入りそうな場所。 前面には赤外線受光部っぽいもの。 やっぱりどうみても電子制御です。 レンズ越しに液晶とか見ても何もないしね。 実際に3D上映が始まるまで、何も動作していなく、 上映が始まると液晶シャッターが動いてる様です。 基本的にシャッター方式の3D上映です。まあつまりファミコンの3Dメガネですね。 で、上映中に受光部を隠すと、シャッター動作は止まります。 つまり、赤外線で右OFF、左OFFの信号を送ってるわけね。 だから、両方オープン(無動作)も含めて3通りだから、 単純に赤外を受けたときに右OFFという様なものではなく、 何らかのコードを持ってることはあきらか。 ただ、シャッター速度はかなり早め。体感的にはシャッターだってわからないくらい。 少なくともファミコンなんかとは比べものにならない(笑)。かなり優秀です。 とすると赤外の転送レートも結構速いのかもしれない。 投影側がDLPだから、映像のフレームレートを上げることはそれなりに容易なのかな。 少なくとも60fpsの交互よりは速い。 かなーーーり昔、ブラウン管プロジェクター×2に偏光をして3D上映するシステムってのを 見たことがあって、すごい綺麗だった。 液晶プロジェクターを使う限り、偏光で3D上映ってのは結構無理があるから、そのシステムより 上に行くものは草々この後も出てこないだろうと思ったんだけども、今回のこのシステムもかなり凄いと思う。 ところで、人間の目ってのは(たぶん)、平面に奥行きのある物が書かれている、という物は 昔からある(つまり普通の絵画とかテレビね)ので、それに関して違和感はないが、 こういう風に3D上映っていうものには慣れていないっぽい。 たとえば、目の絞り量(瞳孔の開き方)にたいしてフォーカスが合う範囲が体感的に学習してるので、 無限遠までフォーカスがあっているとか、奥にある物に無理にフォーカスを合わせようとしても、 絶対に合わないとか、そういう違和感っていうのがある。 だから、無駄に目が疲れるという感じはある。 これに関してはどこまで技術が向上しても、体が慣れるまで仕方ないんだろうか。 で、ここまで映画の内容について一切触れてませんが・・・・・。 ええ、ボルト、いい映画ですよ。見て損は無いですよ。 まあ3D上映じゃなかったらあえて見に行かなかったくらいの期待度だったけども、 いい意味でかなり期待以上でした。 うん、もう3D上映してないけどな(シネマフロンティアは)。 |