Pull to refresh

Comments 8

Напомнило байку о том, что Майкрософт выпустила Виндовс 10 после 8.1, потому что Виндовс 9 некоторые программы могли принять за 9х и не запуститься.

Адаптация операционной системы под вирус, это сильно))

В статье о компьютере МС1502 сказано, что у него нестандартный контроллер дисковода, отчего некоторые вирусы не работают, это преподносилось как преимущество.
я не помню где и когда, но уже читал эту историю очень давно, причём нормальную техническую статью, там даже детальный разбор этого бага был

сейчас топ результатов поиска показывает эту статью, но вот нашёл кое-что: www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war

Ещё раньше, 2000-ый год: https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii-chicken-and-egg-problems/

Jon Ross, who wrote the original version of SimCity for Windows 3.x, told me that he accidentally left a bug in SimCity where he read memory that he had just freed. Yep. It worked fine on Windows 3.x, because the memory never went anywhere. Here’s the amazing part: On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away.

К слову сказать были и попытки обратного эффекта - second party разработчики имели доступ напрямую к разработчикам winapi и без труда могли спросить "а как тут".

Более конкретный пример - Fury3, Microsoft Hellbender и Monster truck madness до сих пор работают на windows 10. За исключением пары косяков тут и там. Все потому что игры были полностью win32api compliant.

А вот шайтан коробки по типу The Nations вообще не работают. Даже с эмуляторами directx.

А почему сам патч не добавили в статью?


; sudeepb 11-May-1994
;
; This hackcheck is for simcity. Simcity does a GlobalSize on GDI.EXE and
; USER.EXE to figure out how much free resources are available. WOW's USER
; GDI have pretty small DGROUP, hence the size returns fails the check of
; this app. So we need to fake a bigger size.
;

cProc HackCheck,<PUBLIC,NEAR>
    parmW   handle
cBegin]
    push    es
    SetKernelDS es
    ; first check in the TDB that the currently running app is SCW.
    mov     ax,curtdb
    mov     es,ax
    xor     ax,ax
    cmp     word ptr es:[0f2h],4353h    ; SC (mod name in TDB at f2 offset)
    jne     hc5
    cmp     word ptr es:[0f4h],0057h    ; W
    jne     hc5

    ; Its SCW. Now get the module table for the given handle and check if its
    ; for USER.EXE and GDI.EXE
    cCall   GetExePtr,<handle>
    or      ax,ax
    jz      hc5
    mov     ds,ax
    mov     si,ds:[ne_pfileinfo]
    lea     dx,[si].opFile          ; DS:DX -> path
    cCall   WowCheckUserGdi,<ds,dx> ; Much easier to check this in 32bit land.
hc5:
    pop     es
cEnd
Sign up to leave a comment.

Other news