プロフィール

髭山髭人(ひげひと)

自分の書いた記事が、一人でも誰かの役に立てば...
活動信条の一つとして「貴方のメモは、誰かのヒント」というのがあります。

このサイトについて

本家HP packetroom.net から切り離した いわゆる技術メモ用のブログで、無料レンタルサーバーにて運用しています。広告表示はその義務なのでご容赦。
XREA さんには長年お世話になっています

Chromeバイナリ書換~横幅500px制限撤廃から始める快適ソシャゲライフ~

お知らせ

限定コンテンツの中核部情報と同性質・同一性のある情報が SNS上へ掲載されている事を確認したため
一部の記事や外部コンテンツを修正または非公開の状態としています
( 2023/12/27 )

はじめに

  • 趣旨
    Chrome(系)の横幅を500px未満に縮めるには 結局バイナリ弄るしか手立てがないんで、
    それに関する様々な情報を1記事にまとめています。
    ( バイナリ編集値をまとめた記事は別 )

※ 自己責任で行ってください

バイナリ書き換えで実現可能な処理

筆者が編み出した主要処理は以下の4つ。

1. 最小横幅制限の解除

昨今のChromium系ブラウザはウィンドウ最小幅が500pxですが、これを外せます(=下限値の変更)
左から順に 通常の最小幅500px / 329px(改造済) / 120px(改造済)

2. タブ検索ボタンの非表示

昔はオプションで消せましたが、現在は非表示にできません。
( 右が編集後 )

3.スキーム文字列の非表示

http 接続時に出る「保護されていない通信」の文字列を消すことで、
https 接続と同等のレイアウト になります。

左上 : http 接続 / 右側 : https 接続
左下 : 改造(消去)後 http 接続

4.ロケーションバー幅の下限撤廃

URLバー(ロケーションバー)の横幅下限値を無くし、拡張機能アイコン群がなるべく折りたたまれない様にします
運用幅に応じ、メニューアイコン等も見切れづらくなります。

画像は上下どちらも改造済みですが、下側はホームボタンをONにしています。
( この場合、仕様的にホームボタンが優先されるため、拡張機能アイコンが一つ折りたたまれています )

上記 1~4 の全適用デモ

  1. ブラウザ横幅の制限解除(任意値まで緩和)
  2. タブ検索ボタンを消去
  3. http 接続で表示される「保護されていない通信」文言を消去
  4. ロケーションバーの横幅制限撤廃 (拡張機能やメニューボタンが見切れづらくなる)

執筆時 GoogleChrome 99.0.4844.82 (x64)

【!】バイナリ書き換え前に必ず知っておいて欲しい情報【!】

改造に伴い 以下のデメリットが2点発生します

  1. ⚠️ 一部サブスク視聴系サービスでエラーが起きる
    コンテンツが受信出来なくなる厳格な仕様が存在し、それに引っかかるぽいです。
    このため、改造ブラウザではAmazonPrimeやSpotifyなどが視聴できなくりなります。
  2. ⚠️ 自動強制アップデートで初期化される
    GoogleChromeは自身のアップデートを頻繁に行うので、そのたびに改造がリセットされます。
    (ただし後述の Chromium ブラウザは、自らの自動更新を行ないません)

とはいえ、これらデメリットは Chromeをコピーして使い分ける または ChromiumをDLして使い分ける 事で2ついっぺんに回避可能です。

以下、デメリット回避のユースケース3例

  • ケース1
    Chromeをメイン利用
    別の場所へコピーしたChrome をソシャゲ用に改造+運用。
    メインのChromeはそのままなので、サブスク視聴OK , アップデートも今まで通り。

  • ケース2
    Chromeをメイン利用
    Chromium ブラウザを新しくDLしたものをソシャゲ用に改造+運用。
    メインのChromeはそのままなので、サブスク視聴OK , アップデートも今まで通り。

  • ケース3
    FireFoxやEdge,Vivaldi等をメイン利用。
    Chromium ブラウザを新しくDLしたものをソシャゲ用に改造+運用。
    ケース1,2同様、メインブラウザには一切干渉しない

いずれも 「改造したブラウザは、メインではなくソシャゲ用(など)に絞って使う」 事で、前述のデメリットを一切受けずに済みます。
というかむしろ 「スマフォサイズで遊ぶソシャゲを、態々メインブラウザでプレイする」 なんてケースのほうが面倒くさいでしょうから、
一度環境を整えてしまえばOKな上記ユースケースの方が、はるかにメリットがある...と言えるのではないでしょうか。

