-
Faire la mise-à-jour du système
Le but ici est d'enchaîner l'exécution des commandes freebsd-update -F fetch et freebsd-update -F install silencieusement et d'afficher la chaîne "- le système est à jour" à la fin :
Créer le programme update_system.asm :section .data
message3 db "- système à jour", 10, 0
message3_len equ $ - message3
command db '/bin/sh', 0
arg1 db '-c', 0
arg2_1 db 'freebsd-update -F fetch >/dev/null 2>&1 && freebsd-update -F install >/dev/null 2>&1', 0
argv dq command, arg1, arg2_1, 0
envp dq 0
section .text
global _start
_start:
; Exécuter les commandes freebsd-update
mov rdi, command
mov rsi, argv
call execute_command
; Afficher le message final
mov rax, 4
mov rdi, 1
lea rsi, [message3]
mov rdx, message3_len
syscall
; Terminer le programme
mov rax, 1
xor rdi, rdi
syscall
execute_command:
; Sauvegarder les arguments sur la pile
push rdi
push rsi
; Créer un nouveau processus
mov rax, 2
syscall
; Vérifier si nous sommes dans le processus parent ou enfant
test rax, rax
jz child_process
; Processus parent, attendre que le processus enfant termine
mov rdi, rax
xor rsi, rsi
xor rdx, rdx
mov rax, 7
syscall
; Restaurer les arguments et retourner
pop rsi
pop rdi
ret
child_process:
; Restaurer les arguments
pop rsi
pop rdi
; Exécuter la commande dans le processus enfant
mov rax, 59
lea rdx, [envp]
syscall
; Si execve échoue, sortir avec un code d'erreur
mov rax, 1
mov rdi, 1
syscall- Assembler
nasm -f elf64 update_system.asm -o update_system.o
- Linker
ld update_system.o -o update_system
- Lancer le programme
./update_system
Tags : update, system, mise-à-jour, freebsd-update
-
Commentaires