Jak zidentyfikowaµ jΩzyk cz.2
Powracam do tematu z mojego poprzedniego artyku│u, a wiΩc jak zidentyfikowaµ jΩzyk,
w kt≤rym program zosta│ napisany. Ca│kiem niedawno odkry│em w swoim katalogu WINDOWS
folder APPLOG. Zwr≤ci│ moj╣ uwagΩ, bo by│ to folder ukryty (paradoks, nie? ;)).
Wewn╣trz znalaz│em mn≤stwo plik≤w z rozszerzeniem LGC i znajomo brzmi╣cych nazwach.
Domy£lam siΩ, ┐e s╣ to pliki generowane przez system z zapisem czynno£ci program≤w.
Otworzy│em pierwszy z brzegu plik BRIX.LGC (dotycz╣cy gry BriX, sk╣din╣d ca│kiem
niez│ej). Plik by│ dosyµ du┐y, wiΩc Notatnik nie podo│a│ - trzeba by│o u┐yµ
WordPada. Jego zawarto£ci╣ by│o kilka tysiΩcy linii nastΩpuj╣cej struktury: najpierw
ci╣gi liczb i liter, p≤ƒniej ewentualnie nazwa pliku ze £cie┐k╣. O ile o znaczeniu
liczb mogΩ tylko snuµ domys│y, o tyle funkcja nazw plik≤w sta│a siΩ od razu
oczywista: s╣ to pliki u┐ywane przez dany program! Wszystkie pliki! Mo┐na je podzieliµ
na parΩ grup:
1. Plik wykonywalny, zwykle na samym pocz╣tku
2. Biblioteki uruchomieniowe - to nas interesuje najbardziej, o nich
nieco dalej
3. Pliki otwarte przez program - choµby poprzez instrukcje Open (VB),
fopen (C++), tak┐e LoadPicture czy ReadFile (API); zar≤wno dokumenty, jak i np. pliki
INI
4. Inne aplikacje uruchamiane przez program - poprzez np. instrukcje
Shell (VB), ShellExecute (API) itp. W logu aplikacji wywo│uj╣cej jest tylko informacja o
tym, dzia│anie programu wywo│anego jest zapisywane w oddzielnym logu
5. Pliki systemowe - bardzo r≤┐ne, od czΩ£ci j╣dra systemu
(KERNEL32.DLL, SHELL32.DLL) poprzez kontrolki OCX, inne biblioteki DLL (np. te od DirectX)
a┐ do czcionek czy nawet dƒwiΩk≤w systemowych!
Nas oczywi£cie interesuje najbardziej punkt 2. Na podstawie znalezionych odwo│a± do
bibliotek mo┐na zidentyfikowaµ jΩzyk programu.
- MSVBM60.DLL odpowiada Visual Basicowi
- BWCC.DLL i BWCC32.DLL odpowiadaja produktom Borlanda (Delphi, C++, C++ Builder)
- MFCxx.DLL i MSVCRT.DLL to Microsoft Visual C++
- KNP.INI to jedyny £lad wskazuj╣cy, ┐e dany program zosta│ stworzony w Klik &
Play (choµ wymagane biblioteki to KNPS.DLL i KNPG.DLL!)
- CNCS32.DLL £wiadczy o uzyciu programu The Games Factory
Uwaga, liczy siΩ to, co wystΩpuje jako pierwsze! Programy w VB czΩsto maj╣ w swoich logach nazwy MFC42.DLL i MSVCRT.DLL, ale wystΩpuje przed nimi MSVBM60.DLL. Je┐eli log zawiera tylko pierwsze dwa pliki, program jest MS Visual C++!
Programy DOSowe nie zostawiaj╣ tak widocznych £lad≤w - w ich plikach LGC nie znajdziemy raczej u┐ytecznych informacji o ich pochodzeniu. Programy w asemblerze plik≤w LGC w og≤le nie tworz╣ i to mo┐e je zdradziµ.
Pliki LGC s╣ te┐ u┐yteczne dla tw≤rc≤w program≤w, gdy┐ umo┐liwiaj╣ wgl╣d w ich czynno£ci i otwierane pliki.
To tyle. Je┐eli macie jakie£ uwagi, informacje o znaczeniu tych liczb w plikach LGC (wg mnie s╣ to zapisy mniejsc pamiΩci, z kt≤rych korzysta│ program i rozkaz≤w procesora), piszcie.
Karol Kuczmarski
qkarol@go2.pl
http://www.qkarol.prv.pl
ICQ (UIN): 69629311