Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10分で知るゲームが「チートされる」仕組み/findy202603

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for @tkmru @tkmru
March 19, 2026
180

 10分で知るゲームが「チートされる」仕組み/findy202603

Avatar for @tkmru

@tkmru

March 19, 2026
Tweet

More Decks by @tkmru

Transcript

  1. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ TUSJOHTίϚϯυ͚ͩͰ伴ΛಛఆͰ͖Δ w όΠφϦʹฏจͷ҉߸伴Λͦͷ··อଘ͍ͯ͠ΔͱTUSJOHTίϚϯυͰ伴Λநग़Ͱ͖Δ w ৄࡉͳϦόʔεΤϯδχΞϦϯά͸ෆཁ w ҉߸Խ伴͸ݻఆ௕ʢ"&4όΠτ "&4όΠτʣͷͨΊݟ͚ͭ΍͍͢ w

    ಉ͡௕͞ͷͦΕͬΆ͍จࣈྻΛ୳͚ͩ͢ͰൃݟͰ͖ͯ͠·͏ w ରࡦ伴ͷΤϯίʔυɾ෼ׂอଘͰTUSJOHTʹΑΔநग़Λࠔ೉ʹ͢Δ  $ strings -n 32 libgame.so | head aB3kP9mZxQ7wL2nR5vY8jC4hF6tD0sGe ← AES-256ͷ伴ʢ32όΠτʣ
  2. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ ೉ಡԽ͚ͩͰ͸कΕͳ͍ Š'SJEBʹΑΔಈతղੳ w 'SJEB͸࣮ߦதͷΞϓϦͷؔ਺ΛϑοΫͰ͖Δπʔϧ w ؔ਺ͷ࣮ߦ࣌ͷೖग़ྗΛ؍ଌͰ͖Δ w ෮߸ॲཧ͕ݺ͹ΕͨॠؒʹҾ਺ͷ҉߸伴Λ೷͖ݟͰ͖Δ w

    ҉߸伴ΛӅͯ͠΋ɺ࢖͏ॠؒΛૂΘΕΕ͹औಘ͞ΕΔ w ࣮ߦ࣌ͷೖग़ྗΛ؍ଌͰ͖Δͷ͕'SJEBͷڧΈ  // Frida εΫϦϓτྫ: ෮߸ؔ਺͕ݺ͹Εͨ࣌ʹҾ਺ʢ伴ʣΛදࣔ Interceptor.attach(Module.findExportByName("libgame.so", "decrypt"), { onEnter: function(args) { console.log("key: " + Memory.readByteArray(args[1], 32)); } });
  3. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ ੬ऑੑᶃෳ਺ͷϦΫΤετΛಉ࣌ʹૹ৴͢Δ͜ͱͰ ճ਺੍ݶΛ͢Γൈ͚Δ w ૝ఆγφϦΦ೔ճݶఆͷΨνϟ"1* w ߈ܸํ๏ಉ͡"1*ʹରͯ͠ಉ࣌ʹෳ਺ͷϦΫΤετΛฒߦૹ৴͢Δ w ݪҼ%#ͷϩοΫʢഉଞ੍ޚʣ͕Ͱ͖͓ͯΒͣɺʮ࢒ճ਺ͷ֬ೝʯ͔Βʮߋ ৽͢Δʯ·ͰͷؒʹଞͷϦΫΤετ͕࣮ߦՄೳʹͳΔ

     ࣌ؒ ────────────────────────────────────────────────────────▶ ϦΫΤετA: ࢒ճ਺ΛಡΉ(1) → Ψνϟ࣮ߦ → ࢒ճ਺Λ0ʹߋ৽ ϦΫΤετB: ࢒ճ਺ΛಡΉ(1) → Ψνϟ࣮ߦ → ࢒ճ਺Λ0ʹߋ৽ ↑ A͕࢒ճ਺Λߋ৽͢ΔલʹB΋ʮ࢒Γ1ճʯͱೝࣝ͠ɺΨνϟΛ࣮ߦͯ͠͠·͏
  4. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ ٖࣅϑΝΠϧΛ༻͍ͨϝϞϦͷॻ͖׵͑ํ๏ w -JOVYͰ͸֤ϓϩηεͷϝϞϦ৘ใ͕ಛघͳϑΝΠϧͱͯ͠ެ։͞Ε͍ͯ Δ w /proc/<pid>/maps ͔ΒήʔϜ͕࢖༻͍ͯ͠ΔΞυϨεൣғΛಛఆ w /proc/<pid>/mem

    ͷ֘౰ՕॴΛಡΈऔΓɺ໨తͷ஋ʢྫ)1ʣΛ ݕࡧ w ݟ͚ͭͨΞυϨεͷ஋Λॻ͖׵͑Δʢྫ)1ˠʣ w ήʔϜ͕ը໘Λ࠶ඳը͢Δͱվ͟Μޙͷ஋͕දࣔ͞ΕΔ 
  5. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ BQLNFEJUŠ"OESPJEϝϞϦվ͟Μ044 w IUUQTHJUIVCDPNTUFSSBTFDBQLNFEJU w #MBDL)BU64""STFOBMͰൃද w ੬ऑੑ਍அ΍։ൃ࣌ͷςετʹ࢖༻͍ͯͩ͘͠͞ɻνʔτ͸ېࢭʂʂ  $

    adb shell $ run-as com.example.game # ͜ͷΞϓϦͷݖݶͰγΣϧʹೖΔ $ ./meditɹ > find 100 # ݱࡏ஋͕100ͷΞυϨεΛݕࡧ > filter 95 # HPΛݮΒ͔ͯ͠Β࠶ݕࡧͰߜΓࠐΈ > patch 99999 # ಛఆΞυϨεͷ஋Λॻ͖׵͑