郭立 (leeguoo)

# 勤務中にこっそりWeChat、端末に移してdevツールに偽装する——その裏側の仕組み

オープンオフィスでは、蛍光グリーンのWeChatアイコンと画面いっぱいのチャット吹き出しが目立ちすぎます。画面上でWeChatをしているように見せない3つの方法:端末内で送受信する(復号DBの読み取り + バックグラウンド送信)、WeChat Appを開発ツールに偽装する(Info.plist/アイコンの差し替え + 外側の再署名)、ボスキーでワンタッチ非表示にする(グローバルホットキー + プロセスhide)。それぞれ、どう実現しているかまで説明します。

2026年6月30日 · 記事 · 公開

このページの目次

オープンな職場しょくばには、昔からある問題もんだいがある。こっそり息抜いきぬきでWeChatに返信へんしんしようとしても、あの蛍光けいこうグリーンのアイコン + 画面がめんいっぱいのチャットしは、3メートルはなれていてもすぐかる。ボスが背後はいごとおれば、ひと仕事しごとをしていないとばれてしまう。

wechat-use は、macOSのWeChatをローカルのコマンドラインツールにえるプロジェクトで、ついでにこのまずさも解決かいけつできる。3つの使つかえば、画面がめんうえではもうWeChatで会話かいわしているようにえない。以下では、それぞれの方法ほうほうについて、どう実現じつげんしているかまで説明せつめいする。

サボり三点セット

第一手:チャットを端末に移す

wechat-use chat は、端末たんまつなかにチャット画面がめんひらく。Claude CodeのようなTUIにていて、左側ひだりがわ会話かいわリスト、右側みぎがわにメッセージのながれ、した入力欄にゅうりょくらんがあり、文字もじってEnterをすと送信そうしんされる。

$ bash
wechat-use chat              # 会話リストに入り、上下で選ぶ
wechat-use chat 張三          # 特定の相手との会話に直接入る

どう実現しているか

このTUI(Rustのratatuiで描画びょうがしている)はWeChatの画面がめんにはれない。つないでいるのは、下層かそうにある3つのデータりゅうだ。

  • 過去のメッセージ:WeChatのチャット履歴りれきは、ローカルのSQLCipher暗号化あんごうかデータベースに保存ほぞんされている。アカウントの復号ふくごうkeyを取得しゅとくしたら、復号後ふくごうごのデータベースを直接ちょくせつむ。会話かいわリスト、履歴りれき検索けんさくはすべてSQLですので、WeChatクライアントがひらいているかどうかには関係かんけいない。
  • 新しいメッセージ:常駐じょうちゅうバックグラウンドプロセス(daemon)が、これらのデータベースファイルの変化へんか(FSEvents)を監視かんしする。データベースにまれると、あたらしいぎょう復号ふくごうしてTUIへながすので、端末たんまつなか受信じゅしんをリアルタイムにられる。
  • 送信:入力欄にゅうりょくらんでEnterをしたあと、メッセージはバックグラウンドで送信される——WeChatのウィンドウはず、マウスやキーボードの操作そうさうばわない。このバックグラウンド送信そうしん経路けいろが、WeChatに付着ふちゃくせず、データベースもこわさずにどううごくのかは、べつの記事:「デバッガを付ける」から「ゼロ付着」へいた。受信じゅしんした画像がぞうはTUIではまず[画像]として表示ひょうじされ、/imgったときだけシステム既定きてい画像がぞうビューアでひらく。

効果こうかとしては、同僚どうりょうとおりかかっても、えるのはくろ背景はいけいのウィンドウ、等幅とうはばフォントの文字もじあつまり、コマンドを実行じっこうしているようなひとだけだ。画面がめんにはWeChatらしさがまったくないので、自然しぜんとWeChatで会話かいわしているとはおもわれない。

第二手:WeChat App自体を偽装する

端末たんまつ関門かんもんえたとしても、まだ弱点じゃくてんがある。Dockのグリーンアイコン、Cmd-Tabでアプリをえたときにる「WeChat」、アクティビティモニタに堂々どうどう表示ひょうじされるWeChat。ちらっとられただけで見破みやぶられる。

$ bash
wechat-use disguise list      # 使える偽装スキンを見る
wechat-use disguise apply console   # WeChatをConsoleに変え、アイコンも端末風にする
wechat-use disguise status
wechat-use disguise restore   # ワンタッチで元の緑色WeChatに戻す

