~/field-notes — leeguoo@misonote — zsh EN 中文 ● 日本語
❯ field-notes v3.4.1
leeguoo@misonote:/ja/posts/re-target-hardening-version-adaptation/ $ 記事

# macOS IM クライアントのアップグレードでリバースの難度が上がる理由

ホットアップデートと小バージョン更新では、リバースに必要な作業量が大きく異なる。ハードコードされた座標ではなく、呼び出しトポロジーや動的観察のような構造的な不変条件が重要になる。

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

このページの目次

同じ macOS IM クライアントでも、アップグレードのたびに、リバースのコストは少しずつ高くなる。これは「ホットアップデート」から「小バージョン」への段差だんさ記録きろくであり、何度なんど検証けんしょうされた経験けいけんでもある。バージョンをまたいで再利用さいりようできるのは、決してけっしてハードコードされた座標ざひょうではない。

2つのアップグレード、難度なんど一桁ひとけた違う

  • ホットアップデート:コードの位置いちだけを移しうつし関数本体かんすうほんたい変わらないかわらないまえのバージョンのアンカーを変位へんい合わせてあわせて全体平行移動ぜんたいへいこういどうすれば再利用さいりようできる。
  • 小バージョン関数本体かんすうほんたいを書き換えるかえる全体平行移動ぜんたいへいこういどうはすべて無効むこうになり、再度特定さいどとくていしなければならない。

同じ「アップグレード」でも、この2つではリバースの作業量さぎょうりょう一桁ひとけた違う。

key を取るとる段差だんさ最ももっともきゅう

初期しょきバージョンでは、復号ふくごう使うつかう key が識別しきべつできるかたちでプロセスのメモリに残されてのこされていた。そのため、多くの「読み取りよみとりだけ」のツールは、メモリをスキャンするだけで key を取得しゅとくできた。新しいバージョンはこのみち塞いだふさいだ——すべての「純粋じゅんすいなメモリスキャン」による key 取得方法しゅとくほうほうが、一斉いっせいにゼロへ戻されたもどされた

結論けつろんはとても明快めいかいだ。key 取得しゅとくは「静的せいてきなメモリスキャン」から「実行時じっこうじ動的観察どうてきかんさつ」へと追い込まれおいこまれ敷居しきい急激きゅうげき上がったあがった。この一刀いっとう切り落とされたきりおとされたのは、コミュニティで最大さいだい部類ぶるい属するぞくするツールだった。

関数本体かんすうほんたいが書き換えられてかえられても、どうやって見分けるみわけるのか?

呼び出し点よびだしてんのトポロジー」による。ある関数かんすうがどの子関数こかんすう呼び出してよびだしているか、そしてそれぞれの呼び出し点よびだしてん関数内かんすうないのどの相対位置そうたいいちにあるかは、関数本体かんすうほんたいそのものよりも、バージョンをまたいでずっと保守的ほしゅてき残るのこる

関数本体かんすうほんたい派手はでにすっかり変わってかわっていても、呼び出し点よびだしてん位置列いちれつが一つずつ対応たいおうできるなら、新バージョンでも同じ関数かんすうだと見分けられるみわけられる。これは「関数かんすうサイズで判定はんていする / オフセットで全体平行移動ぜんたいへいこういどうする」よりずっと安定あんていしている。後者こうしゃ関数本体かんすうほんたいの書き換えかえ遭うあう役に立たなくやくにたたなくなるが、前者ぜんしゃ呼び出し構造よびだしこうぞう残ってのこっているかぎり有効ゆうこうだ。

メタな教訓きょうくん

ハードコードされたアドレス、メモリじょうのリテラルに対するたいするスキャンは、どれも流砂りゅうさだ——つぎのバージョンで洗い流されてあらいながされてしまう。生き残れるいきのこれるのは、構造こうぞう不変条件ふへんじょうけん呼び出しよびだしトポロジー、命令めいれいパターン)と**動的観察どうてきかんさつ**だけだ。

ターゲットが強化きょうかされているなら、リバースも「座標ざひょう探すさがす」ことから「不変条件ふへんじょうけん探すさがす」ことへ進化しんかしなければならない。

← 前の記事
agent にクロスオリジン iframe をクリックさせる:chrome-use がこの難題を攻略
次の記事 →
WeChatのバージョンと競走する:あるローカルツールの適応史

コメント

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

最大 1000 文字。

    ⎇ main ● 0 errors · 0 warnings UTF-8 Markdown /ja/posts/re-target-hardening-version-adaptation/ © 2026 leeguoo