SmokingWOLF 2024/04/13 10:04

【ウディタ】セキュリティ向上作業、いったん完了!(Ver3.320公開!)

 この2週間も引き続きウディタのセキュリティアップデートのために費やしておりました! 1ヶ月近くもの時間をかけてしまったのでウディタ作業費は超大赤字ですが、セキュリティやデータ処理についてたくさんのお勉強ができたので人生ではプラスの期間でした。

 ひとまず最新版ウディタは一通り動作するようになったっぽいので、ウディタ公式にてVer3.320をアップしております! まだちょいちょいバグが残ってる匂いがするので、慎重な方はもう少し待ってからお試しください。

 【WOLF RPGエディター公式ページへ】



◆ウディタのセキュリティ向上、プレイヤーへの影響はある?

 ウディタに対してファイルを守るためのセキュリティ上の基本的な対策をいろいろ行ってみたのですが、その中でもプレイヤーの方にダイレクトに影響が出る可能性があるのは『DLLインジェクション』への対策です。
 『DLLインジェクション』とは簡単にいうと「本来そのプログラムが使わないDLLを注入して、強引にプログラムの処理を上書きする」手段で、応用すれば内部データを抜き取ったりするような悪いことにも使えます。

 そしてこれを対策したことによるプレイヤーの方への影響としては、『別アプリの内部データを使用したり処理を上書きするような個人制作ソフト』を使っている場合、Game.exeの起動時に以下のようなエラーが起きて起動できなくなる可能性が出てくるという点です。
 その場合、そのソフトを切ってゲームを起動していただく必要が出てきます。


 ↑正規の署名がないDLLが読み込まれたと出てゲームが停止! 企業製ソフトならたいてい正規の署名があるので大丈夫ですが、個人制作ソフトだと正規署名が付いてないことが多いです。お高いんですよね!

 なおこの「DLLインジェクション」技法は悪いことに使われるだけじゃなくて、「アクティブになってるウィンドウの上にかわいいマスコットキャラを表示する」みたいなソフトでも昔使われていました。
 たとえば「実行中のソフトのウィンドウ座標処理をDLLで乗っ取り、そこから座標情報を抜き取って表示する(+ 元の処理はそのまま再現する)」ことでウィンドウの上にキャラを乗せる処理を実現していたわけですね!

 最近はそんな処理をすると厳しめのウィルスソフトにバチバチに怒られたりする予感がしますので、2010年すぎからこういったソフトも段々なくなってしまった印象があります。
 「ウィンドウを追随してくれるようなデスクトップマスコット系アプリがなんで全然増えなくなったの!?」と私が思い始めた時期がその辺りでした。
 (たとえば私が使っている『ClockLauncher』というフリーソフトの2009年版ではアクティブウィンドウのそばにランチャーが自動的に移動する機能があり、普通にそこでDLLインジェクションが使われていたためか、最新Game.exeを実行できなくなりました(上の画像)。それゆえか、『ClockLauncher』の特定のバージョンからはその機能がなくなっています。このソフトは2となって今でも更新されてるみたいですね、すごい!)


 ちなみに、セキュリティソフト自体もGame.exeに『DLLインジェクション』することがありますが、それには正規の署名が入っているのでウディタ上でもエラーは起きないはずです。
 セキュリティソフトのDLLインジェクションは『勝手に元の処理を上書きして、怪しい処理が実行されてないかを監視する処理を加えている』わけですね! たぶん!

 おかげで今なら私も、どういった造りでそういったことを実現してるのか、ちょっとだけ分かるようになってきました。




◆セキュリティの難しさとか雑談とか

 ここからはこの3週間にあったとりとめのないお話です。

●安全性のチェックを頻繁に入れるほど重くなるのでパフォーマンスのバランス取りにすごい時間がかかった!
 → まず色んな処理の実行時間を検証するのにけっこう時間がかかりました。「軽い処理で先にチェックして変化を察知したら重い処理を行う」といった組み方を、かなり細かく作る必要がありました。


●新しい暗号化処理を作ったらうまく復号化できなくて地獄を見た!!
 → 当たり前ですが暗号化と復号化って1バイトだけ処理をシクっただけでデータがグチャグチャになるんですよ!
 ヤケクソでSuno AIさんにこんな歌( ↓ )を作ってもらったりしてました。作業用BGMとして。
https://twitter.com/WO_LF/status/1774406905655611489


●試行錯誤してたら部分的な処理速度が最初の28倍になって笑ってしまった。
 → ファイルを開く速度に影響するので、どうにか暗号化と復号化の速度を上げようといじってたら最終的に処理速度が最初の書き方の28倍くらいになって笑ってしまいました。
 最初の書き方は誰でも書きうるコードだったのに、そこからCPUが処理しやすいように崩していったら最終的にこれ! プログラミングの深さがヤバすぎますよ!
 ウディタVer3のときも、超がんばってVisual Studio2003からVisual Studio2022に環境を変えただけで部分的に速度10倍になったりして驚きましたが、そういった最適化を受けやすい造りでコーディングする効果の凄さに衝撃を受けました。これからはCPUに優しい組み方も考えなきゃ……。


●親がとうとう要介護4認定がでそうな状態になっててさらにしんどい!!
 → 前は要介護3認定だったんですがケアマネージャーさんに見てもらったらこれ要介護4かもって言われました。要するに大変です。
 でも空き時間がないわけじゃないので開催まで残り100日を切ったウディコンはなんとかがんばります!
 介護において「半端に動ける状態の方が恐い」という意味が理解できる段階になってきています。



おまけ ウディタ内でできるセキュリティ対策記事紹介

 K-Shin07さまが、ウディタのゲーム開発者側でできるセキュリティ対策の記事を書かれていたのでご紹介です!

【ウディタでのゲーム開発者が行えるセキュリティ対策】
 https://ci-en.net/creator/16060/article/1111345

 「チェックサムによる改ざん検知」「不正なゲーム実行を阻止」など、ゲーム内からでもできる実用的なテクニックが挙げられています!
 特に「チェックサム」は、オンライン要素があるゲームだと通信内容が改ざんされてありえないスコアが送信されたりしちゃうこともたまにあるので、そういった場合の防衛策としても有用です(他に、暗号化についても紹介されてます)


 ということで、今回のセキュリティアップデートはゲームデータのいくらかの防衛力アップには繋がると思いますので、気になってた方はよければぜひご利用ください。

 とはいっても完全な防御ができないのがこのセキュリティ業界。限界はありますのでその点はご了承ください。
 超有名AAA作品のゲームデータだってたぶん素晴らしい暗号技術が使われてるでしょうに、だいたい解凍されちゃってますしね。


 何はともあれ、ウディタ本体もまだもう少し様子見しないといけなさそうなのと、『ウディタ翻訳サポートツール』の方にも今回の修正を取り入れる必要があるので、もうしばらくプログラミングをがんばります!

 一通り片付いたら、1ヶ月ぶりに自分のゲーム開発が再開できます。がんばっていきます!

2件のチップが贈られています

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索