初めまして。十夜と申します。
VBでオーディオプレーヤを作成しておりまして、再配布防止の為にMACアドレスを認証Keyにしています。
Player.exeの初期はMACアドレスが"XXXXXXXXXXXX"。
これを別ExeにてバイナリモードでOpenして同じファイル名で書込をし、
アドレスを書き換える際に、
j = 19325
For k = 0 To 11
Put #FreeFile, j, MAC_ADD(k)
J = j + 2
Next
としています。jに代入している値はPlayer.exeをバイナリエディタで開いて、"XXXXXXXXXXXX"を見つけて、そのアドレスを10進数になおしています。
MAC_ADD(k)は画面で入力された値を1文字づつ格納している配列です。
これだとPlayer.exeに変更がある度に"XXXXXXXXXXXX"のアドレスが、
変わってしまうので、直接アドレスを指定するのではなく、"XXXXXXXXXXXX"
を検索して、先頭のアドレスを取得するようには出来ないでしょうか?
何卒ご教授の程、宜しく御願い致します。
めんどくさがらずに一つずつ比べればいいだけでは。
Dim n, m
Dim b() As Byte
Dim c() As Byte
Dim Fno As Integer
Dim MacAdd As Long 'Macアドレスの書かれた番地
Dim Flg As Boolean
s = "123456789ABC" '探すMACアドレス
ReDim c(Len(s) * 2)
For n = 1 To Len(s) * 2 Step 2
'一つ飛びにセット
c(n) = Asc(Mid(s, (n + 1) / 2, 1))
Next n
FileName = "project1.exe"
ReDim b(FileLen(FileName))
Fno = FreeFile
Open FileName For Binary As #Fno
Get #Fno, , b
Close #Fno
For n = 1 To UBound(b) - UBound(c)
For m = 1 To UBound(c) Step 2
'全て一致ならTrueで抜ける
Flg = False
If b(n + m) = c(m) Then
Flg = True
Else
Exit For
End If
Next
If Flg = True Then
'全て一致アドレス発見
MacAdd = n + 1
Exit For
End If
Next
もう少し良いアルゴリズムが有りそうだけど。。。
ねろさん、返信が遅くなり申し訳ありません。
バイトでいつもこんな時間なので・・・。
御陰様で解決いたしました。本当にありがとうございます。
>もう少し良いアルゴリズムが有りそうだけど。。。
ねろさんのプログラムを参考に自分の力でいろいろやってみようと
思います。