SlideShare a Scribd company logo
リバースエンジニアリング入門 ~楽しいバイナリ解析~ 
長崎県立大学 
国際情報学部 情報メディア学科 
片渕 小夜 
2014/09/06 
1
だれおま 
名前:片渕 小夜(かたふち さや) 
年齢:21歳 
所属:長崎県立大学国際情報学部情報メ ディア学科4年 
進路:来年4月から本学の大学院へ 
趣味:プログラミング,TVゲーム 
Twitter:@reiji1020 
2014/09/06 
2
ちなみに 
2014/09/06 
3
2014/09/06 
4 
(第2回長崎デジタルコンテストHPより)
昨年IPADもらいました 
2014/09/06 
5
開発機として元気に活躍してます 
2014/09/06 
6
本題 
2014/09/06 
7
Q.TV(PC)ゲームしますか? 
2014/09/06 
8
チート(改造)して遊んだことはありますか? 
2014/09/06 
9 
モンスターハンター4(2013,カプコン)より
自分はあります 
2014/09/06 
10
リバースエンジニアリング 
•ソフトウェアの動作を解析して,ソース コードやプログラムの構造を分析するこ と 
•サードパーティ企業が他社製品の互換製 品を作る際によく用いられる 
•リバースエンジニアリングの腕を競う 「CTF(Capture The Flag)」というもの がある 
2014/09/06 
11
REできると得すること 
•ゲームでチートされることを防ぐ 
–無限ライフ,無限ボム,常に攻撃力MAXなど 
–ソフトウェアの脆弱性を見つけ,更に安全性 を高めることが出来る 
•インターネット上に存在するマルウェア を解析してデータを提供することができ る 
•コンピュータでソフトウェアが動く仕組 みをより深く理解できる 
2014/09/06 
12
REでやっちゃいけないこと 
利用にライセンスキーが必要なソフトウェ ア(Microsoft Officeなど)をアクティベート 無しで利用できるように改造することなど 
2014/09/06 
13 
絶対にやらないでね!
REを始める際に必要なもの 
•アセンブラ(機械語)に関する最低限の知識 
•Windows7or8の入ったPC 
•やる気(←超重要) 
2014/09/06 
14
??? 
2014/09/06 
15 
オレたちハッカーは普通のウィ ンドウズみたいなGUIでPCを 扱うことはほとんど無い 
初歩的なスクリプト言語から 
FortranだのCOBOLだのの高 度なプログラミング言語まで駆 使して端末を動かしたりネット ワークに侵入してコントロール したり… 
(ブラッディ・マンデイ 6巻 高 木藤丸)
??? 
2014/09/06 
16 
オレたちハッカーは普通のウィ ンドウズみたいなGUIでPCを 扱うことはほとんど無い 
初歩的なスクリプト言語から 
FortranだのCOBOLだのの高 度なプログラミング言語まで駆 使して端末を動かしたりネット ワークに侵入してコントロール したり… 
(ブラッディ・マンデイ 6巻 高 木藤丸)
例えばこのようなソフトウェア 
2014/09/06 
17 
Crackme.exe
2014/09/06 
18 
Windows7では 
1980年以降の日付し か 
設定できない 
このプログラムを 
解析するしかない!
どういうプログラムだろう? 
『1192年05月15日にしか起動できない』 
→本日が何年何月何日か確認するプログラ ムがある 
2014/09/06 
19 
今日は1192年 05年15日か? 
次のプログラムを起動 
メッセージボックスを出して終了 
Yes 
No
Ollydbg 
•デバッガのひとつ 
•フリーで使えるプログラム解析の強い味方 
•基本英語だが有志による日本語化パッチも配布 されている 
2014/09/06 
20
2014/09/06 
21 
GetSystemTime API 
恐らく時間を取得する? 
DialogBoxParam API 
日時が違うというメッセージを出す? 
このへんで日時判定?
2014/09/06 
22 
JNZ命令:指定のアドレスにジャンプ(00402960へ) 
CMP命令:レジスタの中の数値と指定の数値を比較 
※00402960にはエラーメッセージを表示する処理が書かれています 
エラーメッセージを表示する命令にジャンプするようになっているので… 
このJNZ命令を何もしない命令「NOP命令」に 
書き換えることで条件をクリアする!
2014/09/06 
23 
JMZ命令(バイナリで75 27と表現)を 
NOP命令(バイナリで75 0Cと表現)へ
強制終了は免れることが出来る 
2014/09/06 
24 
この先もまだまだ続く けど今日はこれまで
どうでしょうか? 
2014/09/06 
25
少し難しかったでしょうか? 
2014/09/06 
26
とりあえず言いたいこと 
•何気なく使用していたソフトウェアの中身を 覗くことで,似たようなプログラムを作る時 に応用することが出来る 
•コンピュータやソフトウェアの最小単位は “バイナリ”である 
•アセンブラの勉強は今からでもでき,リバー スエンジニアリングの勉強も今からできる 
2014/09/06 
27
参考書籍&おすすめ書籍 
•『たのしいバイナリの歩き方』(技術評論社) 
•『リバースエンジニアリング Pythonによる バイナリ解析手法』(オライリー・ジャパン) 
•『アナライジング・マルウェア フリーツー ルを使った感染事案対処』(オライリー・ ジャパン) 
•『アセンブリ言語の教科書』(データハウス) 
2014/09/06 
28

More Related Content

第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』