-1

ExcelベースのPOSシステムを作成しました。海賊版から保護するために、マザーボードのシリアル番号を取得してワークシートのセルに保存するマクロを実行する [Activate] ボタンを配置しました。これは、クライアントのコンピューター (ライセンスを取得したマシン) にソフトウェアをインストールするときに 1 回実行します。

次に、コンピューターのマザーボードのシリアル番号を取得し、ライセンス取得済みのマシン用に以前に保存されたものと比較するイベント プロシージャを ThisWorkbook に記述しました。ソフトウェアがコピーされて別のマシンで使用された場合、もちろん一致するものはありません。ユーザーは、「プログラムを別のコンピューターにインストールしました。ライセンス版については、何とか連絡してください...」というメッセージで通知されます。ユーザーが [OK] ボタンをクリックすると、ワークブックが閉じます。プロジェクトは表示のためにロックされています。

したがって、ワークブックがライセンスを取得したコンピューターにロックされ、別のコンピューターでコピーされて使用されると、ユーザーはワークブックを開くことができなくなります。

ハッカーがセキュリティ手順をすり抜ける方法はありますか? もしそうなら、どうすればそれらを止めることができますか? 他の人が私のソフトウェアを海賊版にするのを防ぐために、他にどのような方法がありますか? ありがとう。

コードは次のとおりです。

Private Sub Workbook_Open()

Dim LicensedMachine As String

LicensedMachine = Sheet1.Range("Z102") ''This is where you have already stored licensed machine's motherboard s.n.

If MBSerialNumber <> LicensedMachine Then   ''Call function and check if current machine's motherboard s.n. matches the licensed machine's.
    MsgBox Title:="EXCEL POS", Prompt:="You have installed program in another computer." & vbCrLf & _
    "Contact R House at 0917-555-1234 or rjhouse@hotmail.com for licensed copy.", _
    Buttons:=vbExclamation
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If

End Sub
4

2 に答える 2

7

Excel の保護がいかにひどく壊れているかを示すために、次の実験を行ってください。

簡単なワークブックを作成し、モジュールを追加して、次のサブを入力します

Sub protectMe()
MsgBox "This should not be seen"
End Sub

モジュールをパスワードで保護し、名前を付けて保存してsecret.xlsm終了します。

「エクスプローラー」または「ファインダー」(OS によって異なります) から、ファイルの名前を変更します (拡張子を からsecret.xlsmに変更しますsecret.zip)。ファイルを開いてその内容を確認できます。はい、すべての Office ドキュメントの最新のファイル形式は、実際には zip ファイルです。

zip アーカイブ内にフォルダー構造があります。xlフォルダに移動すると、が表示されますvbaProject.bin。このファイルをテキスト エディターで開くと、ジャンクでいっぱいですが、コードのプレーン テキストも含まれていることがわかります。簡単なサンプルを次に示します。

�ˇˇ ���ê���@˛ˇˇˇˇˇ|ˇˇˇ�ˇˇ ���Ì���ˇˇˇˇ(���������������������ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇH�������������ˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ�@���¯&lt;sS�$�*�\�R�f�f�f�f�*�0�9�5�3�7�3�3�d�0�8��*�\�R�0�*�#�1�4�fl������������������������������������������������������������˛ ��"Å��������Å�"�:����Å������ˇˇˇˇ@���ñ������o�ˇˇp���∂��This should not be seen�A@�������ˇˇˇˇ@���ˇˇˇˇ0���ˇˇˇˇx������`���ˇˇˇˇ�������������������ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ��`∞�Attribut�e VB_Nam�e = "Mod�ule1"
Su�b protec�tMe()
Ms�gBox "Th�is shoul�d not be� seen"
End �h
�������������������rUÄ���Ä���Ä���Ä�����~|���������  ������� �����������������������°������Ñ���D���ƒ�ƒ:�hġh†ˇh¿ˇ∏����∆ˇ�¯‡ˇÏ‡ˇ"���Ú|ˇ≤�‡ˇ¿ˇ†ˇÄˇƒ��’�����Ñ�D�$������'�������������������������‡ˇ�¿ˇ�†ˇ�ġ�����π����������B�����R���������������������������������������������������������������������rUÄ�������Ä���Ä����������  ������ˇˇˇˇˇˇˇˇ��������$�Å���������`��˝ˇˇˇˇˇˇˇˇˇˇˇ���������������n�������������������������������Ãam���ˇ ��  ��'������������™*�\�H�{�0�0�0�2�0�4�E�F�-�0�0�0�0�-�0�0�0�0�-�C�0�0�0�-�0�0�0�0�0�0�0�0�0�0�4�6�}�#�6�.�0�#�9�#�M�a�c�i�n�t�o�s�h� �H�D�:�A�p�p�l�i�c�a�t�i�o�n�s�:�M�i�c�r�o�s�o�f�t� �O�f�f�i�c�e� �2�0�1�1�:�O�f�f�i�c�e�:�V�i�s�u�a�l� �B�a�s�i�c� �f�o�r� �A�p�p�l�i�c�a�t�i�o�n�s�.�f�r�a�m�e�w�o�r�k�:�V�e�r�s�i�o�n�s�:�1�4�:�R�e�s�o�u�r�c�e�s�:�V�B�A� �O�b�j�e�c�t� �L�i�b�r�a�r�y�#

そうです - あなたが実際にソフトウェアのセキュリティを気にしているなら、これは行くべき道ではありません...

興味深いことに、私が最初にこれを貼り付けたとき、疑問符はそこになく、コードはその日のように平易に読むことができました (書いているときにブラウザーに表示される回答のプレビューでも)。どうやら、入力の処理中および「最終」出力としてレンダリングされる前に表示された「隠し」文字がいくつかあったようです。それでも非常に読みやすいです。

于 2013-06-22T14:06:36.983 に答える