コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

"月" 曜日最高!!

月曜日です

「新しい朝が来た 希望の朝だ♪」の朝が"月曜日"のことを指しているのは自明ですが、皆様いかがお過ごしでしょうか?
ええ言葉にせずともわかりますよ。そうですね、待望の月曜日です。朝になるのが待ち遠しい気持ちでいっぱいだとは思います。

バイナリデータをいじってみる(exe編)

ごめん、やっぱつれぇわ。自分に嘘つけねぇ。


そんなわけで、この気持をデータともに書き換えます。ゲツヨウビ ミンナ スキ。


準備編

今回はbatファイルと違ってexeファイルを利用するので準備がいります。どちらのファイルもWindowsだと実行形式のファイルで、ボタンポチーっとすると実行されるファイルには変わりありません。では何が違うのかといいますと、「batファイルは単体の命令で構成されたプログラムファイル」で「exeファイル(実行形式ファイル)は複数の命令がまとめて構成されたプログラムファイル」なんです。まあ、知らんけど(無責任)。例えるならbatファイルは単発ガチャ、exeファイルは10連ガチャみたいな感じです。exeファイルにすると確定レアが入っていてお得!みたいな感じです。

というわけでexeファイルをつくるために、今回はC言語で作っていきます。そのための準備としてフリーのコンパイラ(exeファイルを作るための装置)を準備します。

こちらのものを利用します
MinGW | Minimalist GNU for Windows

MinGW
MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNUツールチェーンのWindows移植版である。MinGWWindows APIのためのヘッダファイルを含んでおり、フリーのコンパイラであるGCCを、Windowsアプリケーションの開発のために利用できる。

これ「ミンジーダブリュー」って読むんですね。僕ずっと「ミングゥ」って読んでました。そして、ダウンロードしたインストーラー、パッケージ管理までしてくれるのにPathは通してくれないんですね。


インストールを終えたら、早速メモ帳か何かでC言語を打ち込んでいきます。

何かを打ち込んだソースコード

#include <stdio.h>

int main(void){
	printf("月曜日最低");
	getchar();
	return 0;
}

先ほどの話になりますが、一行目の"stdio.h"がガチャで言う確定レアにあたるものになります。その下は自分でこれから何するよということ書いているだけの処理です。そして、これをコンパイルすると月曜日最高と黒い画面に表示する糞プログラムになります。例えが全くよくわかりませんが続けていきます。

実行結果
f:id:andron:20161231210311p:plain

やります

まずは作ったものを実行ファイルに変換しますgcc [ファイル名.c]。これで生成されたものを実行したものが上の画像になります。

そしてこいつをStirlingを使って中身を覗きます。

すると、このようなものが出てきます。色々と情報を詰め込んでいるので元のファイルよりはるかにボリューミーな感じで出てきます。画像のところに怪しい物があったのでこいつをいじります。
f:id:andron:20161231210148p:plain

いじりました。
f:id:andron:20161231200201p:plain


そして実行します。


書き換えに成功しました。
f:id:andron:20161231204133p:plain
実際は、やろうと思えば本当に色々できるそうですが、僕はやりません。テキストの書き換えで僕が満足しているのはこの文字列を眺めてるだけで頭が痛くなるからです。こういった形で、暗号化とかしなければパスワードなんて簡単に抜き出せるんだぞぐらいの気持ちで各々のセキリティ意識を高めていただければ幸いです。

タメになる話っぽいことをしてしまいました。
ああ…やっぱり月曜日って最高だ。