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 | 29 | 30 |
Tags
- edge trigger
- 어셈블리어
- level trigger
- NAPT
- rfc5508
- ioctl
- wnourefresh
- wrefresh
- Docker
- epoll
- BOF
- epoll_wait
- LOB
- .nret core 배포
- iptables
- Compiler
- 취약점
- doupdate
- cbpf
- packet flow
- REDIS
- ncurses
- vtable
- architecture
- 풀이
- C언어
- DOCKER-USER
- mvwin
- .net core 7
- packet filter
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