Ho lokolloa ha laebrari e tloaelehileng ea C Cosmopolitan 2.0, e etselitsoeng lifaele tse nkehang habonolo

Morero oa Cosmopolitan 2.0, o hlahisang laeborari e tloaelehileng ea C le sebopeho se ka sebelisoang ho aba mananeo ho pholletsa le litsamaiso tse fapaneng tsa ts'ebetso ntle le tlhoko ea bafetoleli kapa mechini ea sebele, o lokollotsoe. Ho kopanya le GCC le Clang ho fella ka faele e ka sebelisoang ho sebetsa ea bokahohle e hokahaneng ka mokhoa o sa fetoheng e ka sebetsang kabo efe kapa efe. Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD, esita le phihlello ea BIOS. Khoutu ea projeke e abuoa tlas'a laesense ea ISC (mofuta o nolofalitsoeng oa laesense ea MIT/BSD).

Setshelo sa ho theha difaele tse ka sebediswang ke bohle se itshetlehile hodima ho kopanya dikarolo le dihlooho (PE, ELF, MACHO, OPENBSD) tse ikgethang ho ditsamaiso tse fapaneng tsa tshebetso faeleng e le nngwe, ho kopanya dibopeho tse fapaneng tse sebediswang ho Unix, Windows и macOSHo netefatsa hore faele e le 'ngoe e ka phethisoang e ka qalisoa ka Windows 'me litsamaiso tsa Unix li sebelisa leqheka le amanang le ho kenya khoutu ea lifaele Windows PE e le sengoloa sa khetla, e nka monyetla ka ho hloka ha Thompson Shell letshwao la sengoloa la "#!". Ho theha mananeo a kenyeletsang difaele tse ngata (ho kopanya mehlodi yohle faeleng e le nngwe), faele e ka etswang e ka etswa e le polokelo ya ZIP e hlophisitsweng ka ho kgetheha. Sebopeho se sisintsweng (mohlala: tshebediso ya hello.com):

MZqFpD=' BIOS BOOT SECTOR' e etsa 7 $(taelo -v $0) printf '\177ELF...LINKER-ENCODED-FREEBSD-HEADER' >&7 exec "$0" "$@" exec qemu-x86_64 "$0" "$@" exit 1                                                                                                                tsoa] MACHO HEADERS...KOUTU LE DATA...ZIP DIRECTORY...

Qalong ea faele, ho bontšoa leiboleng "MZqFpD", le nkoang e le sehlooho sa sebopeho. Windows PE. Tatellano ena e boetse e aroloa ho ba taelo "pop %r10; jno 0x4a; jo 0x4a," le khoele "\177ELF" ho ba taelo "jg 0x47," tse sebelisetsoang ho fetisetsa moo ho kenoang teng. Litsamaisong tsa Unix, khoutu ea khetla e etsoa ho sebelisoa taelo ea exec, e fetisa khoutu e ka sebelisoang ka phaephe e sa boleloang ka lebitso. Moeli oa mokhoa o sisintsoeng ke hore o ka tsamaisoa feela lits'ebetsong tse kang tsa Unix tse sebelisang likhetla tse tšehetsang mokhoa oa ho lumellana le Thompson Shell.

Mohala oa qemu-x86_64 o fanoa bakeng sa ho nkeha ho eketsehileng, ho lumella khoutu e hlophisitsoeng bakeng sa meralo ea x86_64 hore e etsoe ka li-platform tseo e seng tsa x86, tse kang liboto tsa Raspberry Pi le lisebelisoa tsa Apple tse nang le li-processor tsa ARM. Morero o ka boela oa sebelisoa ho theha lisebelisoa tse ikemetseng tse tsamaeang ntle le mokhoa oa ho sebetsa (tšepe e se nang letho). Lits'ebetsong tse joalo, bootloader e hokelloa faeleng e ka phethisoang, mme lenaneo le sebetsa joalo ka sistimi e sebetsang ea bootable.

Laeborari ea C e tloaelehileng e ntlafalitsoeng ke projeke e fana ka mesebetsi ea 2024 (tokollo ea pele e ne e na le mesebetsi e ka bang 1400). Mabapi le ts'ebetso, Cosmopolitan e sebetsa kapele joalo ka glibc 'me e ka pele ho Musl le Newlib ka mokhoa o hlokomelehang, ho sa tsotelehe taba ea hore Cosmopolitan ke taelo ea boholo bo nyane ho feta glibc ka boholo ba khoutu mme e batla e lekana le Musl le Newlib. Ho ntlafatsa mesebetsi e atisang ho bitsoa joalo ka memcpy le strlen, mokhoa oa "trickle-down performance" o sebelisoa hape, moo ho tlamahanngoang ha macro ho sebelisoa ho bitsa ts'ebetso, moo moqapi a tsebisoang ka lirekoto tsa CPU tse amehang ts'ebetsong ea khoutu, e lumellang ho boloka lisebelisoa ha o ntse o boloka boemo ba CPU ka ho boloka lirekoto tse fetohang feela.

