--=GAMER=-- писал(а):Вопрос: как запихнуть все эти ресурсы внутрь vb проекта (что бы на выходе получился один лишь exe файл) , и как их использовать/подгружать по мере надобности.
--=GAMER=-- писал(а):Была идея резать один большой джипег или бмп, на нужные части, ну и хранить его md5)
В итоге ресурсы обошлись "дешевле" )
Денис писал(а):А, допустим, если имеется много графики, то вся эта графика пихается в ресурсы dll. Потом эта dll присоединяется поздним связыванием (даже с возможностью выбора из комбобокса). А уж эту dll можно хоть хэш хранить, хоть цифровой подписью подписать. И тут мы вплотную подходим к явлению скинов.
Andrey Fedorov писал(а):А скинам какая разница откуда берутся рисунки - из отдельных файлов, базы или dll/exe? Причем отдельные файлы в данном случае зачастую удобней - юзер может создавать свои...
SLIM писал(а):Ну, или, взять и объединить все файлы в один непрерывный, да еще и закодировать. Тогда пользователь даже если и будет править что-то, то точно не будет знать что именно - цифры, буквы в текстовике никому не интересны.
--=GAMER=-- писал(а):Постановка задачи была такой)
Что на выходе единственный exe файл) (Максимум разрешенного - рантаймы)
Ну уж если и отредактируют, то заменить exe проблемы не составит)
msgbox ("Нарушена целостность приложения!", vbCritical, "Приложение")
unload me
end
Денис писал(а):Пересчитываем хэши всех ресурсов, в функции, достающей и возвращающей объект из ресурсов параметром передаем хэш. Например, так:
Option Explicit
Dim TmpBuffer() As Byte
Private Function SecureLoadResData(ResID As Variant, ResType As Variant, ResHash As String) As Variant
'Dim TmpBuffer() As Byte
Dim TmpHash As String
Dim cMD5 As MD5Hash
Set cMD5 = New MD5Hash
'TmpBuffer = LoadResData(ResID, ResType)
TmpHash = cMD5.HashBytes(TmpBuffer)
Set cMD5 = Nothing
If TmpHash = ResHash Then
SecureLoadResData = TmpBuffer
Debug.Print "Done!"
Else
MsgBox "Нарушение целостности приложения!", vbCritical, "Приложение"
Debug.Print TmpHash
End If
End Function
Private Sub Command1_Click()
SecureLoadResData 1, 1, "68A8514FE71BBFCF5B6F33145F146CB6"
End Sub
Private Sub Form_Load()
'Randomize
Dim i As Integer
ReDim TmpBuffer(1000)
For i = 0 To 1000
TmpBuffer(i) = Int(Rnd * 255)
Next
End Sub
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 62