どう実現しているか

macOSじょうでは、Appの「身元みもと」はじつのところ、その.appパッケージにあるいくつかのものからている。Info.plistCFBundleName / CFBundleDisplayName(DockとCmd-Tabに表示ひょうじされる名前なまえ)、Resources.icnsアイコンファイルだ。これらをえると、システムからはべつのAppにえる。

ただし、けられない手順てじゅんがある。.appパッケージ内のどのファイルでも変更すると、元のコード署名は無効になる署名しょめいこわれると、Gatekeeperにめられたり、以前いぜん許可きょかしたアクセシビリティ / 画面収録がめんしゅうろくなどのTCC権限けんげん認識にんしきされなくなったりする。だからアイコンと名前なまええたあとは、この.appにもう一度いちどad-hoc署名しょめいをしないと、システムがみとめてくれない。

ここには重要じゅうよう境界きょうかいがあり、これも実際じっさいんだとしあなだ。再署名で触るのは.appの外側だけで、メッセージ送信を担う中核ライブラリには絶対に触れない理由りゆうは、送信そうしんがこのライブラリのバージョンをファイルハッシュ(SHA-256)で正確せいかく照合しょうごうし、対応たいおうするアダプタデータをむことに依存いぞんしているからだ。ひとたびそのバイトをえると、ハッシュがわり、一致いっちしなくなり、送信そうしんはそのまま失敗しっぱいする。最初さいしょ手間てまはぶこうとして、ついでにライブラリ内の配色はいしょくまでえたところ、sendがそのこわれた。つまり、そういうこわかたをする。だからdisguise設計せっけいは、外側そとがわはいくら偽装ぎそうしてもよいが、中核ちゅうかくは1バイトもうごかさない、というものだ。

第三手:ボスが本当に近づいてきたら、ワンタッチで隠す

まえの2つは「ちらっとる」ことへの対策たいさくだ。もしボスが直接ちょくせつつくえまえまでるなら、瞬時しゅんじかくすためのハードスイッチが必要ひつようになる。

$ bash
wechat-use disguise bosskey on    # グローバルショートカットを入れる

そのあと⌃⌥Space(Control + Option + 空白くうはく)をすと、WeChatは一瞬いっしゅんかくれる。ボスがったらもう一度いちどせば、もと状態じょうたいもどる。

どう実現しているか

ボスキーは、macOSのシステムレベルのグローバルホットキー使つかっている。常駐じょうちゅうするちいさなバックグラウンドプログラム(LaunchAgent)が、⌃⌥Spaceというわせをシステムに登録とうろくする。現在げんざいのフォーカスがどのAppにあっても、せばそれが捕捉ほそくされる。発火はっかすると、WeChatプロセスに非表示ひひょうじ動作どうさ(このAppをかくすのと同等どうとう)をおくり、もう一度いちどすと復帰ふっきする。システムレベルで登録とうろくしているので、端末たんまつ、ブラウザ、IDEのどこにいてもおなじようにく。

使い方 / 戻し方

この一式いっしきwechat-use v1.17.0にはいっている(GitHub)。インストールしてwechat-use init実行じっこうし、keyを抽出ちゅうしゅつすれば使つかえる。chatり + バックグラウンド送信そうしんで、disguiseはAppの外側そとがわだけをえ、チャットデータにはれない。disguise restoreでいつでもワンタッチでグリーンのWeChatにもどせる。

技術的ぎじゅつてきには、黒魔術くろまじゅつのようなものはない。復号ふくごうされたローカルデータベースをむ、.appのアイコンと名前なまええて再署名さいしょめいする、グローバルホットキーを登録とうろくする。この3つをわせると、画面がめんうえ正体しょうたいがばれないWeChatになる。勤務中きんむちゅう息抜いきぬきをするかどうかは、またべつはなしだ——もし本当にするなら、せめてあの蛍光けいこうグリーンに裏切うらぎられないように。

次の記事 →
微信にバックグラウンドでメッセージを送らせようとして、データベースを壊したことがある —— 「デバッガをアタッチ」から「ゼロアタッチ」へ

コメント

コメントは即時公開されますが、ポリシー違反時は非表示になる場合があります。

最大 1000 文字。