このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

Macで歩く「たのしいバイナリの歩き方」うさみみハリケーンの代わりに、Cheat Engine / Bit slicerを使用する

アセンブラ

2026.04.12

どもです。

前回、「たのしいバイナリの歩き方」をMacで代替ツール使うとしたら、という感じでまとめさせていただきましたが、そのなかの今回は、うさみみハリケーンの代わりに、Cheat Engine / Bit slicerを使用してみた。という内容になります。

早速、ChatGPTさんにメモリ改竄用のゲーム作ってくれーとお願いしたところ、pygameのソースを出していただけました。

単純に落ちてくるオブジェクトをキャッチするとスコアが増えていきます。

このスコアをツールを用いてチートで変更していこうというもの。

まずはともあれpygameをインストール。

pip install pygame

 

shooting.py

import pygame
import random

pygame.init()

WIDTH = 600
HEIGHT = 400

screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Cheat Engine Demo Shooter")

font = pygame.font.SysFont(None, 36)

player_x = WIDTH // 2
enemy_x = random.randint(0, WIDTH)
enemy_y = 0

score = 0

clock = pygame.time.Clock()

running = True

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        player_x -= 5
    if keys[pygame.K_RIGHT]:
        player_x += 5

    enemy_y += 3

    if enemy_y > HEIGHT:
        enemy_y = 0
        enemy_x = random.randint(0, WIDTH)

    # 当たり判定
    if abs(player_x - enemy_x) < 30 and abs(350 - enemy_y) < 30:
        score += 10
        enemy_y = 0
        enemy_x = random.randint(0, WIDTH)

    screen.fill((0,0,0))

    pygame.draw.rect(screen,(0,255,0),(player_x,350,40,20))
    pygame.draw.rect(screen,(255,0,0),(enemy_x,enemy_y,20,20))

    score_text = font.render(f"Score: {score}",True,(255,255,255))
    screen.blit(score_text,(10,10))

    pygame.display.update()

    clock.tick(60)

pygame.quit()

 

実行。

python shooting.py

起動しました。

数行のPythonでゲームを起動できるpygameは素敵ですね。

というか、更にChatGPTさんにお願いすれば3分程で用意できる環境になったのは本当便利。

 

では、解析ツールのCheat Engineをインストールしていくのですが、普通ではインストールできませんね。メモリにアタッチしたりするのでCheat Engine自体がウィルスとして扱われます。

右クリックで開くだけではアプリは開けず、システム設定 > プライバシーとセキュリティで許可が必要。と起動するまでちょっと面倒な感じになっています。

やっとこさ起動したところになります。

UIもうさみみハリケーンぽいですね。

このまま使って行こうと思ったのですが、MacだとBit slicerの方がシンプルで使いやすかったのでBit slicerを使っていくことにしました。インストールもスムーズでした。

また、Python + Pygame のゲームだと、scoreの値が メモリ内に複数コピーされやすいためか全然値が絞れなかった。ので、値が絞りやすい様にC言語で簡単なゲームをChatGPTに作ってもらいました。

コンパイルはClangを使います。

hack_game.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

typedef struct {
    int hp;
    int ammo;
    int score;
} Player;

Player *player;

void init_game() {
    player = malloc(sizeof(Player));
    player->hp = 100;
    player->ammo = 30;
    player->score = 0;
}

void print_status() {
    printf("HP: %d | AMMO: %d | SCORE: %d\n",
           player->hp,
           player->ammo,
           player->score);
}

int main() {

    srand(time(NULL));

    init_game();

    printf("=== Memory Hack Practice Game ===\n");
    printf("Process PID: %d\n", getpid());
    printf("Use Bit Slicer to modify values!\n\n");

    while (1) {

        int r = rand() % 3;

        if (r == 0) {
            player->score += 10;
            printf("Enemy destroyed!\n");
        }

        if (r == 1) {
            player->hp -= 5;
            printf("Player hit!\n");
        }

        if (r == 2) {
            player->ammo -= 1;
            printf("Shoot!\n");
        }

        print_status();

        sleep(2);
    }
}
clang hack_game.c -o hack_game

実行。

./hack_game
HP: 95 | AMMO: 29 | SCORE: 10
HP: 90 | AMMO: 28 | SCORE: 20

 

2秒ごとにランダムでHPが減ったり、アーマーが削れたり、スコアが増えたりゲームとし、scoreの値を変更していきます。

プログラムを実行し、プロセスをhack_gameに合わせ、まずは、HPのメモリを変更していきたいと思います。今のHPの値を検索すると、ヒットしました。しかも絞れましたので、3000に変更。

コンソールの方にも変更されたHP:3000の値が確認できます。

さらに現在のスコアを確認し、検索。

Address 0x101026048のValue264となっているのがスコアのメモリのようなので1000に変更すると、

スコアも変更されたのが確認できました。

というわけ簡単ではありますが、Macのほうではうさみみハリケーンは使えませんが、代替として、Cheat Engine または、 Bit slicerを使うことによって、メモリを改竄することができました。

また、その他の解析ツールも機会があればと。

ではではぁ。

またまた。

Comment

Related Article

Macで歩く「たのしいバイナリの歩き方」うさみみハリケーンの代わりに、Cheat Engine / Bit slicerを使用する

2026.04.12

Macで歩く「たのしいバイナリの歩き方」

2026.04.10

CATEGORY LIST

LATEST NEWS

Macで歩く「たのしいバイナリの歩き方」うさみみハリケーンの代わりに、Cheat Engine / Bit slicerを使用する

アセンブラ

2026.04.12

Macで歩く「たのしいバイナリの歩き方」

アセンブラ

2026.04.10

【Railway】ひたすら安く個人開発サービスを運用する計画

サーバー

2026.04.06

たびのきろく

イベント

2026.02.23

【Railway】MySQLサービスをコスト抑えて運用する

運用

2026.01.19

あけましておめでとうございますmm DjangoアプリをRailwayに移行する。

運用

2026.01.06

効率の良い AI駆動開発について考える

AI・Bot・algorithm

2025.11.09

MacとClaude Codeで構築する cc65(NES)開発環境

Game

2025.10.24

Three.js - ShaderMaterialで、ブレンドシェイプ(MorphTarget)アニメーション対応

JavaScript

2025.10.15

ゲーム開発に必要な基本数学入門

Rust

2025.08.15

Godot 4 & WebAssemblyで様々なデータフォーマットを処理

Godot

2025.07.06

Godot 4 & WebAssemblyで、Hello WebAssembly! - godot-wasm

Godot

2025.06.21

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US