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