Top / .NET備忘録 / 99.小ネタ / 04.難読化

これは、とある市販コンポーネントを逆コンパイルした画面です。
当然のことながら、難読化してあり、意味不明なクラスがたくさん存在しています。

その中に困ったものがあります。

Obfuscation.gif

internal なクラスですが、名前が「vb」

悪いことに、このクラスはルート名前空間に存在しています。

「悪いこと」と書きましたが、何が問題かというと、VB6.0 のソースをアップグレードウイザードでアップグレードすると、Left ステートメント等、フォームのプロパティと、かぶってしまうような機能を使っていると、

  Imports VB = Microsoft.VisualBasic

という一文が挿入され、「Left」 は、「VB.Left」に置き換わります。

変換前

 Option Explicit
 Private Sub Form_Load()
     Text1.Text = Left("hoge", 1)
 End Sub

変換後

 Option Strict Off
 Option Explicit On
 Imports VB = Microsoft.VisualBasic
 Friend Class Form1
     Inherits System.Windows.Forms.Form
 
     Private Sub Form1_Load(ByVal eventSender As System.Object, _
              ByVal eventArgs As System.EventArgs) Handles MyBase.Load
         Text1.Text = VB.Left("hoge", 1)
     End Sub
 End Class

これがコンパイルエラーになってしまいます。

  Imports MSVB = Microsoft.VisualBasic

とかにしてしまえば問題ないのですが、msvb というクラスが再度作られるかもしれず、先行き不安な感じです。

そもそもルート名前空間にあるのがとても気に入りません。
自作のクラス名とかぶってしまったら、修正を余儀なくされてしまいます。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-08-05 (月) 00:28:16 (1472d)