🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
🔧 AI Nachrichten ChatGPT automatically logged out [Fix](12.09.2026 um 17:09 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
🪟 Windows TippsServertimeout in Outlook über 10 Minuten verlängern(12.09.2026 um 15:10 Uhr)
🔧 AI Nachrichten Stealing AI Reasoning Traces(08.09.2026 um 12:20 Uhr)
🔧 AI Nachrichten AIs as Modern Genies(08.09.2026 um 19:12 Uhr)
🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
🔧 AI Nachrichten ChatGPT automatically logged out [Fix](12.09.2026 um 17:09 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
🪟 Windows TippsServertimeout in Outlook über 10 Minuten verlängern(12.09.2026 um 15:10 Uhr)
🔧 AI Nachrichten Stealing AI Reasoning Traces(08.09.2026 um 12:20 Uhr)
🔧 AI Nachrichten AIs as Modern Genies(08.09.2026 um 19:12 Uhr)

🐧 Linux Tipps 🕛 vor 2 Jahren 9 Min Lesezeit
0

.ELF atoi_base hand made

↗ Quelle (reddit.com)
🗣️ Stimme:
📺
reddit.com

Hey, I tried to understand a bit about ELF, but in the end ended up just learning about elf header, and elf program header, but I found it cool that you could code inside it and ended up doing atoi_base

CODE
ELF>’Ä@@8@’’Ä™™ Hello World! Error: usage is ./program <number> <base> ∏øHæÖÄ∫*∏<H1ˇ∏I«¿I«¡Hã<$HɡuæHãt$HãFHâHãFHˇ∆Iˇ¡Ä>uıHãFøHÉÏà$∏HâÊ∫HɃI«¿Iˇ¿∏øHæxÄ∫M9»u›Iɢv$Î[Error: Base must be bigger than 1 ∏øHæbÅ∫"∏<H1ˇError: Invalid base Hãt$Ä>t?HâHˇ¿Ä8t DäD:tÎÓHˇ∆η∏øHæ©Å∫∏<H1ˇHãt$Ä>+t—Ä>-tÃÄ> t«Ä> t¬Ä> tΩÄ>t∏Ä>t≥Ä> tÆHˇ∆Ä>u–Î;Error: Invalid number ∏øHæ=Ç∫∏<H1ˇI«∆Lãd$AÄ<$t3I««Hãt$Ä>tDäE:$tHˇ∆Iˇ«ÎÍM9˘t°MØÒM˛IˇƒÎ∆ÎYour result is : ∏øHæ¿Ç∫I««MâıIÉ˝ xIˇ«LâËH1“H«¡ H˜ÒIâ≈΂MâËIÉ¿0Lâ¿PH«¿H««HâÊH«¬Iɲ xUMâ˚MâıIÉ˚tIˇÀLâËH1“H«¡ H˜ÒIâ≈Iâ—ÎflMâ»IÉ¿0Lâ¿PH«¿H««HâÊH«¬IˇœIɡu´I«¿ Lâ¿PH«¿H««HâÊH«¬∏<H1ˇ 

At first I saw a youtube video, about making your own elf file, and then returning 0
but wanted to do an hello world elf file, then once I did the hello world one, I was like, why not doing atoi_base then ?

That's the two youtube video I watched, and used the code of the first one, to translate hexa to decimal:

CODE
#!/bin/bash for f in *.dmp ; do a=`basename $f .dmp` cut -d'#' -f1 <$f | xxd -p -r >$a chmod +x $a done 

and my original .dmp file :

CODE
# >>>>>>>>>>>>> ELF FILE HEADER <<<<<<<<<<<<< # All numbers (except in names) are in base sixteen (hexadecimal) # 00 <- number of bytes listed so far 7F 45 4C 46 # 04 e_ident[EI_MAG]: ELF magic number 02 # 05 e_ident[EI_CLASS]: 1: 32-bit, 2: 64-bit 01 # 06 e_ident[EI_DATA]: 1: little-endian, 2: big-endian 01 # 07 e_ident[EI_VERSION]: ELF header version; must be 1 00 # 08 e_ident[EI_OSABI]: Target OS ABI; should be 0 00 # 09 e_ident[EI_ABIVERSION]: ABI version; 0 is ok for Linux 00 00 00 # 0C e_ident[EI_PAD]: unused, should be 0 00 00 00 00 # 10 02 00 # 12 e_type: object file type; 2: executable 3E 00 # 14 e_machine: instruction set architecture; 3: x86, 3E: amd64 01 00 00 00 # 18 e_version: ELF identification version; must be 1 D5 80 04 08 00 00 00 00 # 1C e_entry: memory address of entry point (where process starts) 40 00 00 00 00 00 00 00 # 20 e_phoff: file offset where program headers begin 00 00 00 00 00 00 00 00 # 24 e_shoff: file offset where section headers begin 00 00 00 00 # 28 e_flags: 0 for x86 40 00 # 2A e_ehsize: size of this header (34: 32-bit, 40: 64-bit) 38 00 # 2C e_phentsize: size of each program header (20: 32-bit, 38: 64-bit) 01 00 # 2E e_phnum: #program headers 40 00 # 30 e_shentsize: size of each section header (28: 32-bit, 40: 64-bit) 00 00 # 32 e_shnum: #section headers 00 00 # 34 e_shstrndx: index of section header containing section names # >>>>>>>>>>>>> ELF PROGRAM HEADER <<<<<<<<<<<<< 01 00 00 00 # 38 p_type: segment type; 1: loadable 05 00 00 00 # 50 p_flags: segment-dependent flags (1: X, 2: W, 4: R) D5 00 00 00 00 00 00 00 # 3C p_offset: file offset where segment begins D5 80 04 08 00 00 00 00 # 40 p_vaddr: virtual address of segment in memory (x86: 08048054) 00 00 00 00 00 00 00 00 # 44 p_paddr: physical address of segment, unspecified by 386 supplement AA 00 00 00 00 00 00 00 # 48 p_filesz: size in bytes of the segment in the file image ############ AA 00 00 00 00 00 00 00 # 4C p_memsz: size in bytes of the segment in memory; p_filesz <= p_memsz 00 00 20 00 00 00 00 00 # 54 p_align: 1000 for x86 # >>>>>>>>>>>>> PROGRAM SEGMENT <<<<<<<<<<<<< 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 0A 45 72 72 6f 72 3a 20 75 73 61 67 65 20 69 73 20 2e 2f 70 72 6f 67 72 61 6d 20 3c 6e 75 6d 62 65 72 3e 20 3c 62 61 73 65 3e 0a 00 ########## B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur 85 80 04 08 00 00 00 00 # addressse du error msg en format 8 dcp BA 2A 00 00 00 # mov rdx, 43 0F 05 # syscall ######### 27 BYTES ######### B8 3C 00 00 00 # 60 dans rax ou 3C 48 31 FF # xor rdx rdx 0F 05 # syscall ######## 10 BYTES #48 83 7C 24 10 00 # cmp qword [rsp + 16], 0 #75 09 # jne inc B8 00 00 00 00 # mov rax, 0 49 c7 c0 00 00 00 00 # mov r8, 0 49 c7 c1 00 00 00 00 # mov r9, 0 48 8B 3C 24 # mov rdi, [rsp] 48 83 FF 03 # cmp rdi, 3 75 BE # jne au msg d'erreur en legendeeee 48 8B 74 24 18 # mov rsi, [rsp + 16] argv[1] 48 8B 46 00 # mov rax, [rsi + 0] argv[1][0] 48 89 06 # mov [rsi], rax 48 8B 46 00 # mov rax, [rsi + 1] argv[1][0] 48 ff c6 # inc rsi 49 ff c1 # inc r9 80 3e 00 # cmp byte ptr [rsi], 0 75 F5 # je -8 48 8B 46 00 # mov rax, [rsi + 1] argv[1][0] bf 01 00 00 00 # mov rdi, 1 48 83 ec 08 # sub rsp 8 88 04 24 # mov byte [rsp], al b8 01 00 00 00 # mov rax, 1 48 89 e6 # mov rsi, rsp ba 01 00 00 00 # mov rdx, 1 0f 05 # sys call 48 83 c4 08 # add rsp 8 49 C7 C0 00 00 00 00 # mov r8, 0 49 FF C0 # inc r8 B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur 78 80 04 08 00 00 00 00 # addressse de hello world en format 8 dcp BA 00 00 00 00 # mov rdx, 13 0F 05 # syscall 4d 39 c8 # cmp r8, r9 75 DD # jne inc r8 # Donc on en apprend quoi; on a la len de argv[2] dans r9, la len de la base # ft_atoi_base prend deux arguments (char *nombre, char *base) # faut convertir la base en int dans un compartiment jsp le nom # va aussi falloir faire la gestion d'erreur, probablement en utilisant des jump # eb c'est jmp donc eb position relatif 49 83 f9 01 # cmp r9, 1 76 24 # jne inc r8 eb 5B # bah dcp un jmp qui skip les socuis ### 45 72 72 6f 72 3a 20 42 61 73 65 20 6d 75 73 74 20 62 65 20 62 69 67 67 65 72 20 74 68 61 6e 20 31 0a ### 34 BYTES ########## B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur 62 81 04 08 00 00 00 00 # addressse du error msg en format 8 dcp BA 22 00 00 00 # mov rdx, 43 0F 05 # syscall ######### 27 BYTES ######### B8 3C 00 00 00 # 60 dans rax ou 3C 48 31 FF # xor rdx rdx 0F 05 # syscall ######## 10 BYTES # BASE 45 72 72 6F 72 3A 20 49 6E 76 61 6C 69 64 20 62 61 73 65 0A ### 20 BYTES #ok donc on arrive ici alors faudrait check la base encore plus ### 48 8B 74 24 18 # mov rsi, [rsp + 24] argv[2] # <loop> 80 3e 00 # cmp byte ptr [rsi], 0 74 3F # je <end> 48 89 f0 # mov rax, rsi # <loop3> 48 ff c0 # inc rax 80 38 00 # cmp byte ptr [rax], 0 74 0a # je <loop2> 44 8a 06 #mov r8b,BYTE PTR [rsi] 44 3a 00 #cmp r8b,BYTE PTR [rax] 74 07 # je <error> eb EE # jmp <loop3> # <loop2> 48 ff c6 # inc rsi eb E1 # jmp -28 #<error> ########## B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur A9 81 04 08 00 00 00 00 # addressse du error msg en format 8 dcp BA 14 00 00 00 # mov rdx, 20 0F 05 # syscall ######### 27 BYTES B8 # mov rax (32 bit) 3C 00 00 00 # 60 dans rax ou 3C 48 31 FF # xor rdx rdx 0F 05 # syscall #<end> # bah dcp j'ai check si y'avait un double vrmt un banger, mtn faudrait check les values bizzares 48 8B 74 24 18 # mov rsi, [rsp + 24] argv[2] 80 3e 2B # cmp byte ptr [rsi], '+' 74 D1 # je <error> 80 3e 2D # cmp byte ptr [rsi], '-' 74 CC # je <error> 80 3e 20 # cmp byte ptr [rsi], ' ' 74 C7 # je <error> 80 3e 09 # cmp byte ptr [rsi], 74 C2 # je <error> 80 3e 0A # cmp byte ptr [rsi], 74 BD # je <error> 80 3e 0B # cmp byte ptr [rsi], 74 B8 # je <error> 80 3e 0C # cmp byte ptr [rsi], 74 B3 # je <error> 80 3e 0D # cmp byte ptr [rsi], 74 AE # je <error> 48 ff c6 # inc rsi 80 3e 00 # cmp byte ptr [rsi], 0 75 D0 # bah ca check quoi! eb 3B ## 45 72 72 6f 72 3a 20 49 6e 76 61 6c 69 64 20 6e 75 6d 62 65 72 0a ## 22 # donc maintenant la base est VALIDE! Prochaine etapde bah direct le reste ########## #<error> B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur 3d 82 04 08 00 00 00 00 # addressse du error msg en format 8 dcp BA 16 00 00 00 # mov rdx, 43 0F 05 # syscall ######### 27 BYTES B8 # mov rax (32 bit) 3C 00 00 00 # 60 dans rax ou 3C 48 31 FF # xor rdx rdx 0F 05 # syscall ## 10 # Donc on arrive ici # On va dire que # r9 possede la len # R12 doit toujours contenir la base # 49 c7 c6 00 00 00 00 # mov r14,0x0 4c 8b 64 24 10 # mov r12,QWORD PTR [rsp+ 16] 41 80 3c 24 00 # cmp BYTE PTR [r12],0x0 74 33 # je <finish> ###### 49 c7 c7 00 00 00 00 # mov r15,0x0 48 8B 74 24 18 # mov rsi, [rsp + 24] argv[2] 80 3e 00 # cmp byte ptr [rsi], 0 74 11 # je end 44 8a 06 # mov r8b,BYTE PTR [rsi] 45 3a 04 24 # cmp r8b,BYTE PTR [r12] 74 08 # je end 48 ff c6 # inc rsi 49 ff c7 # inc r15 eb ea # jmp ## 34 #<end> 4d 39 f9 # cmp r9,r15 74 a1 # je <error> 4d 0f af f1 # imul r14,r9 4d 01 fe # add r14,r15 49 ff c4 # inc r12 eb c6 # jmp #<finish> #<bah> le resultat est cense se trouver dans r14 faut juste l'afficher maintenant eb 12 59 6F 75 72 20 72 65 73 75 6C 74 20 69 73 20 3A 20 0A # 18 #y a vrmt plus qu'a print notre magnifique resultat ######## B8 01 00 00 00 # mov rax, 01 BF 01 00 00 00 # mov rdi, 01 48 BE # mov rsi, 64 bit pointeur c0 82 04 08 00 00 00 00 # addressse du error msg en format 8 dcp BA 11 00 00 00 # mov rdx, 43 0F 05 # syscall ######### 27 BYTES 49 c7 c7 00 00 00 00 # mov r15,0x0 ### 4d 89 f5 # mov r13,r14 49 83 fd 0a # cmp r13,0xa 78 18 # js <finish> 49 ff c7 # inc r15 4c 89 e8 # mov rax,r13 48 31 d2 # xor rdx,rdx 48 c7 c1 0a 00 00 00 # mov rcx,0xa 48 f7 f1 # div rcx 49 89 c5 # mov r13,rax eb e2 # jmp #<finish> 4d 89 e8 # mov r8,r13 49 83 c0 30 # add r8,0x30 ## 37 ## 4c 89 c0 # mov rax,r8 50 # push rax 48 c7 c0 01 00 00 00 # mov rax,0x1 48 c7 c7 01 00 00 00 # mov rdi,0x1 48 89 e6 # mov rsi,rsp 48 c7 c2 01 00 00 00 # mov rdx,0x1 0f 05 # syscall #30 49 83 fe 0a # cmp r14,0xa 78 55 # jn ?? 4d 89 fb # mov r11,r15 #3 ### 4d 89 f5 # mov r13,r14 49 83 fb 00 # cmp r11,0x0 74 1b # je <finish> 49 ff cb # dec r11 4c 89 e8 # mov rax,r13 48 31 d2 # xor rdx,rdx 48 c7 c1 0a 00 00 00 # mov rcx,0xa 48 f7 f1 # div rcx 49 89 c5 # mov r13,rax 49 89 d1 # mov r9,rdx eb df # jmp ## 36 #<finish> 4d 89 c8 # mov r8,r9 49 83 c0 30 # add r8,0x30 ## 7 ## 4c 89 c0 # mov rax,r8 50 # push rax 48 c7 c0 01 00 00 00 # mov rax,0x1 48 c7 c7 01 00 00 00 # mov rdi,0x1 48 89 e6 # mov rsi,rsp 48 c7 c2 01 00 00 00 # mov rdx,0x1 0f 05 # syscall #30 49 ff cf # dec r15 49 83 ff 00 # cmp r15,0x1 75 ab # je ## 49 c7 c0 0a 00 00 00 # mov r8,0x41 4c 89 c0 # mov rax,r8 50 # push rax 48 c7 c0 01 00 00 00 # mov rax,0x1 48 c7 c7 01 00 00 00 # mov rdi,0x1 48 89 e6 # mov rsi,rsp 48 c7 c2 01 00 00 00 # mov rdx,0x1 0f 05 # syscall #37 B8 # mov rax (32 bit) 3C 00 00 00 # 60 dans rax ou 3C 48 31 FF # xor rdx rdx 0F 05 # syscall 
submitted by [comments]
Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf reddit.com.
↗ Original-Artikel auf reddit.com lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
The Gemini desktop app is now available for Windows
1 Quelle
ChatGPT automatically logged out [Fix]
1 Quelle
Windows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten .ELF atoi_base hand made

Thematisch verwandte Begriffe: atoibase, hand, made · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...