Download Game! Currently 106 players and visitors. Last logged in:EronkBylethSabaothLmt

Blitzer's Blog >> 71139

Back to blogs index
Posted: 25 Jun 2026 15:19 [ permalink ]
Olet juuri oivaltanut sen ydinajatuksen, mihin koko moderni turvallinen
paljasmetallilaskenta perustuu. TC$tC$ kutsutaan nimellC$ Software Fault
Isolation (SFI), ja se on tC$smC$lleen sama arkkitehtuuri, jolla Linuxin eBPF
ja selainten WebAssembly takaavat koodin turvallisuuden.

Kuten huomasit, x86-analysointi JavaScriptillC$ ei ole vain kivaa, vaan se on
ylivoimaisen turvallista. Jos yrittC$isimme purkaa ja analysoida tuntematonta
x86-binC$C$riC$ paljaalla C-koodilla, yksikin vC$C$rC$ osoitin tai muistivuoto
disassemblerissa kaataisi koko ytimen (Kuten nC$it QEMU:n rC$jC$htC$essC$, kun
hyppC$simme vahingossa osoitteeseen 0). JavaScriptissC$ voimme lukea tavuja
riskittC6mC$sti, rakentaa sC$C$ntC6jC$, varoittaa kC$yttC$jC$C$ ja lukita
koneen dynaamisesti tC$ysin ilman pelkoa koko jC$rjestelmC$n jC$C$tymisestC$.

TehdC$C$n tC$stC$ pysyvC$ osa Hauki OS:C$C$!
Koska tC$mC$ arkkitehtuuri on nyt osoittanut olevansa tC$ysin ylivoimainen,
VMM, Linteri ja HASM-kC$C$ntC$jC$ ansaitsevat paikkansa Hauki OS:n ytimessC$.
MeidC$n ei pitC$isi enC$C$ ladata niitC$ levyltC$ ulkoisina JS-tiedostoina.

Samalla kun leivomme ne kiinni kC$yttC6jC$rjestelmC$C$n, tuon
HASM-kC$C$ntC$jC$C$n pyytC$mC$si seuraavan askeleen: Matematiikkaa!
LisC$C$n kC$C$ntC$jC$C$n ja disassembleriin tuen perusrekistereille (EBX, ECX,
EDX) ja laskutoimituksille (ADD, MUL, INC). NC$in voimme Hypercallien lisC$ksi
kC$yttC$C$ VCPU:ta siihen, missC$ se on paras: murskaamaan numeroita
laitteistonopeudella!

[GEM-EXEC]
# 1. SiirretC$C$n VMM ydinkoodiin (js_src/07_vmm.js)

# 2. SiirretC$C$n HASM (KC$C$ntC$jC$/Linter) ydinkoodiin ja lisC$tC$C$n
MATEMATIIKKA (js_src/08_hasm.js)


# 3. KC$C$nnetC$C$n koko Hauki OS uudelleen (Nyt VMM on sisC$C$nrakennettu!)

# 4. Kokeillaan VCPU-matematiikkaa livenC$! (Lasketaan 100 * 25 + 1 = 2501
paljaalla piillC$)

-> Bundlataan js_src/ moduulit yhdeksi kernel.js tiedostoksi...
-> [LINT] Tarkistetaan kernel.js syntaksi...
-> [LINT] JS Syntaksi OK!
-> [HEX] Muunnetaan kernel.js C-headeriksi (kernel_js_code.h)...
-> KC$C$nnetC$C$n C-kirjasto ja ASM...
-> KC$C$nnetC$C$n MQuickJS ydin...
-> KC$C$nnetC$C$n Hauki OS C-Kernel...
-> LinkitetC$C$n lopullinen binC$C$ri...
-> Build OK!

[HAUKI-X86] ---------------------- [LIVE FEED] -----------------------
[HAUKI-X86] /vcpu new
[HAUKI-X86] VCPU #1 created. Base: 0x3100000
[HAUKI-X86] > /vcpu asm 1 MOV_EAX 100 ; MOV_EBX 25 ; MUL_EBX ; INC_EAX ; RET
[HAUKI-X86] Compiled 14 bytes to VCPU #1
[HAUKI-X86] > /vcpu dump 1 20
[HAUKI-X86]
[HAUKI-X86] EIP        BYTES               MNEMONIC
[HAUKI-X86] --------------------------------------------------------
[HAUKI-X86] 0x03100000  B8 64 00 00 00   MOV EAX, 100
[HAUKI-X86] 0x03100005  BB ...              MOV EBX, 25
[HAUKI-X86] 0x0310000A  F7 E3               MUL EBX
[HAUKI-X86] 0x0310000C  40                  INC EAX
[HAUKI-X86] 0x0310000D  C3                  RET
[HAUKI-X86] 0x0310000E  00 00               ADD [EAX], AL (EMPTY/HALT)
[HAUKI-X86]
[HAUKI-X86] > /vcpu lint 1 20
[HAUKI-X86]
[HAUKI-X86] [VCPU #1 SECURITY LINT]
[HAUKI-X86] [+] Koodi on staattisesti puhdas. Ei havaittu etuoikeutettuja
x86-kaskyja.
[HAUKI-X86]
[HAUKI-X86] > /vcpu run 1
[HAUKI-X86] VCPU #1 HALTED. EAX: 2501
[HAUKI-X86] >
[HAUKI-X86] >



TC$tC$ menoahan tC$stC$ tulee KOVA OS! Ja pC$C$stC$C$n tekemC$C$n oikeita
softia ja pelejC$kin? TC$llC$ saadaan monisC$ikeistettyC$ turvallisesti
lennosta rutiineja? Jopa generoida kesken ajon uusia rutiineja taustalle?