Byla vydána nová verze 1.2.0 grafického správce diskových oddílů GParted (GNOME Partition Editor) a také verze 1.2.0 živé distribuce GParted Live, která obsahuje tohoto správce a další nástroje pro zálohování či obnovu dat. Novinkou je především podpora souborového systému exFAT díky exfatprogs.
Google v příspěvku na svém blogu věnovaném open source oznámil, že uvolnil zdrojové kódy aplikace Tilt Brush (Wikipedie) pro 3D malování ve virtuální realitě. K dispozici jsou na GitHubu pod open source licencí Apache 2.0.
Svobodný šachový server Lila, pohánějící mj. populární Lichess.org, nově implementuje dlouho očekávaný Puzzle Storm, kde má hráč za úkol v omezeném čase vyřešit co nejvíce taktických úloh o postupně narůstající obtížnosti. Jedná se o konkurenci vůči Puzzle Rushi od komerčního Chess.com, kde je tato funkce zpoplatněna.
… více »Laboratoře CZ.NIC vydaly novou verzi 4.16.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Nově je pro překlad aplikace potřeba použít knihovnu libdatovka. Ta byla vydána ve verzi 0.1.0.
Brian Exelbierd, zástupce Red Hatu v představenstvu distribuce CentOS, poskytl rozhovor webu The Register. Ukončení vydávání CentOS jako sestavení RHEL vysvětluje tak, že Red Hat ho odmítl nadále sponzorovat. Dále hovoří o roli a omezeních nového bezplatného vydání RHEL.
Balíček s utilitou sudo byl vydán ve verzi 1.9.5p2. Řešena je bezpečnostní chyba CVE-2021-3156. Lokální uživatel může získat práva roota i když není uveden v souboru sudoers. Podrobnosti i s videoukázkou v příspěvku na blogu společnosti Qualys. Chyba byla do kódu sudo zanesena na konci července 2011 (commit 8255ed69). Týká se tedy verzí 1.8.2 až 1.8.31p2 a 1.9.0 až 1.9.5p1.
Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2020. Ke konci roku vlastnila 165 530 pevných disků. V průběhu roku jich přibylo 39 792. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, klesla na 0,93 %. V roce 2019 to bylo 1,89 %. V roce 2018 to bylo 1,25 %. V roce 2017 to bylo 1,77 %. V roce 2016 1,95 %.
Dle plánu byl vydán Mozilla Firefox 85.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Přibyla ochrana před supercookies. Odstraněna byla podpora Flashe. Řešeny jsou také bezpečnostní chyby. Nejnovější Firefox je již k dispozici také na Flathubu.
Byla vydána nová verze 4.15 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl aktualizován na verzi 10.0.9. Thunderbird byl aktualizován na verzi 78.6.0. Linux byl aktualizován na verzi 5.9.15.
Projekt Mozilly MDN Web Docs dokumentující webové standardy včetně jejich podpory v jednotlivých prohlížečích byl loňským propouštěním citelně zasažen. Poté, co se obsah MDN přesunul na GitHub, čímž se z určitého pohledu více otevřel pro přispívání z řad webových vývojářů, vznikla nová organizace Open Web Docs. Na Open Collective už má přes 60 finančních přispěvatelů a největší mezi nimi jsou Google, Microsoft a Coil. Dále se do projektu zapojuje samozřejmě Mozilla, Samsung a W3C [Mozilla.cz].
DIM a%(2) DEF SEG = VARSEG(a%(0)) FOR i% = 0 TO 2 READ d% POKE VARPTR(a%(0)) + i%, d% NEXT i% DATA 205, 5, 203 CALL ABSOLUTE(VARPTR(a%(0))) DEF SEG
Řešení dotazu:
Zapisovat můžeš pomocí funkce outb()
:
outb(0b00000001, addr);
Nebo si ukazatel mířící na dané místo v paměti přetypovat na datový typ, který chceš zapsat a pak normálně přiřadit pomocí =.
Cílem je kopírovat příklady z Dokumentace QBasicu poplatné reálnému režimu x86.
Ne že by ho jazyk C omezoval v zapisování do paměti. Ale skok na konkrétní adresu už problém bude. Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou. A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání. Nehledě na to, že volání BIOSu mu z uživatelského ringu opět fungovat nebude. Ale je docela možné, že tazatel stále používá DOS a jen vyměnil QBasic za C.
Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou. A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání. Nehledě na to, že volání BIOSu mu z uživatelského ringu opět fungovat nebude. Ale je docela možné, že tazatel stále používá DOS a jen vyměnil QBasic za C.Ak on mysli na skok na nejaku funkciu z adresa, da sa to. Zavolat funkciu cez smernik na funkciu. Ale nechod tak LOW ak nemusis a nechod az tak LOW ako pascal resp. assambler. Ano, ma pravdu, ze existuje nejake standart, ako sa predavaju data medzi OS a programom. A je to v C osetrene aj platformove veci - napr. big/little endian. Pokial sa bavime o OS s Linuxom. Ak to zariadenie nema OS. Tak volas funkcie alebo funkcie cez smernik na funkcie, pouzitie goto alebo inline assambler v C.
Ale skok na konkrétní adresu už problém bude. Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou.A pokud se bude chtít vrátit, tak bude muset vědět, co ten kód udělal, a jak po něm uklidit. Ale to mu neporadíme dokud nebudeme vědět o co se snaží. (pokud to má správnou konvenci tak teoreticky chce udělat to co dělá dlopen/dlsym, ne?)
A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání.AFAIK to jde třeba na Linuxu dost snadno vypnout (viz mprotect) a i takový non-executable stack se teprve nedávno řešil že by měl být všude defaultně zapnutý.
volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0300; *bootKeyPtr = 0x7777;Samozřejmě pokud je to na nějakém operačním systému a ne přímo bare-metal, tak jde o virtuální paměť, kterou tvému programu poskytl operační systém. Pokud chceš přímo zapisovat do fyzické paměti (například máš v paměti namapované nějaké zařízení, které se pomocí zápisů ovládá), musíš si (na Linuxu) zkompilovat podporu pro zařízení
/dev/mem
. Následně toto zařízení otevřeš, pomocí lseek dojedeš na danou pozici a pomocí read přečteš (případně je možné namapovat kousek tohoto souboru pomocí mmap do tvého virtuálního prostoru a zápisy jsou pak překládány jak by člověk čekal).
#include <stdlib.h> void int5() { asm volatile("int $5" : : : "memory"); } int main(int argc, char **argv) { int5(); return EXIT_SUCCESS; }
Tiskni
Sdílej: