Czy EXE zawsze można zastąpić COM?

53

Zapowiedź

Nasze oprogramowanie antywirusowe nie pozwoliło mi skopiować pliku EXE do mojego folderu startowego systemu Windows 7 (na przykład calc.exe), ponieważ jest to plik EXE

Zmieniłem więc nazwę na plik COM, a następnie skopiowałem go i pozwoliłem (bardzo profesjonalnie).

I oczywiście - calc.comdziała.

Co skłoniło mnie do pytania (tylko z ciekawości):

Pytanie

Kiedy program EXE nie uruchomi się po zmianie nazwy na COM? Prawie każdy plik exe, który sprawdziłem, działał.

Chciałbym poznać elementy wewnętrzne, dlaczego i dlaczego nie.

Royi Namir
źródło
42
Nie kopiuj plików do folderu Autostart - zamiast tego twórz skróty.
gronostaj
4
Tak, jest to możliwe, ale jak powiedziałem, zainteresowani wewnętrzni, ja. Nie głupie AV. :-)
Royi Namir,
11
Możesz także zmienić nazwę na .scr (wygaszacz ekranu) i będzie działać.
pjc50,
2
To nie jest głupie AV (oprócz tego, że plik z rozszerzeniem com nadal może być interpretowany jako plik PE). Nie należy umieszczać plików wykonywalnych w miejscach, w których można je łatwo zapisać - najlepiej, aby administrator (z tokenem administratora) mógł zapisywać w tym samym katalogu, w którym znajdują się pliki wykonywalne. Używaj skrótów :)
Luaan,
1
@Luaan Nie rozumiem, jak wykluczanie plików EXE i zezwalanie na skróty podczas uruchamiania jest w jakiś sposób bezpieczniejsze niż zezwalanie zarówno na pliki EXE, jak i skróty. Wydaje się porównywalny do mnie.
jrw32982,

Odpowiedzi:

10

Ma to związek z wewnętrznym formatem pliku. Pierwotnie pliki .com były prostymi obrazami pamięci, a pliki .exe miały z nimi wiele nagłówków. W rezultacie nie można zmienić ich nazw. W miarę upływu czasu i musieli sprawić, by rzeczy były kompatybilne wstecz, Microsoft zmienił go, aby system operacyjny spojrzał na sam plik, aby ustalić, jaki to typ pliku zamiast rozszerzenia. W rezultacie po uruchomieniu pliku o zmienionej nazwie system Windows całkowicie ignoruje rozszerzenie. Zobacz poniższe linki, aby uzyskać bardziej szczegółowe wyjaśnienie.

Podobne pytanie

Wyjaśnienie blogu Microsoft

Math Man
źródło
1
Ojej. Kto jeszcze o tym pomyślał? ... UNIX / Linux.
Joe
1
@ Joe Każdy system, który wyrósł organicznie, tak. Pliki COM istniały na długo przed przenośnymi plikami wykonywalnymi i przez długi czas były całkowicie w porządku.
Luaan,
@Luaan Oczywiście masz rację. Tworzyłem / używałem plików com na CP / M (gdzie 64k pamięci RAM nigdy nie było dla mnie problemem). Jest to po prostu interesujące, gdy jeden system operacyjny kopiuje coś z innego, z którego można to zrobić od samego początku - szczególnie, gdy tak długo dyskredytują to.
Joe,
@Joe Będąc fanem Linuksa, podoba mi się sposób, w jaki używa właściwości zamiast rozszerzeń.
Math Man
Losowe faktoidy, ale rzeczywiste pliki .COM (MS-DOS i oryginalny CP / M) były ograniczone do rozmiaru jednego segmentu (64 kb), ponieważ obraz został po prostu bezpośrednio skopiowany do segmentu i wykonany. Im więcej wiesz, itp ...
0x90h