第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
-
Upload
saya-katafuchi -
Category
Technology
-
view
583 -
download
3
description
Transcript of 第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
リバースエンジニアリング入門 ~楽しいバイナリ解析~
長崎県立大学
国際情報学部 情報メディア学科
片渕 小夜
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