改造済ブラウザのサブ運用方法

ここからはソシャゲ用ブラウザの準備や、運用テクニックを紹介していきます

筆者が仕込んでいるギミックはこちら↓

  • GoogleChromeをコピー(+バイナリ書き換えで改造)したものを、ソシャゲ用に使う
  • 改造Chromeは .vbs ファイルを経由させて起動し、以下の恩恵を受ける
    • 効果1 : メインと完全に切り分けたChromeとして扱える(別プロファイル)
    • 効果2 : 起動時にUA指定コマンドを含ませ、拡張機能なしでUA偽装を行う (好みによる)

1.Chrome を別の場所へコピーしておく

※ Chromium ブラウザをDLして使う方は、「コピーしたChrome」→「DLしてきたChromium」に適宜解釈してください

大抵の方であれば C:\Program Files (x86)\Google\Chrome\Application\ フォルダ内に GoogleChrome 本体が格納されていると思います。
この中身を丸ごと、任意の場所へコピーしてください

自分は C:\MyProjects\ChromeCustomize\SubChrome\ という場所で運用しています。

以降、コピーしたChromeはアップデート対象とはなりません。 ( 自らの更新時、エラーが発生して処理が中断されるので )

2.サブブラウザは .vbs ファイルで経由させる

これに関しては 既にChromeのショートカットを編集したり、別途 .bat ファイルなどに命令を書き込んで運用しているソシャゲーマーの方もいらっしゃるかもしれません。
自分は .bat ではなく .vbs に処理を書いて運用しています

※ 画像は運用イメージ。 このファイルを実行すれば、サブのChromeが立ち上がるという寸法

以下、1つの .vbs ファイルで、2アカウント分のソシャゲブラウザを一気に同時起動 させる内容です。
※ 一部のコマンド・ファイル位置は自身で用意した環境に応じて変えてください

下記をコピーして適当な新規テキストファイルへ貼付保存のち、
その拡張子を .txt から .vbs に変更するだけで(筆者用の内容にはなりますが)完成です。
後述のテキストを読めば、馴染みの無い方でも 軽い改造・カスタマイズ程度は出来るかなーとも思います。

Dim ExePath
ExePath = "C:\MyProjects\ChromeCustomize\SubChrome\chrome.exe"

Dim UA_iPhone
UA_iPhone = """ --user-agent=Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5"""

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run ExePath & " --user-data-dir=c:\socialgame\01 " & UA_iPhone
WshShell.Run ExePath & " --user-data-dir=c:\socialgame\02 " & UA_iPhone

二重引用符 " がやたら重なっていたり、一見不要と思われる半角スペース等が混ざっているように思われますが、 削ると正常に認識されなくなったりエラーが発生しますのでご注意。

ExePath = の右辺は、コピーしたサブChromeの chrome.exe 位置です

