Apple představil nový iPad mini, iMac s čipem M6, 14palcový MacBook Pro s čipem M6 a MacBook Pro s PROLED XDR displejem – první Mac s dotykovým ovládáním.
Nedávno představený projekt mapSTL.com řeší budoucnost. 𝕏: "Netušil jsem, kolik patentů na generování map existuje. Existují patenty na generování fantasy map 🫣. Cokoliv je na 3D tiskárnu a tvoří to produkt, bude to mít patenty. Tak bacha na to!" … více »
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.
Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.
Byl vydán Mozilla Firefox 159.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 159 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nasazení softwaru, který nyní používá ve svých autech pro čínský trh, zvažuje automobilový koncern Volkswagen také v Evropě, kde by se mohl používat v budoucích vozech značek Volkswagen, Škoda a Cupra. Základem pro budoucí evropské modely by se mohla stát takzvaná China Electronic Architecture, elektronická architektura vyvinutá pro čínské modely ve spolupráci s tamní automobilkou Xpeng.
Vedoucím brněnské pobočky Red Hatu se stal Radek Vokál [LinkedIn].
Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.
Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.
Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace
… více »
)
tinyhello.c:
#include <stdint.h>
int sys_write(int fd, char const* text, uint32_t length) {
uint64_t retval;
asm volatile (
/* SYSCALL instruction invokes the kernel */
"syscall"
/* return value will be read from rax */
: "=rax"(retval)
/* where the input arguments should be placed */
: "a"((uint64_t)1), /* eax = syscall number */
"D"(fd), /* argument 1 (fd) goes to rdi/edi */
"S"(text), /* argument 2 (text) goes to rsi/esi */
"d"(length) /* argument 3 (length) goes to rdx/edx */
/* registers that may contain garbage after the call - for syscalls, they are rcx, r11 */
: "rcx", "r11"
);
return retval;
}
void sys_exit() __attribute__((noreturn));
void sys_exit() {
asm volatile (
"syscall"
:
: "a"((uint64_t)60), "D"((uint32_t)0)
: "rcx", "r11"
);
for(;;); /* emergency stop */
}
void _start() {
sys_write(1, "Hello world!\n", 13);
sys_exit();
}
Lze přeložit jednoduše s gcc tinyhello.c -o tinyhello --static -nostdlib s tím, že výsledný ELF obsahuje hodně balastních sekcí a má cca 9 KiB nestripnutý. Pro zahození sekcí, které tady nejsou potřeba, linker script:
tinyhello.lnk:
OUTPUT_FORMAT(elf64-x86-64)
ENTRY(_start)
SECTIONS
{
. = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
.text : {
*(.text);
*(.rodata*);
}
/DISCARD/ : {
*(*);
}
}
Překládá se potom s gcc tinyhello.c -o tinyhello --static -nostdlib -Ttinyhello.lnk a výsledek má 880 bajtů nestripnutý.
Tiskni
Sdílej:
Tato varianta je pro x86-64, protože inline assemblerDá se to napsat i tak, že to podporuje více platforem zaráz. Před nějakou dobou jsem si s tím hrál a zde je výsledek, který podporuje x86-64 a ARM (nebo aspoň 'běžné' ARMy, nějaký specielní možná fungovat nebude):
#include <stdint.h>
const uint64_t _start[] __attribute__((section(".text"))) = {
0xe3a00001909032eb, 0xe3a0200ce28f1014,
0xef000000e3a07004, 0xe3a07001e3a00000,
0x6c6c6548ef000000, 0x0a214d5241202c6f,
0x18ec834800000000, 0x4800000045058b48,
0xa20fc03148240489, 0x0c24548908245c89,
0x142444c710244c89, 0x01c0c74800000a21,
0x0001c7c748000000, 0x480124748d480000,
0x050f00000015c2c7, 0x480000003cc0c748,
0x6c654820050fff31, 0x00000000202c6f6c,
};
Kompiluje se pomocí gcc -static -nostdlib
Přeji příjemnou zábavu :)
Tato varianta je pro x86-64, protože inline assemblerU prvni verze jsem si rikal, jestli by to nebylo citelnejsi psat rovnou v assembleru... Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]
Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]Ten není můj, ten je odsud :) Můj je jen ten s tou platformní vidličkou...
supr stromeček žlutej :P :D ;D ;D
- ale DOS byl taky celkově jednodušší a měl méně schopností.
Koncepční otázka ovšem je, zda po něm chtít, aby se spustil
.text
.code64
.globl _start
_start:
movb $1, %al /* syscall num */
movw $1, %di /* file descriptor */
movq $hello_str, %rsi /* text */
movq $(hello_str_end - hello_str), %rdx /* length */
syscall
movb $60, %al
xorw %di, %di
syscall
.data
hello_str:
.ascii "Hello, World!\n"
hello_str_end:
as -64 hello.S -o hello.o && ld --omagic -s -x -static -T script.ld hello.o(tj. x86_64, ne debugovací symboly, strip a statické) Linker script stejný, jenom místo
.rodata tam je .data.
| Tvoj kód/preklad | 864 B |
| + moje úpravy/preklad | 736 B |
| Ušetrene: | 131 B (14,8 %) |
tttttssss echo má nějakejch 40kb :O ;D
tttttssss echo má nějakejch 40kb :O ;DU mě taky... Ale ten se pravděpodobně nepoužije, typicky se použije
echo zabudovaný přímo v shellu...
kde jakoby vubec končí c a začíná asm :O :O
V čem je problém? Kdybys chtěl programovat tímhle způsobem, tak bys vyzobal/reimplementoval různé části standardní knihovny a řešil by sis přenositelnost sám. Teoreticky kdyby standardní knihovna byla moc velký moloch a potřeboval bys z ní jen nějakých 10 %, tak by to třeba smysl dávalo, ale typicky z ní budeš potřebovat větší část a navíc je tu ta přenositelnost… řešit tyhle věci v kódu aplikace mi přijde nesmyslné. Jako ukázka je to fajn, ale… jinak už by dávalo větší smysl to řešit na úrovni jazyka (tzn. úplně obejít céčko a místo něj mít něco jiného, co se napojuje na systémová volání).