我知道它做了什麼,但我真的很喜歡解釋爲什麼?請解釋我的程序集Shellcode的缺失行。什麼是EXECVE參數?
SECTION .data
global _start
_start:
jmp j ;jump to 'j' label
r:
pop ebx ;Pop the address of 'shell' into EBX. Parameter is Filename
xor eax, eax ; clear EAX register
mov BYTE[ebx+7], al ;push one NUL byte to end any string reading
mov DWORD[ebx+8], ebx ;mov address of EBX into the content EBX (offset of 8)
mov DWORD[ebx+12], eax ;mov 4 NUL bytes at EBX (offset of 12)
mov al, 11d ;execve system call
lea ecx, [ebx+8] ; HELP
lea edx, [ebx+12] ; HELP
int 80h ;Kernel call
j: call r ;call r... pushes 'shell' address onto the stack
shell: db "/bin/sh" ;file name
具體來說,我想知道:
1)什麼是execve的的3個參數(我已經看過了man 2 execve
並沒有幫助)
2)究竟是什麼LEA做這個案例?
美麗的解釋。 Upvoted和接受。 – Goodies