Luka w VB6
Bawiąc się Makro Asemblerem (MASM) chcąc nie chcąc nie chcąc musiałem
zainteresować się plikami RES. Do tej pory te pliki mnie zbytnio nie interesowały, ale
w MASMie pliki RES to podstawa. No i tak zaczołem się bawić tymi plikami, udało mi
się nawet napisać o tych plikach niezły artykuł (przeznaczony dla osób
programujących w MASMie) i postanowiłem, że sobie dodam pewien plik RES do projektu.
Plik ten zawierał zasób VersionInfo. Poniżej przedstawiam plik RC:
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "04150354"
{
VALUE "Comments", "**KOMENTARZ**"
VALUE "CompanyName", "Jelcyn"
VALUE "LegalCopyright", "Freeware"
VALUE "ProductName", "Sampel"
VALUE "FileVersion", "1.00"
VALUE "ProductVersion", "1.00"
VALUE "InternalName", "Sampel"
VALUE "OriginalFilename", "Sampel.exe"
VALUE "Compiler Name","Notepad ;-)"
VALUE "FileDescription","Testowy opis"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0415 0x0354
}
}
Niby nic szczególnego. Skompilowałem ten plik RC do pliku RES i dołączyłem go do
projektu napisanego w VB6. Ciekaw byłem, czy kompilując projekt, plik EXE będzie
zawierał opisy z pliku RES, czy z Project|Project properities. No i tak se kompiluje,
niby normalnie wygląda, że coś się kompiluje, dysk trzeszczy, progress bar z napisem
compile rusza się, nie wyskakuje rzadne błąd. Po skończonej kompilacji patrzę się do
katalogu z projektem a tam... nie ma pliku EXE !!! A VB zachowywał się, jak by
kompilował plik. Mało tego, u QKarola (tego, co pisał serię artykułów "Jak
działa Windows") jest to samo :-) Tak więc zauważyłem ciekawą lukę w VB,
dołączając odpowiedni plik RES, projekt nie chce się kompilować ;-) Jest to dobra
rzecz dla osób, które publikują w internecie źródła swoich programów i nie chcą,
aby były one wykorzystywane w celach komercyjnych ;-)
Jelcyn
zanotowane.pldoc.pisz.plpdf.pisz.plteen-mushing.xlx.pl