int $0x80

strcpy 구현 본문

컴퓨터공부/어셈블리어

strcpy 구현

cd80 cd80 2014.01.15 15:52

strcpy는 strcpy(char *dest, char *src);의 형태로 쓰이고

*src가 0이 될때까지 movb *src, *dest를 해주는 함수입니다

아래는 header.inc에 들어가는 strcpy함수입니다

strcpy:

push %ebp

mov %esp, %ebp

push %ecx

mov 0x8(%ebp), %edi

mov 0xc(%ebp), %esi

mov %edi, %ecx

.strcpy_loop:

cmpb $0x0, (%esi)

movb $0x0, (%edi)

je .strcpy_end

movb (%esi), %al

movb %al, (%edi)

inc %esi

inc %edi

jmp .strcpy_loop

.strcpy_end:

mov %ecx, %eax

pop %ecx

leave

ret


root@ubuntu:/home/study/first/programming# cat strcpy.s

.text

.include "header.inc"

.globl main


main:

push %ebp

mov %esp, %ebp

sub $0x20, %esp

lea -0x20(%ebp), %eax


push $string

push %eax

call strcpy


lea -0x20(%ebp), %eax

push %eax

call printString

leave

ret

string:

.string "Strcpy Test\n"

root@ubuntu:/home/study/first/programming# ./strcpy

Strcpy Test

root@ubuntu:/home/study/first/programming#

신고

'컴퓨터공부 > 어셈블리어' 카테고리의 다른 글

무한루프 원인 확인 및 패치  (0) 2014.01.16
취약프로그램 작성&공격  (0) 2014.01.15
gets 구현  (0) 2014.01.15
strcpy 구현  (0) 2014.01.15
printf strlen 구현  (1) 2014.01.15
0 Comments
댓글쓰기 폼