0
어셈블리에서 strcpy 함수를 작성한 다음 Firefox, emacs와 같은 여러 프로그램을 시작하려고했습니다 ... 하지만 사본에 문제가있어 어디에서 문제가 있습니다.NASM에서 strcpy를 실행하여 파이어 폭스를 시작합니다.
어셈블리 코드 :
: 난 내 공유 라이브러리와 파이어 폭스를 시작하려고 할 때s1 = hello
s2 before copy =
s2 after copy = hello
결과 : 난 내 공유 라이브러리와 작은 프로그램을 실행하려고
global strcpy
section .text
strcpy:
push rbp
push rdx
mov rbp, rsp
mov rdx, 0
strcpy_loop:
cmp byte [rsi + rdx], 0
je strcpy_end
mov al, byte [rsi + rdx]
mov byte [rdi + rdx], al
inc rdx
jmp strcpy_loop
strcpy_end:
mov rax, rdi
mov rsp, rbp
pop rdx
pop rbp
ret
결과
/usr/bin/firefox: line 52: $'basenamex\326g\002Lame $0`': command not found
/usr/bin/firefox: line 57: bad substitution: no closing "`" in `x�gL
/usr/bin/firefox: line 63: $'[\340\n\002': command not found
/usr/bin/firefox: line 73: fileL: command not found
/usr/bin/firefox: line 75: echoL: command not found
grep: invalid option -- 'g'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
/usr/bin/firefox: line 78: $'[\351\n\002L': command not found
/usr/bin/firefox: line 83: export: `MOZILLA_FIVE_HOME�gL': not a valid identifier
/usr/bin/firefox: line 91: $'[\257\n\002': command not found
/usr/bin/firefox: line 95: /dev/null�gL: Permission denied
/usr/bin/firefox: line 97: $'[\t\v\002': command not found
/usr/bin/firefox: line 108: $'[\006\v\002': command not found
/usr/bin/firefox: line 131: $'[\023\v\002': command not found
/usr/bin/firefox: line 138: exec: =0
: not found
작은 프로그램이 작동하지만 파이어 폭스는 작동하지 않습니다.
: 널 종료 바이트를 포함 _는 "strcpy를() 함수를 복사 문자열 SRC가 가리키는 ** ** ('\ 0')에 버퍼는 dest가 가리키고 있습니다. "_ – Michael
감사합니다. 문제가 해결되었습니다. –