Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- wrefresh
- level trigger
- iptables
- .nret core 배포
- REDIS
- edge trigger
- 풀이
- Docker
- ncurses
- packet flow
- doupdate
- NAPT
- vtable
- epoll
- 취약점
- DOCKER-USER
- epoll_wait
- .net core 7
- BOF
- rfc5508
- Compiler
- architecture
- LOB
- mvwin
- wnourefresh
- C언어
- 어셈블리어
- ioctl
- packet filter
- cbpf
Archives
- Today
- Total
Tuuna Computer Science
C 언어 문자열 관련 함수 (strcpy) 분석 본문
@pointer_00401500: ;<= Procedure Start
PUSH EBP
MOV EBP,ESP
AND ESP,0FFFFFFF0h
SUB ESP,020h ;공간 생성
CALL @pointer_00401EE0 ;<= Jump/Call Address Not Resolved
MOV DWORD PTR SS:[ESP],0Fh ;동적할당 크기 인자 (나중에 내부 분석해보자 ㅋ)
CALL malloc ;<= Jump/Call Address Not Resolved (동적할당 호출),
;동적할당 후 생긴 주소값을 EAX에 넣는다.
;(return 값) 거의 모든 return값은 EAX에 넣는다.
MOV DWORD PTR SS:[ESP+01Ch],EAX ;EAX(주소값)을 메모리에 넣는다.
MOV EAX,DWORD PTR SS:[ESP+01Ch]
MOV DWORD PTR DS:[EAX],06C6C6568h ;이건 문자열이다.
;주소값에 들어있는 값에 문자열을 넣고 있다(최대4글자)
MOV DWORD PTR DS:[EAX+4],06F77206Fh
MOV DWORD PTR DS:[EAX+8],0646C72h
MOV EAX,DWORD PTR SS:[ESP+01Ch] ;주소값을 다시 EAX에 넣는다.
MOV DWORD PTR SS:[ESP],EAX ;printf의 인자로 EAX를 준다.
;(뇌피셜) (동적할당 시 생긴 힙영역 주소)
CALL puts ;<= Jump/Call Address Not Resolved
MOV EAX,DWORD PTR SS:[ESP+01Ch]
MOV DWORD PTR DS:[EAX],06C6C6568h
MOV DWORD PTR DS:[EAX+4],06F77206Fh
MOV DWORD PTR DS:[EAX+8],020646C72h
MOV DWORD PTR DS:[EAX+0Ch],06C6C6568h
MOV DWORD PTR DS:[EAX+010h],06F77206Fh
MOV DWORD PTR DS:[EAX+014h],0646C72h
MOV EAX,DWORD PTR SS:[ESP+01Ch]
MOV DWORD PTR SS:[ESP],EAX
CALL puts ;<= Jump/Call Address Not Resolved
MOV EAX,0
LEAVE
RETN ;<= Procedure End
Q. 뇌피셜 : 포인터 변수선언 후 동적할당시 스택영역엔 포인터변수가있고 힙 영역에도 포인터변수가 있다는 것인가.
2018.8.3 뇌피셜 success! 저말이 맞구나
좀 더 자세히 붙이자면 스택영역에 있는 포인터변수엔 힙영역에 할당된 포인터변수의 주소값이 들어있음
'Assembly' 카테고리의 다른 글
[어셈블리] 파일 다루기 ( 소문자를 대문자로 바꾸기 ) (0) | 2018.08.06 |
---|---|
재귀함수 호출시 스택프레임상황 (0) | 2018.06.12 |
포인터 배열 (0) | 2018.06.11 |
배열 포인터 (0) | 2018.06.11 |
[Assembly]어셈블리어 lea, mov 명령어 차이 (0) | 2018.04.28 |
Comments