Har'a liphetoho tse hlahang tokollong e ncha:

  • Morero oa ho fihlella mehloli ea ka hare ka har'a faele ea zip o fetotsoe (ha ho buloa lifaele, litsela tse tloaelehileng tsa /zip/… joale li sebelisoa ho e-na le ho li fihlella ka sehlomathiso sa zip:..). Ka mokhoa o ts'oanang, bakeng sa ho fihlella li-disk ho Windows Bokhoni ba ho sebelisa litsela tse kang "/c/..." ho e-na le "C:/..." bo hlahisitsoe.
  • Ho hlahisitsoe setlamo se secha sa APE (Actually Portable Executable), se hlalosang sebopeho sa lifaele tse ka sebetsoang lefatšeng ka bophara. Sesebelisoa se secha se sebelisa mmap ho beha lenaneo mohopolong 'me ha se sa fetola litaba kapele. Haeba ho hlokahala, faele e sebetsang ea bokahohleng e ka fetoloa lifaele tse tloaelehileng tse sebetsang tse hokahaneng le sethala ka bomong.
  • Sethaleng Linux Bokhoni ba ho sebelisa module ea binfmt_misc kernel ho qala mananeo a APE bo se bo kentsoe tšebetsong. Ho hlokometsoe hore ho sebelisa binfmt_misc ke mokhoa o potlakileng ka ho fetisisa oa ho qala.
  • etsoe Linux Ho sisintswe ho kenngwa tshebetsong ha mehala ya sistimi ya pledge() le unveil() e ntshetsweng pele ke projeke ya OpenBSD. API e fanwa bakeng sa ho sebedisa mehala ena mananeong a C, C++, Python, le Redbean, hammoho le thuso ya pledge.com bakeng sa ho arola ditshebetso tse sa reroang.
  • The Landlock Make utility e sebelisetsoa ho kopanya - mofuta oa GNU Make ka tlhahlobo e thata ea ho itšetleha le ts'ebeliso ea mohala oa Landlock ho arola lenaneo ho sistimi eohle le ho ntlafatsa ts'ebetso ea caching. Bokhoni ba ho haha ​​​​ka GNU Make kamehla bo bolokiloe e le khetho.
  • Mesebetsi ea ho bala lintho tse ngata e kentsoe tšebetsong - _spawn() le _join(), e leng litlamo tsa lefats'e ho li-API tse ikhethileng lits'ebetsong tse fapaneng tsa ts'ebetso. Mosebetsi o ntse o tsoela pele ho kenya ts'ehetso bakeng sa POSIX Threads.
  • Bokhoni ba ho sebelisa _Thread_local keyword ho sebelisa per-thread Thread-Local Storage (TLS) bo se bo kentsoe. Ka nako e sa lekanyetsoang, nako ea ho sebetsa ea C e qala TLS bakeng sa khoele e kholo, e ekelitseng boholo ba faele e ka phethisoang ho tloha ho 12 ho isa ho 16 KB.
  • Ts'ehetso e ekelitsoeng bakeng sa liparamente tsa "--ftrace" le "--strace" ho ts'ebetsong ho hatisa tlhahisoleseling mabapi le mehala eohle ea ts'ebetso le mehala ea sistimi ho stderr.
  • Tšehetso e ekelitsoeng bakeng sa mohala oa sistimi oa closefrom(), e tšehetsoang ho Linux 5.9+, FreeBSD 8+ le OpenBSD.
  • Sethaleng Linux Tshebetso ya di-call tsa clock_gettime le gettimeofday e ekeditswe ho fihlela makgetlo a 10 ka ho sebedisa mokgwa wa vDSO (virtual dynamic shared object), o etsang hore ho kgonehe ho tsamaisa sesebediswa sa ho sebetsana le di-call tsa sistimi sebakeng sa mosebedisi le ho qoba diphetoho tsa moelelo.
  • Mesebetsi ea lipalo bakeng sa ho sebetsa ka linomoro tse rarahaneng e fetisitsoe ho tloha laebraring ea Musl. Mosebetsi oa mesebetsi e mengata ea lipalo o potlakisitsoe.
  • Ts'ebetso ea nointernet() e khothalelitsoe ho tima bokhoni ba marang-rang.
  • Mesebetsi e mecha e kenyelelitsoe bakeng sa ho kenya likhoele tse sebetsang hantle: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf, le vappendf.
  • E kentse mofuta o sirelelitsoeng oa lelapa la kprintf() la mesebetsi, e etselitsoeng ho sebetsa ka litokelo tse phahameng.
  • Tshebetso ea lits'ebetso e ntlafalitsoe haholo SSL, SHA, curve25519 le RSA.

Source: opennet.ru

Reka sebaka se tšepahalang sa libaka tse nang le ts'ireletso ea DDoS, li-server tsa VPS VDS 🔥 Reka sebaka se tšepahalang sa ho amohela webosaete ka tšireletso ea DDoS, li-server tsa VPS VDS | ProHoster