「40年にわたるコピー保護ドングルを打ち破る」

2026/02/02 6:30

「40年にわたるコピー保護ドングルを打ち破る」

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

著者は、2026年のWindows 98会計事務所で使用されていたSoftware West社の1990年代製RPG IIコンパイラが、並列ポート用ハードウェアコピー保護ドングルを必要としていることを発見しました。

RPGC.EXE
とそのエディタ
SEU.EXE
は両方ともドングルの有無を確認します。ドングルがない場合、SEUは数秒後に「No dongle, no edit.」というメッセージで終了します。
アセンブルコードを見ると、セグメント0800内に0x90バイトのルーチンがあり、並列ポートへのIN/OUTを行い、定数値(
BX
、ここでは
BH=76h
)を返しています。このルーチンを
MOV BX, 7606h
(バイト列
BB 06 76 CB
)に書き換えるとドングルチェックが回避され、SEUは即座に終了します。
全てのコンパイラ実行ファイルには同一のコピー保護ロジックが含まれているため、この4バイトのパッチを適用すると、ハードウェアなしでコンパイラがパッチ済み出力バイナリを生成できるようになります。保護は単に定数番号を検証するだけであり、容易に破棄可能です。個人データを削除すれば、このコンパイラは無料の歴史的アーティファクトとして公開されます。

本文

正解です――この小さな装置が、私と最近ソフトウェア考古学の探査で発掘したさらに古いプログラムを動かすために必要だったものです。

少し背景をお話すると、私は最近友人の会計事務所が四十年もの間使ってきた極めてレガシーなソフトウェアパッケージから離れさせる手助けをしていました。そのソフトはRPG(「Report Program Generator」)で作られており、COBOLよりも古く、IBMのミッドレンジコンピュータ――System/3、System/32、そしてAS/400 まで使用されていました。後にMS‑DOSへ移植され、同じツールがパーソナルコンピュータ上で動作できるようになったため、ここまで来ました。

会計事務所は実際には Windows 98 コンピュータ(2026年にも関わらず)を使い、DOS のコンソールウィンドウ内で RPG ソフトウェアを走らせていました。このソフトを動かすためには、コンピュータの並列ポートに特殊なハードウェアコピー保護ドングルを接続する必要がありました――当時は「エンタープライズ」ベンダーが無許可使用から自社製品を守る一般的手法でした。

ドングルのラベルに書かれた文字の大部分は摩耗してしまっているものの、いくつか手掛かりが残っています:

  • 「Stamford, CT」の文字
  • 会社名「Software Security Inc.」と思しきロゴ(この企業の唯一の証拠は1990年代初頭にSIGGRAPHで展示した記録とソフトウェア保護に関する複数の特許)
  • 「RUNTIME」と読める文字

まず最初に取った行動は、Windows 98 PC のディスクイメージを作成し、それをエミュレータ上で実行して実際にソフトが何をしているか確認することでした。ハードウェアドングルはすべての会計ツールで必須で、接続されていないと動きません。

さらにディスクイメージを調査した結果、以下のような手掛かりを発見しました:

  • RPG II コンパイラ(素晴らしい!)が Software West Inc. によって作成
  • 1990年代に Software West がリリースした RPG II コンパイラの2つのバージョン
  • 会計ソフトウェア全体のソースコード(RPG で書かれた複数モジュール)と、DOS バッチファイルがそれらをメニューシステムにまとめている。作者は IBM メインフレームプログラマであり、そのスキルを DOS に持ち込もうとしていたようです。

コンパイラを試してみると、これもハードウェアドングルを必要としていました。何かコードをコンパイルすると、同じコピー保護ロジックが生成された実行ファイルに注入されており――これがドングル上の「RUNTIME」という文字の由来です。

コンパイラは複数の実行可能ファイルから構成され、特に RPGC.EXE(コンパイラ)と SEU.EXE(ソースエディタ)が含まれます。SEU をドングル無しで起動すると、並列ポートへの通信を試みて一時停止し、その後エラーで終了します。このことからプログラムが並列ポートの I/O を試みていることが分かります。

これら古典的な実行ファイルを逆アセンブルするには Reko が非常に便利です。16‑ビットリアルモードコードを理解し、読みやすい C コードへデコンパイルできます。ただし、このケースでは一小さなセグメントのデコンパイルに失敗しました。

逆アセンブリを調べると、0800h と 0809h の2つのセグメントがありました。0809h セグメントには大部分のコードが含まれていましたが、0800h セグメントは IN/OUT 命令で並列ポート経由でコピー保護チェックを行う短いルーチン(約 0x90 バイト)でした。

このルーチンは自己完結型で FAR CALL により呼び出され、RETF で戻ります。機能は次の通りです:

  1. BIOS データ領域から並列ポートのアドレスを検知し、複数ある場合は LPT1 を使用
  2. データレジスタに書き込み、ステータスレジスタを読み取り、応答を BH と BL に蓄積
  3. BX(BH + BL)で結果を返す。入力レジスタやスタック値は読まず、出力は定数です。

この情報をもとにルーチンの先頭4バイトをパッチしました:

BB 34 12   MOV BX,1234h
CB         RETF

プログラムはまだ「No dongle, no edit」と失敗しますが、これで数秒後ではなく直ちに失敗するようになり、ルーチンが回避されたことを示しています。

さらに調べると BH は常に 0x76 に終わるため、BX は 0x76xx の形になります。DosBox で実行可能ファイルをスクリプト化し BL を 0–255 までブルートフォースして出力を確認した結果、正しい値は 6(=0x06)でした。つまり魔法の数値は 0x7606 です:

BB 06 76   MOV BX,7606h
CB         RETF

コンパイラスイート内の他の実行ファイルも同じルーチンを持っています。RPGC.EXE がコードをコンパイルするとき、このルーチンが生成されたプログラムにコピーされます。したがって、コンパイラのルーチンをパッチすれば自動的に全ての生成バイナリが修正されるわけです。

このコピー保護メカニズムは驚くほど単純で――ハードウェアドングルが定数値を返し、4 バイトのパッチで回避可能です。Software West Inc. が本当に頑丈に設計したつもりだったのか、それとも単なる見落としだったのかは不明です。

RPG II コンパイラは並列ポートドングル不要になりました。ディレクトリから PII を削除し、他にはオンラインで入手できないこのコンパイラを計算機史のアーカイブとして公開する予定です。Software West Inc. に関わった方がいればぜひご連絡ください――質問がたくさんあります!

同じ日のほかのニュース

一覧に戻る →

2026/02/02 4:47

RCE をクリックすると、Moltbot のデータやキーが盗まれます。

## Japanese Translation: --- ## 要約 OpenClaw(旧 Moltbot/ClawdBot)は、10万人以上の開発者に信頼されているオープンソースAIパーソナルアシスタントであり、1クリックだけで攻撃者が完全な管理権限を取得できる重大なロジック欠陥があります。 この攻撃は3段階で進行します: 1. **取り込み** – 悪意あるURLに `gatewayUrl` クエリパラメータが含まれます。 2. **接続** – OpenClaw は即座に `connectGateway()` を呼び出し、攻撃者制御のゲートウェイへ WebSocket 接続を開きます。 3. **トークン流出** – authToken が自動的に WebSocket ハンドシェイクで送信されます。OpenClaw は Origin ヘッダーを検証しないため、localhost 接続でも(Cross‑Site WebSocket Hijacking)です。 盗まれたトークンは `operator.admin` と `operator.approvals` を付与し、攻撃者は以下のことが可能になります: - `exec.approvals.set` で安全プロンプトを無効化 - `config.patch` をパッチして `tools.exec.host` を “gateway” に設定し、コンテナ化された実行を回避 - 任意のコマンドを実行(例:`node.invoke` → `system.run`) この欠陥は v2026.1.24‑1 以前のすべての OpenClaw バージョンで利用可能です。 *depthfirst General Security Intelligence* と別の研究者により独立して発見され、GitHub Advisory を通じて公開されています。 **対策:** 近日リリース予定のパッチではゲートウェイURL用の確認ダイアログを追加し、自動接続機能を削除します。ユーザーは直ちにアップグレードし、漏洩の可能性があるトークンをローテーションし、疑わしいゲートウェイ活動を監視してローカルシステム乗っ取り・データ侵害・妨害行為を防止してください。

2026/02/02 2:36

Apple I 広告(1976年)

## Japanese Translation: Apple Computerの新しいマイクロコンピュータは、単一ボードに収まり、$666.66で販売されるコンパクトなオールインワン「ハッスルフリー」システムです。MOS 6502プロセッサ、16個の4 Kチップから構成された8 KダイナミックRAM、960文字を24×40で表示し自動スクロールが可能な統合ビデオターミナル(RFモジュレータ経由でテレビに接続できる)と独自の1 Kビデオメモリを使用しています。ユニットには内蔵電源が備わっており、大容量28アンペアの電源、スイッチ、LEDは不要です。大型テレタイプ機械と比べてサイズ・コスト・保守性を削減し、出力速度は6倍に速く、Apple BASICがタープレートにプリロードされており、オプションソフトウェアもほぼ無料または無償で提供されます。予定されたアップグレードとしては、32 KオンボードRAMオプションのため16 Kチップへの切替とエッジコネクタを介した65 Kまでの拡張があり、キャセットインターフェースは縦型コネクタに接続し1500 bpsでデータ転送(約20秒で4 Kバイトの読み書き)を行います。ファームウェアはPROMに格納されており、16進入力・デバッグ・画面上直接印刷が可能です。Apple Computerは既に主要コンピュータストアで在庫があり、小売業者や販売代理店はホビイストや小規模事業者へ手頃で保守不要なコンピュータを簡単に供給できます。

2026/02/01 22:56

**アドベンチャーゲーム・スタジオ** *冒険ゲームを制作するための OSS ソフトウェア。*

## Japanese Translation: Adventure Game Studio(AGS)は、誰でもグラフィカルなポイント&クリック冒険ゲームを作成できる無料のオープンソースソフトウェアです。Windows上でスタンドアロンIDEとして動作し、画像のインポート、スクリプト作成、およびテスト用の統合ツールが提供されます。AGSで構築されたゲームはLinux、iOS、Androidへデプロイできます。このエンジンはすべてのスキルレベルの開発者をサポートし、フォーラム(「初心者技術質問」「冒険関連トーク&チャット」「ザ・ランプス・ルーム」)、Facebookページ、Discordサーバー、およびローカルミートアップで支援を提供する活発なコミュニティに裏付けられています。ユーザーはAGSウェブサイトにプロジェクトをアップロードして公開できます。 最近のタイトルには「Brainrot!」(2026年2月1日)、 「Nothmere」(2026年1月31日)、「If On A Winter's Night, Four Travelers」(8番目のAGS賞受賞者)および「Technobabylon」(9番目のAGS賞受賞者)が含まれます。コミュニティはボランティアによって維持され、サーバーとフォーラムの費用を個人の資金で賄い、サービスを無料に保っています。PayPalで寄付が受け付けられており、サーバーコストをカバーした後、残余収益はミッテンズなどのコミュニティイベントへ再投資されます。