UA_iPhone = の右辺は、起動するChrome側に「これから、このUAモードで起動してね」との命令を与える下準備に相当します。
環境によっては改行されているように見えますが、横に長い一行分として記述してください。
あと、やたら """ が多いですが、これはそういうものだとスルーしてください。

WshShell.Run の箇所にて、コピーした chrome.exe を実行させつつ、
同時に「クッキー情報やキャッシュなどを格納するフォルダの位置」を決め打ちで指定しており、
更に、先程用意したUA情報も与えています

逆にもし「UA偽装は拡張機能で切り替えたい。 起動時からの強制UA偽装は不便」
...という考えであれば、下記のように、& UA_iPhone の箇所を削ればOKです。
「UA偽装の用意はしたけれども、結局使いませんでした」 みたいな感じになります。

' ...前略...
WshShell.Run ExePath & " --user-data-dir=c:\socialgame\01 "
WshShell.Run ExePath & " --user-data-dir=c:\socialgame\02 "

さて、" --user-data-dir=c:\socialgame\[ホニャララ] " という箇所がありますが、
これは先程触れた「メインと完全に切り分けたChromeとして扱う」という命令のようなもので、
ここで指定した場所に、クッキー情報・設定ファイル・キャッシュ...etcを全て格納するよう振る舞わせます。
「別のユーザープロファイルで扱う」と説明したほうが人によっては伝わり易いかも。

丁度 c:\socialgame\01c:\socialgame\02 が格納先に相当します。
あらかじめ c:\socialgame\ というフォルダ(場所も名前も任意)さえ作成しておけば、あとはそこに上手い事格納してくれます

今後もし、そのソシャゲをアカウント削除・引退・休止等して、サブブラウザでの運用が不要になれば
そのブラウザログイン情報等が格納されているフォルダ ( つまり、対応する c:\socialgame\[ホニャララ] ) を削除することで、
不要になったブラウザ情報設定をユーザープロファイル単位で全て消す事も出来ます。

勿論 これらを削除しても、メインで使っているGoogleChromeのキャッシュはまた別のところにありますので、そちらへの影響はありません。

UA情報を扱う時の注意点

.vbs 内部でUAを直接操作して起動させる場合、
UA情報に応じて ChromeExtension(拡張機能)の管理ページが表示されなくなる という不具合(?)を確認しています。

様々なUAパターンで逐一確認はしてないものの 幾つか試したところ、新しいものだと出なくなるケースがある様で
敢えて少し古め?のUAで起動すれば、問題なく拡張機能ページが表示される事を自環境で確認しています。

このトラブルに陥った場合は、UA文字列を変えてみると良いでしょう。

ちなみに、自環境で拡張機能ページが問題なく開けたUA文字列( --user-agent= 右辺相当 )は以下となります

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5

.vbs サンプル画像紹介

※ スクショサイズの関係上、UA偽装文字列の右端が見切れています

.vbs 起動に関する補足事項

UA偽装無しで構わなければ、数行減らして書けます

Dim ExePath
ExePath = "C:\MyProjects\ChromeCustomize\SubChrome\chrome.exe"

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run ExePath & " --user-data-dir=c:\socialgame\01 "
WshShell.Run ExePath & " --user-data-dir=c:\socialgame\02 "

上記は2アカウント同時起動ですが、単に1アカウントだけの起動なら
以下のように実行命令を1行分減らせばOKです

Dim ExePath
ExePath = "C:\MyProjects\ChromeCustomize\SubChrome\chrome.exe"

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run ExePath & " --user-data-dir=c:\socialgame\01 "
' ※ ここ一行削っただけ

この様に、自分なりにカスタマイズした .vbs から起動することで、
メインのGoogleChromeとは完全に切り離されたサブChromeとして立ち上げる事が出来ます。


Iron Portable 版の入手・運用について

コピーしたChromeやChromiumではなく、Ironを使う選択肢もあります。
下手なChromiumより使い勝手良いかもしれないので、コレはコレでオススメです
また、.vbs を経由せずとも別ブラウザとして立ち上がるので、人によってはハードル低く感じられるかも・・?

入手先

執筆時の特定済バージョンは以下2つ
( ※ バイナリ書換値まとめ記事側が最新なので、これらよりレパートリー増えている可能性があります )

  1. SRWare Iron Stable for Windows / Portable ( 104.0.5300.0 )
    公式からフォーラムへ移動し、特定バージョンのアプデ報告トピックのリンクを見つけます。
    https://www.srware.net/iron/
    https://www.srware.net/forum/viewforum.php?f=18
    そこから更に
    https://www.srware.net/forum/viewtopic.php?t=62685
    ※ Download for 64-Bit Windows (x86-64) : (Portable) を選択

  2. Vector からDLできるポータブル版 / Zip ( 67.3500.0 )
    https://www.vector.co.jp/soft/dl/winnt/net/se503339.html
    ※ SRWare Iron(64bit ポータブル版) を選択
    ※ めっちゃ古いバージョンです ( 2018年らしい )

起動 / その他情報

\IronPortable.exe で起動させると、ユーザープロファイルが同階層 \Profile\ フォルダとして作られる模様。

\Iron\chrome.exe および \Iron\iron.exe での起動は、
C:\Users\[ユーザー名]\AppData\Local\Chromium 配下にプロファイルが作成される模様。

( ユーザープロファイル...ログイン情報とかキャッシュとかインストールした拡張機能が放り込まれる場所です。
今後そのソシャゲを Iron で遊ばなくなった場合、上記フォルダをまるっと消せばデータの後片付けがきれいに終わります )

✨ バイナリ書き換え値まとめ一覧記事へのリンク ✨

以下2つの支援サイトにて、気が向いた時に更新しており、
Fantia では 「どのバージョンの書き換え値が記載されているか」のリストを一般公開しています。
ご支援前に、必ず欲しい情報のバージョンが掲載されているかを確認してください。
原則、横幅制限解除値は必ず載せていますが、その他は気分/気力次第です...

👆 PixivFANBOX にも同様の記事を置いてありますので、Fantiaでバージョン確認のち、お好きな方を選んでください

また、「最近更新されてないみたいだけど、直近でアプデされたChromeの特定バージョンで使える横幅書き換え(等)が知りたい。上手く解析できたなら(一時的にでも)プラン加入するんだけど、どない?」
...といった思惑の方もお気軽にご相談ください。
別ごとで立て込んでいるとかでなければ、対応できるかも?

筆者へのコンタクト / 留意点

総合ページ https://packetroom.net/ から辿れる、
PixivアカウントのDM宛てだと、ほぼ確実に・素早く届くと思います。

うろ覚えですが、支援サイトでの運用を始めてから 5,6人程度の方から要望を受けて対応(≒解析)した記憶があります

宛先 気付きやすさ
PixivのDM ◎ … メール連携をしているので、気付きやすい
𝕏 ( Twitter )のDM 〇 … メッセージリクエスト扱いにより、気づきにくい場合アリ
PixivFanbox 記事へのコメント △ … 普段確認する習慣がない
Fantia 記事へのコメント ? … 忘れました
PixivFanbox のDM ? … 忘れました
Fantia のDM ? … 忘れました

ちなみに

元々自分がやりたかった事とはいえ、これら解析系にどの程度手間を割いたのか一応書いておくと、
毎日かなりの時間を費やして、知識0の所からほぼまるまる一ヶ月を要して辿り着きました。
他の物も合わせると、ノウハウ会得に合計二ヶ月くらいは掛かっているかもしれません。

今となってはやや古いですが、向こう1,2年ほどは書き換え値や当時のノウハウをある程度、無償で公開/周知させていました。
chrome.dll 改造メモ - 横幅制限箇所を探るまでのノウハウ
chrome.dll 改造メモ - LocationIconView や LocationBarView の特定
別記事移転

バイナリ書き換え手順の説明

1. バイナリエディタを入手

ファイルの内部データを書き換えることに特化したソフト みたいなものです。
某 プ〇アクションリプレイとか、ああいうノリで書き換えると言えば、伝わる方も多そう。
バイナリエディタ あたりでググって自己責任のもと適当なエディタを使ってください。
簡単なUIのものなら、初心者の方でも結構直感的に使えると思います。

2. Chrome.dll を作業できる場所へ引っ張り出す

インストール済みのChrome本体が置かれた場所をPCから探してください。 自分はおおよそ以下の場所にインストールされていました。

C:\Program Files (x86)\Google\Chrome

そこから更にフォルダを辿って Chrome.dll を探します

C:\Program Files (x86)\Google\Chrome\Application[バージョン値]\Chrome.dll

アクセス権限の観点から必ず、一度デスクトップなどに Chrome.dll をコピーし、そこで編集作業を行ってください。
( インストールフォルダ内での直接的な編集や上書きは基本的に出来ない為 )
また、念のため 同じフォルダ内に Chrome.dll.original といった風に、名前(拡張子)を変えたオリジナル状態のファイルを 最低1つは必ずバックアップしておきましょう。

※ Chromium をDLして使っている方は、場所の移動を行わずとも(システム系フォルダ等に入れていなければ)直接編集が可能です

3. バイナリエディタで Chrome.dll を編集

  • 値の検索について
    バイナリエディタには十中八九「データ(バイナリ/HEX)検索」と呼ばれる機能が付いています。
    テキストエディタで言うところの「文字検索」機能と同じです。
    ただ、扱うのがバイナリという特質上、 1F A5 09 82 AB 3C 2F FD.. のような16進数の羅列でファイル内を検索します

  • 検索 & 書換値の変動について
    バージョンが変わっても使いまわせる編集値はありますが、いつ使えなくなってもおかしくありません。
    ヒットしたと思っても全く関係ない箇所だったりする事もしょっちゅうありますので、 この辺りは必ず念頭においてください。

実際の書き換え値は 上記の バイナリ書き換え値まとめ一覧記事へのリンク で紹介中です

4. 書き換えた Chrome.dll をオリジナルの物と差し替える

あとはインストールフォルダにある Chrome.dll を、改造したChrome.dllで上書きすればOKです

※ 上書き前に GoogleChrome は予め全て終了させてください


創意工夫で、快適なブラウザソシャゲライフを、なのです!