misc.log

日常茶飯事とお仕事と

Windowsアプリが32bitか64bitか判定する方法

Windowsで動く、実行形式のファイル、拡張子が「.exe」になっている、いわゆる「アプリ」ですが、アプリが作られた際の方式(アーキテクチャ)の違いにより、32bitアプリや64bitアプリといった種類が存在します。しかし、Windows Explorerで見ても、デスクトップなどのアイコンを見ても、それが32bitか64bitかは判断できません。

ここでは、アプリ自体の中身を調べて32bitか64bitかを判断する方法の一例を紹介します。なお、詳しいツールの使い方などについての説明は行いません。ある程度、プログラム開発やシステム開発などに携わってIT系の知識がある人を前提とさせていただきます。

バイナリーエディタでPEヘッダーを見る

実行形式ファイル(以下EXEファイルと略記)をバイナリーエディタで確認すると、ファイルの冒頭、アドレスにして「0x100~0x200」のあたりに、「50 45」で始まるブロックがあります。ASCII表示だと「P E」となるこの部分、ファイルの特徴等について記述されたPEヘッダー*1と呼ばれるエリアです。この「P E」のすぐうしろを見てください。この部分が下記のどちらかで、32bit、64bitの判定が可能です。

  • 4C 01 …… 32bitアプリケーション
  • 64 86 …… 64bitアプリケーション
64bitアプリケーション「Diablo IV」のPEヘッダー部分

(無理矢理)テキストエディターで見る

バイナリーエディターを使った方法を紹介しましたが、少々無理矢理ではあるものの、テキストエディターを使っても同様の事ができます。下図は、32bitアプリケーションである「Excel.exe」を、Windows標準のメモ帳で開いてみたところです。上の方に「PE」という文字があり、その後ろに「L」と書かれています。この部分の文字で、以下のように判別が可能です。

  • 「PE・・L」…… 32bitアプリケーション
  • 「PE・・d」…… 64bitアプリケーション
32bitアプリケーション「Excel」をメモ帳で開いたところ

冒頭に書いたDiablo IVの場合と同じように、バイナリーエディターで見た様子は下記の通り。右の「Decoded Text」のところが「PE・・L」になっているのが分かるかと思います。

32bitアプリケーション「Excel」をバイナリーエディターで開いたところ

判別に使っている情報の正体

この判別に使っている「PE」という文字に連なる「4C 01」や「64 86」といった情報の正体ですが、WindowsのEXEファイルに含まれる「PEヘッダー」と呼ばれる情報のうち「IMAGE_FILE_MACHINE」と呼ばれる、EXEファイルが動くコンピューターの種類を指定する情報です。これはマイクロソフトによってルールが定められており、今巷に出回っているIntelAMDといったメーカーのCPU以外にも、様々なCPUで動くコンピューターに対応できるよう、いろんな種類が定義されています。以下に一例を示します。

IMAGE_FILE定数の種類(抜粋)
  • IMAGE_FILE_MACHINE_I386インテル/AMD 32bit CPU用) …… 0x014C
  • IMAGE_FILE_MACHINE_AMND64(インテル/AMD 64bit CPU用)…… 0x8664
  • IMAGE_FILE_MACHINE_ARM(ARM製CPU用)…… 0x01C0
  • IMAGE_FILE_MACHINE_POWERPC(古いApple社CPU用)…… 0x01F0
  • IMAGE_FILE_MACHINE_R4000(MIPS R4000用)…… 0x0166

詳しくは、下記サイトに列挙されています。
learn.microsoft.com

上記の「IMAGE_FILE_MACHINE_I386」の値「014C」を見て、冒頭に書いた『32bitならば「4C 01」』と違うじゃないかと思われるかもしれません。これは、コンピューターの中にはデータの上位桁と下位桁を交換して保持する「リトルエンディアン」と呼ばれる方式のものがあるためです。Windowsなどが動いている、市販のパソコンで使われるインテルAMD社のCPUは、このリトルエンディアン方式を採用しており、データを書き込んだり取り扱ったりする際に1バイト(16進数ならば2桁分)ずつ、上下を入れ替えて保存します。そのため、Windowsなどで使われているEXEファイルの中身も、値を保存する部分についは上下が逆転した形で保存されており、マイクロソフトのルールでは「01 4C」であっても、実際のファイルの中身は「4C 01」になっています。

