7

フォーム、モジュール、およびクラス モジュール間で VBA コードを難読化できるツールの推奨事項は何ですか?

私は少し調査を行い、アーカイブでここを読みましたが、しばらく何も言及されていないので、これらの推奨事項は時代遅れである可能性があると思いました.

他の場所での読書からピックアップされたいくつかは次のとおりです。

  • CrunchCode
  • Obfu-VBA

また、間違っている場合は修正してください。私の理解では、難読化ツールの単純化されたロジックは次のとおりです。

  • 定義されたロジックを使用して VBA コードをスクランブルする (X を Y に変更)
  • このツールは、VBA コードがすべてスクランブルされた新しいワークブックを作成しますが、それ以外はすべて同じままです。
  • ツールは、定義されたロジックを使用して元の VBA コードに戻すことができます (Y を X に変更)。

あれは正しいですか?「定義済みロジック」を選択する際、何を調べる必要がありますか? 以前にも CrunchCode をいじってみましたが、たくさんのオプションがありましたが、それらはすべて私にとってなじみのないものでした。

助けてくれてありがとう:)

4

5 に答える 5

4

CrunchCode を購入しましたが、64 ビット システムをサポートしていないことに注意してください。サポートは本当に悪いです (数週間にわたってメールの返信がありません)。文字列暗号化機能は、復号化された文字列が元の文字列と同じではないため、すべての文字列比較と MsgBoxes を台無しにします。この製品を避けることをお勧めします!

于 2015-07-04T04:18:07.583 に答える
3

私の以前の回答は十分に調査されておらず、他の誰も回答していないため、より良い回答に値すると思いました. CrunchCode をテストしたところ、次の手法で難読化されているようです。

  • 名前の変更

一番の難読化手法は、すべてのセマンティクスを取り除き、コンテキストが推測される可能性を減らすことです。これは、慣れていないとコードが何をするのかを判断するのが非常に困難だったアセンブリ コードの時代によくある問題でした。

大文字と小文字の間隔が狭いと、非常に読みにくくなります。

  • コメントの削除

上記のように、これにより、コードの理解が推測される可能性がなくなります。

  • 代用

演算子のオーバーロード (ユーザー定義関数の使用による) は便利なテクニックです。これは VBA で行うことができます。私はインタビュー中に次のような質問を受けたことを常に覚えています。

サブ 1: x = z + y
サブ 2: x = y + z

サブ 2 はサブ 1 よりも時間がかかることが証明されています。これはなぜですか?

10 人のインタビュー対象者のうち、オペレーターの過負荷を推測したのは私だけでした。コードが想定されている方法とはまったく異なる動作をすることができます。加算記号は、減算、除算、またはその他の任意の数の組み合わせにすることができます。この基本的な部分がコードで変更されると、ソース コードを理解するのが非常に難しくなります。

  • エクストラ

追加の手順として、多くの冗長なメソッドをソース コードに追加したくなるでしょう。基本的に、条件が true であることに基づいて無意味なコードを実行するコードの断片。この条件は決して真ではありませんが、コードが読みにくいため、これを理解するのは困難です。

基本的に、これは私がここ数年読んだすべてのコーディング標準とは正反対のように機能します。コードをより読みやすくするために開発者として行うべきすべてのこと (結局のところ、マシンのためだけでなく、他の開発者のためにコードを書く必要があります。誰も理解できない場合は、そのメソッドを1行に減らすことができますそれ?)。

警告: 誰かがあなたのソース コードを盗むのを確実に阻止する方法はありません。私は、オープン ソース プロジェクトのコンパイル済みバージョンを自分のものとして販売していたために、オープン ソース プロジェクトをやめた人を知っています。これは、開発者向けの機能の 1 つにすぎません。難読化はある程度は効果がありますが、決心した開発者がそれを盗むのを 100% 阻止できる保証はありません。コードのリバース エンジニアリングにかかる​​時間)。

これがお役に立てば幸いです - 詳細については、こちらの YouTube ビデオをご覧ください(非常に不吉な音楽が流れています)。

于 2014-10-13T10:09:03.020 に答える