Giter VIP home page Giter VIP logo

secexp-for-junior's Introduction

0から始めるゲームハッキング体験

やること

  • ハッキングってなに?
  • 実行ファイルを書き換えてみよう
  • ハッキングを学ぶ

ハッキングってなに?

ハッキングとクラッキング

  • ハッキング
    コンピュータを用いたエンジニアリング(開発)行為を広く指す言葉
  • クラッキング
    悪意を持って脆弱性(安全性の穴)を攻撃しシステムを改ざんしたり情報を抜き取ったりすることを指す言葉

「ハッキング」をする理由

セキュリティ(安全性)を保つためには、攻撃者がどのような手法を持って攻めてくるかを知る必要がある
→ 知らない攻撃から身を守ることはできない

VRやビットコインなど、いろいろなものの「仮想化」が進む社会ではセキュリティがとても大切

意外と身近なところにセキュリティの危険性が潜んでいる!

  • インターネットを介した通信内容の盗聴
  • 暗号化されたデータの解読
  • webサイトから不正にパスワードを入手
  • ゲームを不正に書き換える(チート行為)

ハッキングをするためのツールが無料で配られている
→簡単に悪用することができる (違法なので絶対にダメです)

実際にやってみよう

ソーシャルゲームのガチャを真似た簡易的なプログラム「gacha」を実行してみる

手順
端末を開き、./gachaと打ち込んでエンターキーを押す

排出率

レアリティ 排出率
SSR 3%
SR 10%
R 87%

実行ファイルの中身

実行ファイル : コンピュータが実行できる形式のファイル
中身は0と1の羅列で、通常のテキストエディタ(メモ帳など)では開くことができないが、特殊なエディタ(バイナリエディタ)を用いることで中身を閲覧・編集できる

実行ファイルの中身(バイナリ)を実際に見てみる

手順
端末を開き、ghex gachaと打ち込んでエンターキーを押す

以下のような画面が表示されます↓

表示されているのは0と1の羅列(2進数)を16進数に変換したもの

2進数と16進数 : データを0と1のパターンで表す2進数とデータを09,afで表す16進数は相互に変換することができる

バイナリの意味

人間が一見しただけでは意味のわからない文字の羅列に見えるバイナリ(機械語)を人間に読みやすく変換することができる

手順
ghexを一度閉じ、端末にobjdump -M intel -S gachaと打ち込んでエンターキーを押す

以下のような画面が表示されます

左半分にバイナリ、右半分に人間に読みやすく変換されたアセンブリ言語というものが表示される

上にスクロールして、000000000000186c <gacha>:と書かれた行を探す(ガチャの本体がここに記述されています)

191b: 7f 1e     jg 193b <gacha+0xcf>
「レアリティがRのアイテムを排出する」という処理をする行
→ここを「何もしない」に書き換えると、SSRとSR以外は出ないようになるはず

手順

  1. 端末にghex gachaと打ち込んでエンターキーを押す
  2. スクロールして00001910から始まる行を探す
  3. その行のうち、7F 1Eと書いてあるところを探す
  4. 7をクリックし、9090と打ち込む
  5. CtrlキーとSキーを同時に押してからghexを閉じる
  6. ghexを閉じる
  7. 端末に./gachaと入力して閉じる

おまけ

SSRしか出てこないようにバイナリを書き換えてみる

objdump -M intel -S gachaをして出力される中の000000000000186c <gacha>:を見てみると、もう一つjgという命令が書かれた行が見つかる

この命令はghexでバイナリを見たとき、000018F0から始まる行のどこかに存在する
90 90に書き換えてSSRしか排出されないようにしてみよう

ハッキングを学ぶ

Capture the Flag(CTF)

「ハッキングコンテスト」と呼ばれている(世界各地やオンラインで開催されている)
大会型と常設型があるので初めての人は常設で練習するのがおすすめ

今回扱った分野(Reversing, Binary)以外にもWeb, Pwn, Crypto, Networkなど様々

セキュリティコンテストチャレンジブックなど、CTFやセキュリティを学ぶための書籍もある

講師の連絡先

はすみ(mail: [email protected])(Twitter: @hsm_hx)

  • 宇部高専コンピュータ部 部長
  • 非公式学生サークル 情報技術研究会 Circ:RE代表
  • CTFをしたりwebサービスを作っています

CTFに興味を持ったり、部活や学校のことについて質問があれば気軽に連絡してね

secexp-for-junior's People

Contributors

hsm-hx avatar

Stargazers

nanigasi_san avatar

Watchers

James Cloos avatar Hideya Kubota avatar nanigasi_san avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.