参考情報

Win32 API IMAGE_FILE_HEADER構造体

ファイル情報を取得するAPIで扱う構造体の定義情報です。この中のメンバー「Machine」の内容が、前述の「IMAGE_FILE_MACHINE……」になります。
learn.microsoft.com

IMAGE_FILE_MACHINEイメージファイルマシン定数

learn.microsoft.com

アーキテクチャ判別ツール(HEROUSE PE Header Reader)

こういうツールを作って下さっている方もいらっしゃいます。お手軽に調べるならこういうものを使うのも手です。
www.vector.co.jp

*1:PE: Portable Executable の略

Amazonアソシエイトで税に関する設定を行う(税務情報の入力)

Amazonアフィリエイトシステム「Amazonアソシエイト」の自分用ページを開いたところ、画面上部に「遅延によって支払が滞らないようにしましょう …… プライマリアカウントの所有者は、税務情報の入力を完了する必要があります。」という表示が現れました。Google AdSenseYoutubeでもおなじような税関連の設定があったので、まーた海外の税務情報や、日本に在住していることを示す資料を取り寄せる必要があるのかとおもったら……簡単な入力で問題無さそうです。念のためこちらに書いておきます。

税務情報を送信する、を押す

「税務情報を送信する」というボタンを押すと、下図のような入力フォームが表示されるので、これを埋めるだけです。私は個人で、趣味でブログと広告掲載をやっているだけなので、下記のように入力しました。

Amazonアソシエイト/税務情報の入力画面
  • あなた又は貴社の税務上の形態は何ですか? …… 個人
  • 税務上の正式名称を入力してください …… 本名(漢字で)
  • 定住所 …… 表示されているものが住所として間違い無いか確認
  • 私の郵送先住所は…… …… チェックON
  • 税務上の居住地国/地域を選択します …… 日本
  • 貴社またはあなたは適格請求書発行事業者(インボイス発行事業者)の登録番号をもっていますか?…… いいえ
  • 貴社またはあなたは消費税の課税事業者ですか?…… いいえ

最後に、グレーの背景色になっている欄の署名というところに名前を。また、日付のところが入力日になっていることを確認し、送信ボタンを押すと下図のような表示が行われ、「インタビューを終了」ボタンで完了です。

最後の表示に「源泉徴収率」というのが有るのを見て、ふと思ったのですが……Amazonからの支払でも源泉徴収されることがあるんですね。どうやら、月の支払が12万円を超えると源泉徴収され、アフィリエイト収入を確定申告する際には、源泉徴収額をe-taxなどの入力時にきちんと入力しないと、多重で税を取られるようで。まぁ……無縁な世界ですが。その辺、きちんとしてるんだな……というのがよく分かりました。

透明ブックカバー「ブッカー君」の小文庫用を仕入れる(ラノベ等)

ここ1年2年愛用している書籍関連グッズの1つ「透明ブックカバー」。いくつか試したのですが、入手容易性とラインナップから「ブッカー君」というのが自分的定番となっています。ですが、小さめの文庫用(ラノベや、講談社文庫など……)のサイズが近所の書店で買えなくなって2ヶ月ほど経つので、楽天で購入することに。こちらのショップだと100枚(10枚パックx10)で1,400円。送料込みなので安いです。

Amazonでもあるのですが、あまり扱っているショップがなく割高でした。
なお、ハヤカワ文庫はサイズがまた全然違っていて、ブッカー君では対応するものがありません。専用のものを購入する必要があります。下記で紹介していますので良かったらみてみてください。

www.backyrd.net