NoName - zin o wszystkim

Jak zidentyfikowaµ jΩzyk cz.3

Je┐eli kogo£ ten temat nudzi, to go uspokojΩ - wiΩcej artyku│≤w raczej nie bΩdzie :)
A je£li kogo£ to obchodzi to zapraszam do lektury. Zajmiemy niedocenianym elementem Windowsa, czyli Szybkim podgl╣dem.
NarzΩdzie to w zasadzie s│u┐y do podgl╣du dokument≤w, ale nie znam nikogo, kto by go u┐ywa│ w ten spos≤b :) Nas interesuje inny jego aspekt - u┐ywanie Szybkiego pdgl╣du na plikach EXE. Oczywi£cie nie bΩdziemy mieli wgl╣du w kod ƒr≤d│owy programu, ale uzyskamy wiele cennych informacji o nim.
Kliknij wiΩc prawym przyciskiem na dowolny plik EXE i wybierz z menu Szybki podgl╣d.

Pierwsze dwie linie pliku tekstu, kt≤ry zobaczysz, wygl╣daj╣ tak:

PLIK WYKONYWALNY DLA WINDOWS
32-bitowy dla Windows 95 i Windows NT


Je┐eli zobaczysz, ┐e jest to program 16-bitowy, to zostaw go - opisane ni┐ej metody nie nadaj╣ siΩ do takich aplikacji.
Interesuje nas sekcja Nag│≤wek pliku obrazu, a dok│adnie jej ostatnia pozycja Charakterystyka. Szukajmy tam dw≤ch linii tej tre£ci:

Niskie bajty maszyny s╣ zarezerwowane.
Wysokie bajty maszyny s╣ zarezerwowane.


Je£li ich brak, to jest program napisany w VB. Dla pewno£ci skocz jeszcze na koniec tekstu i sprawdƒ pozycjΩ Wymagana pamiΩµ. Je┐eli jest tam 2K (a nie 1K), to mamy pewno£µ (dobitny przyk│ad, ┐e programy w VB s╣ pamiΩcio┐erne :))
Je┐eli natomiast linie te s╣ obecne, to znaczy, ┐e program nie jest w VB :) (odkrywcze, no nie? :) W takim razie zerkamy do £rodka tekstu. Je┐eli obecna jest sekcja Tabela importu, zawieraj╣ca odwo│ania do r≤┐nych bibliotek (KERNEL32.DLL, USER32.DLL itp.) wraz z nazwami funkcji API (najczΩ£ciej: CopyFileA, ExitProccess, ShellExecuteA i inne popularne), to jest to program w C++. Je┐eli ich brak, to najprawdopodobniej jest to program napisany w Delphi.
Zapewne zapytacie, czemu piszΩ tylko o tych trzech jΩzykach. No c≤┐, skromnie licz╣c, dziewiΩµdziesi╣t kilka procent program≤w jest napisanych w jednych z nich, z czego ponad po│owa w C++. I jeszcze jedna uwaga odnosnie w│a£nie C++: jest kilka £rodowisk s│u┐╣cych do programowania w│a£nie w tym jΩzyku, jednak nie da siΩ ze skompilowanego pliku odczytaµ, jakie zosta│o u┐yte. W przypadku pozosta│ych jΩzyk≤w wszystko jest od razu jasne, bo tylko Borland Delphi u┐ywa Object Pascala, a VB obiektowego wariantu jΩzyka BASIC.
Je┐eli macie jakie£ poprawki, uwagi, to piszcie.



Karol Kuczmarski
qkarol@go2.pl
http://www.qkarol.prv.pl
ICQ (UIN): 69629311