3

レガシーアクセス/VBAアプリケーションをC#で書き直しています。私はVBAプログラマーとして制限されていますが、コードは最小限にコンパイルされ、ほとんどスクリプトとして実行されているという印象を受けていますか?明らかに、セキュリティ/ VBAはありません。alt+f11を押すだけでソースコードを取得できます。このコードを逆コンパイル/取得するための良い方法はありますか?

だから私はこれを試しました: http://forums.databasejournal.com/showthread.php? t = 34222

これは、.mdbファイルを逆コンパイルする方法に関するもののようです。

ただし、プログラムはすぐに自分自身を再コンパイルしました-または少なくとも左下のステータスバーで自分自身を再コンパイルしていると言います。何か案は?

4

4 に答える 4

7

ここにいくつかの提案があります(そのうちのいくつかは私が上で行ったコメントから繰り返しています):

  • Alt-F11は、通常はイミディエイトWindowsに移動したいので、VBEを開く通常の方法ではありません。代わりに、Ctrl-Gを試してください。

  • Alt-F11とCtrl-Gの両方でVBEを開くことができない場合は、データベースのAllowBypassKeyプロパティがFalseに変更されている可能性があります。これを変更するコードを取得するには、AccessヘルプファイルでAllowBypassKeyを検索します(VBEで、ヘルプメニューから「AllowBypassKey」を検索します)。ただし、AllowBypassKeyがオフになっている場合、調査しようとしているデータベース内でコードを実行することはできないため、次のコードを実行できます。

//

  On Error GoTo Change_Err
    Dim db As DAO.Database
    Dim prp As Variant
    Const conPropNotFoundError = 3270

    Set db = DBEngine.OpenDatabase("C:\Databases\MyDatabase.mdb")
    db.Properties("AllowBypassProperty") = True

  exitRoutine:
    If Not (db Is Nothing) Then
       db.Close
       Set db = Nothing
    End If
    Exit Sub

  errHandler:
    If Err = conPropNotFoundError Then    ' Property not found.
       ' do nothing and exit
       Resume exitRoutine
    End If

次に、Shiftキーを押したときにデータベースを開くことができるはずです(これにより、VBEへのアクセスが遮断された可能性のある定義済みの起動ルーチンがバイパスされます)。

  • ファイルがMDEの場合、ソースコードはありません。このプロパティをチェックすることで、それがMDEであるかどうかを確認できます。

    ?CurrentDB.Properties( "MDE")

MDEの場合(ファイルには任意の拡張子を付けることができます)、これは「T」を返します。MDEでない場合は、エラーがスローされます(プロパティが存在しないため)。

  • 他に確認する必要があるのは、モジュールの数です。データベースを開いていて、イミディエイトウィンドウ(Ctrl-G)にアクセスできる場合は、モジュールがあるかどうかがわかります。

//

  ?CurrentProject.AllModules.Count
  • また、VBE(F2)でオブジェクトブラウザを開き、上部のドロップダウンでプロジェクト名を選択することで、データベースの内容を確認できる場合があります(デフォルトでは「」と表示されます)。

  • 最後に、Jet ULSで保護できると思うかもしれませんが、Access 2000以降では、利用可能なVBAプロジェクトにはパスワードしか存在しないため(つまり、Jet ULSではカバーされなくなったため)、それは大きな可能性ではありません。 。パスワードで保護されている場合は、どこかでパスワードの入力を求められるので、すでに知っていると思います。

于 2011-07-20T22:31:46.760 に答える
3

それが.mdeあなたなら運が悪いです。.mdbを作成するためにコンパイルされたソースVBAコードを含むものを入手する必要があります.mde

于 2011-07-20T01:38:15.620 に答える
1
  • ソースコード(.mdbファイル)の表示方法
    1. ファイルを選択します
    2. 「Shift」キーを押したままにします
    3. 次に、「Shift」キーを離さずにファイルをダブルクリックします
于 2017-09-15T13:24:42.797 に答える
0
  1. コンピューターのプログラムフォルダーに移動します。

  2. MSOfficeフォルダーを開きます

  3. MSAccess.exeに移動し、ショートカットを作成します。

  4. ショートカットをデータベースが存在する場所に移動します(作業が楽になり、データベースを逆コンパイルするためにこれを行う必要があります)。

  5. (オプション)ショートカットの名前を「データベースの逆コンパイラーの名前は....」のように変更します。これを開くと、コンパイルされたコードが吹き飛ばされることがわかります。

  6. ショートカットを右クリックして、そのプロパティを表示します。ショートカットのプロパティダイアログボックスの[ターゲット]フィールドに、「C:\ ProgramFiles \ MicrosoftOffice \ Office\MSACCESS.EXE」のようなものが表示されます。

  7. ターゲットフィールドで、パス名の末尾に右矢印を付けてスペースを入力し、引用符で囲んで、解凍するMS Accessファイルの場所のフルパス名を入力(または貼り付け)します(最も簡単な方法は、アドレスバーが表示されている場合は、ファイルが存在するウィンドウのアドレスバー)。

  8. 引き続き[ターゲット]フィールドにスペースを入力し、引用符なしで/decompileと入力します

  9. [OK]をクリックして変更を受け入れ、ダイアログボックスを閉じます。

  10. Shiftキーを押したまま、押し続けます。

  11. 耳をくねらせる

  12. ショートカットをダブルクリックします。

  13. データベース内の任意のモジュールに移動します。

于 2011-07-20T17:37:51.807 に答える