概要
- レガシーなRPG II会計ソフト の動作に必要な ハードウェアドングル の解析記録
- Windows 98環境 で稼働する DOS版RPG IIコンパイラ の仕組み調査
- パラレルポート経由のコピーガード 実装の詳細分析
- バイナリパッチ によるプロテクト解除と自動化手順
- 歴史的価値のあるソフトウェア資産 の保存・公開計画
40年物RPG II会計ソフトとドングルの発見
- 友人の会計事務所 のレガシーシステム移行支援
- RPG(Report Program Generator) による会計ソフト利用実態
- IBM System/3~AS/400 で使われたRPGが MS-DOSに移植 された経緯
- Windows 98上のDOSコンソール で稼働する現役ソフト
- ソフト実行に パラレルポート用ハードウェアドングル 必須
ドングルの調査と企業の手がかり
- ドングルラベルに「 Stamford, CT」「 Software Security Inc」の記載
- SIGGRAPH 1990年代出展記録 や ソフトウェア保護関連特許 の存在
- 「 RUNTIME」との表記が意味するもの
ディスクイメージ取得と解析
- Windows 98 PCのディスクイメージ をエミュレータで再現
- RPG IIコンパイラ(Software West Inc製) の複数バージョン発見
- 会計ソフトの完全なRPGソースコード と DOSバッチによるメニュー構成
- IBMメインフレーム流の設計思想 が色濃く残るシステム
コピーガードの実態と逆アセンブル
- RPGコンパイラ自体がドングルチェックロジック を内包
- コンパイルされた実行ファイルにも 同じ保護ルーチン を自動挿入
- SEU.EXE 起動時にドングル未検出で即終了する挙動
- Reko による16ビット実行ファイルの逆アセンブル・デコンパイル
- in/out命令によるパラレルポート通信 の発見とコードセグメント分割
保護ルーチンの構造とバイパス
- BXレジスタに定数値を格納して終了 する単純なルーチン
- 入力値不要・出力値が常に一定 という仕様
- BX=7606h が“マジックナンバー”であることを ブルートフォース で特定
- 256通りを自動試行して正解値を発見
- 4バイトのバイナリパッチ でドングルチェックを完全回避
コンパイラ全体への影響と評価
- 全実行ファイルに共通のコピープロテクトロジック 採用
- パッチ済みコンパイラで生成した実行ファイル もプロテクト解除済み
- 極めて単純な保護機構 であり、容易にバイパス可能
- Software West Incによる設計の限界 と特許価値への疑問
今後の展望と呼びかけ
- RPG IIコンパイラ&ソースコードの歴史的保存・公開 準備
- PII削除後にアーカイブ化 を計画
- Software West Inc関係者への情報提供呼びかけ
要点まとめ
- パラレルポートドングルによるコピーガードは BX=7606h の返却のみを要求
- 4バイトパッチで全保護解除 が可能
- RPG II会計ソフト資産のデジタル保存・公開 に向けた第一歩