{"id":2806,"date":"2020-10-03T23:25:00","date_gmt":"2020-10-03T20:25:00","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2806"},"modified":"2024-12-16T22:32:26","modified_gmt":"2024-12-16T19:32:26","slug":"hello-world-x86_64-assembly","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2020\/10\/03\/hello-world-x86_64-assembly\/","title":{"rendered":"Assembleur Hello World x86_64"},"content":{"rendered":"<p>Dans cet article, je d\u00e9crirai le processus de configuration de l&#8217;EDI, en \u00e9crivant le premier Hello World en assembleur x86_64 pour le syst\u00e8me d&#8217;exploitation Ubuntu Linux.<br \/>Commen\u00e7ons par installer l&#8217;IDE SASM, l&#8217;assembleur nasm\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c SASM \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c Hello World:<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>\nsection .text\n\nmain:\n    mov rbp, rsp      ; for correct debugging\n    mov rax, 1        ; write(\n    mov rdi, 1        ;   STDOUT_FILENO,\n    mov rsi, msg      ;   \"Hello, world!\\n\",\n    mov rdx, msglen   ;   sizeof(\"Hello, world!\\n\")\n    syscall           ; );\n\n    mov rax, 60       ; exit(\n    mov rdi, 0        ;   EXIT_SUCCESS\n    syscall           ; );\n\nsection .rodata\n    msg: db \"Hello, world!\"\n    msglen: equ $-msg\n<\/code><\/pre>\n<\/div>\n<p>Code Hello World extrait du blog <a href=\"https:\/\/jameshfisher.com\/2018\/03\/10\/linux-assembly-hello-world\/\" target=\"_blank\" rel=\"noopener noreferrer\"> James Fisher<\/a>, adapt\u00e9 pour l'assemblage et le d\u00e9bogage dans SASM. La documentation SASM indique que le point d'entr\u00e9e doit \u00eatre une fonction nomm\u00e9e main, sinon le d\u00e9bogage et la compilation du code seront incorrects.<br \/>Qu'avons-nous fait dans ce code ? J'ai pass\u00e9 un appel syst\u00e8me &#8211; acc\u00e8s au noyau du syst\u00e8me d'exploitation Linux avec des arguments corrects dans les registres, un pointeur vers une cha\u00eene dans la section donn\u00e9es.<\/p>\n<h3>Sous une loupe<\/h3>\n<p>Regardons le code plus en d\u00e9tail\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>global &#8211; \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f &#8211; \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u044f\u0437\u044b\u043a\u043e\u0432 C\/C++. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b main \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u0430.<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>section &#8211; \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u0438 (\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b) \u043a\u043e\u0434\u0430. \u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b section \u0438\u043b\u0438 segment \u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b. \u0412 \u0441\u0435\u043a\u0446\u0438\u0438 .text \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u041e\u0431\u044c\u044f\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main. \u0412 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 (subroutine)<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u041f\u0435\u0440\u0432\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 mov &#8211; \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 1 \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 2. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 rbp \u0432 rsp. \u0418\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b SASM \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0412\u0438\u0434\u0438\u043c\u043e \u044d\u0442\u043e \u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 SASM \u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u043e\u043c gdb.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u0434\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 .rodata, \u0434\u0432\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 syscall, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 Hello World, \u0432\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c 0.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435 \u0447\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 rax, rdi, rsi, rdx, r10, r8, r9. \u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0435\u043c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u043e\u0432 syscall \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u0422\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u043e\u0432 \u043f\u0435\u0447\u0430\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u0412\u044b\u0437\u043e\u0432 exit \u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c 0:<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code><p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 asm\/unistd_64.h \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u043e\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 __NR_write \u2013 1, \u0434\u0430\u043b\u0435\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f write:<br \/>\nssize_t write(int fd, const void *buf, size_t count);<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 &#8211; \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440, \u0432\u0442\u043e\u0440\u043e\u0439 &#8211; \u0431\u0443\u0444\u0435\u0440 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0442\u0440\u0435\u0442\u0438\u0439 &#8211; \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440. \u0418\u0449\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430, \u0432 \u043c\u0430\u043d\u0443\u0430\u043b\u0435 \u043f\u043e stdout \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u0434 1. \u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 Hello World \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 .rodata &#8211; msg, \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442 &#8211; msglen, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b rax, rdi, rsi, rdx \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c syscall.<\/p>\n<p>\u041e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0438 \u0434\u043b\u0438\u043d\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u043d\u0443\u0430\u043b\u0435 nasm:<\/p>\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>msglen equ $-message<\/code><\/pre>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430?<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h3>\n<p><a href=\"https:\/\/github.com\/Dman95\/SASM\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Dman95\/SASM<\/a><br \/>\n<a href=\"https:\/\/www.nasm.us\/xdoc\/2.15.05\/html\/nasmdoc0.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.nasm.us\/xdoc\/2.15.05\/html\/nasmdoc0.html<\/a><br \/>\n<a href=\"http:\/\/acm.mipt.ru\/twiki\/bin\/view\/Asm\/HelloNasm\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/acm.mipt.ru\/twiki\/bin\/view\/Asm\/HelloNasm<\/a><br \/>\n<a href=\"https:\/\/jameshfisher.com\/2018\/03\/10\/linux-assembly-hello-world\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/jameshfisher.com\/2018\/03\/10\/linux-assembly-hello-world\/<\/a><br \/>\n<a href=\"http:\/\/www.ece.uah.edu\/~milenka\/cpe323-10S\/labs\/lab3.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ece.uah.edu\/~milenka\/cpe323-10S\/labs\/lab3.pdf<\/a><br \/>\n<a href=\"https:\/\/c9x.me\/x86\/html\/file_module_x86_id_176.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/c9x.me\/x86\/html\/file_module_x86_id_176.html<\/a><br \/>\n<a href=\"https:\/\/www.recurse.com\/blog\/7-understanding-c-by-learning-assembly\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.recurse.com\/blog\/7-understanding-c-by-learning-assembly<\/a><br \/>\n<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%BB%D0%BE%D0%B3_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%BB%D0%BE%D0%B3_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B<\/a><br \/>\n<a href=\"https:\/\/www.tutorialspoint.com\/assembly_programming\/assembly_basic_syntax.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.tutorialspoint.com\/assembly_programming\/assembly_basic_syntax.html<\/a><br \/>\n<a href=\"https:\/\/nekosecurity.com\/x86-64-assembly\/part-3-nasm-anatomy-syscall-passing-argument\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/nekosecurity.com\/x86-64-assembly\/part-3-nasm-anatomy-syscall-passing-argument<\/a><br \/>\n<a href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/syscall.2.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/man7.org\/linux\/man-pages\/man2\/syscall.2.html<\/a><br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Write_(system_call)\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Write_(system_call)<\/a><\/p>\n<h3>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/h3>\n<p><a href=\"https:\/\/gitlab.com\/demensdeum\/assembly-playground\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/gitlab.com\/demensdeum\/assembly-playground<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, je d\u00e9crirai le processus de configuration de l&#8217;EDI, en \u00e9crivant le premier Hello World en assembleur x86_64 pour le syst\u00e8me d&#8217;exploitation Ubuntu Linux.Commen\u00e7ons par installer l&#8217;IDE SASM, l&#8217;assembleur nasm\u00a0: \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c SASM \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c Hello World: section .text main: mov rbp, rsp ; for correct debugging mov rax, 1 ; write( mov<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2020\/10\/03\/hello-world-x86_64-assembly\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Assembleur Hello World x86_64&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[165,166,164],"class_list":["post-2806","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-asm","tag-assembly","tag-nasm","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=2806"}],"version-history":[{"count":25,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2806\/revisions"}],"predecessor-version":[{"id":3906,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2806\/revisions\/3906"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=2806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=2806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=2806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}