티스토리 뷰
참조 : http://tikifr.egloos.com/4481530
위 글이 참고가 될까 해서 구글 사마에게 여쭤봤는데,
당체 알아먹을 수 없는 글들 뿐이라서 그냥 아는 분께 질문을 하기로 했다.
그러나, 얻은 대답이 단순한 듯 하면서도 가장 명쾌한 대답이였다.
내가 의문을 갖은 코드 'add esp, 8' 가 이용된 곳이
때마침 '단순히 스택을 버리는 곳'이였던 것이 핵심이였다.
함수 호출을 위해서 PUSH 했던 데이터가
printf 호출 이후에 더이상 필요가 없기 때문에 POP 해서 버려야 했는데
POP 연산 자체가 ESP의 데이터를 읽어서 레지스터에 값을 저장하는 과정이기 때문에
단순 ESP를 증분(ADD) 하는 것에 비해서 오버헤드가 더 크다는 것이다.
아마, POP 해서 가져오는 데이터가 필요한 경우에는 POP 이 이용될 것이다.
그게 아니라, 단순히 버리는 데이터라면 ADD 가 이용되겠지...
[ 위 블로그에 올라온 글 ]
펜티엄상의 PUSH, POP은 파이프라인의 효율적인 스퍼스칼라을 동작을 방해합니다.
같은 동작을 함에 있어 펜티엄의 경우 최소 10클럭이 필요하지만, ARM에서는 이론상 최소 3클럭(MOV4개 1클럭, CALL 2클럭)만으로 함수 호출이 가능합니다.
PUSH, POP은 RISC계열의 CPU들에서는 악(惡)으로 간주되어서 명시적인 SP레지스터와 PUSH, POP 명령어가 없습니다.
수퍼스칼라가 몇개건 PUSH, POP을 사용하는 동안에는 하나의 명령어만이 실행가능합니다.
참고로, 대개의 RISC계열예서는 범용 레지스터중 하나를 SP로 사용하며 그 SP조차조 ADD 또는 SUB 명령으로 PUSH, POP 효과를 냅니다.
펜티엄상의 PUSH, POP은 파이프라인의 효율적인 스퍼스칼라을 동작을 방해합니다.
같은 동작을 함에 있어 펜티엄의 경우 최소 10클럭이 필요하지만, ARM에서는 이론상 최소 3클럭(MOV4개 1클럭, CALL 2클럭)만으로 함수 호출이 가능합니다.
PUSH, POP은 RISC계열의 CPU들에서는 악(惡)으로 간주되어서 명시적인 SP레지스터와 PUSH, POP 명령어가 없습니다.
수퍼스칼라가 몇개건 PUSH, POP을 사용하는 동안에는 하나의 명령어만이 실행가능합니다.
참고로, 대개의 RISC계열예서는 범용 레지스터중 하나를 SP로 사용하며 그 SP조차조 ADD 또는 SUB 명령으로 PUSH, POP 효과를 냅니다.
위 글이 참고가 될까 해서 구글 사마에게 여쭤봤는데,
당체 알아먹을 수 없는 글들 뿐이라서 그냥 아는 분께 질문을 하기로 했다.
그러나, 얻은 대답이 단순한 듯 하면서도 가장 명쾌한 대답이였다.
내가 의문을 갖은 코드 'add esp, 8' 가 이용된 곳이
때마침 '단순히 스택을 버리는 곳'이였던 것이 핵심이였다.
함수 호출을 위해서 PUSH 했던 데이터가
printf 호출 이후에 더이상 필요가 없기 때문에 POP 해서 버려야 했는데
POP 연산 자체가 ESP의 데이터를 읽어서 레지스터에 값을 저장하는 과정이기 때문에
단순 ESP를 증분(ADD) 하는 것에 비해서 오버헤드가 더 크다는 것이다.
00280 68 00 00 00 00 push OFFSET FLAT:$SG58206
00285 68 20 00 00 00 push OFFSET FLAT:__iob+32
0028a e8 00 00 00 00 call _fprintf <--- fprintf 수행 이후에는
이전에 push 했던 내용은 더이상 필요가 없음
0028f 83 c4 08 add esp, 8 <--- 따라서 pop 대신, esp 를 증가만 해줌
00285 68 20 00 00 00 push OFFSET FLAT:__iob+32
0028a e8 00 00 00 00 call _fprintf <--- fprintf 수행 이후에는
이전에 push 했던 내용은 더이상 필요가 없음
0028f 83 c4 08 add esp, 8 <--- 따라서 pop 대신, esp 를 증가만 해줌
아마, POP 해서 가져오는 데이터가 필요한 경우에는 POP 이 이용될 것이다.
그게 아니라, 단순히 버리는 데이터라면 ADD 가 이용되겠지...
'보안 > 분석' 카테고리의 다른 글
Reversing Secrets Of Reverse Engineering : RtlInitializeGenericTable (4) | 2009.10.11 |
---|---|
[노트] .COD 와 release 결과물의 차이 (0) | 2009.09.17 |
[노트] ProbeForRead (0) | 2009.08.31 |
[노트] Reverse Engineering 하면서 생각나는 질문 들... (2) | 2009.08.13 |
EnableLUA - HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System (0) | 2009.08.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 지루박멸연구센타
- 열정의 힘을 믿는다
- Le4rN TO Cr4cK
- 디버깅에관한모든것(DebugLab)
- sysinternals
- FoundStone
- hashtab
- 보안-coderant
- 디바이스드라이버 개발자 포럼
- dualpage.muz.ro
- osronline.com - 드라이버 관련 정보 사이트
- NtInternals - NativeAPI Refere…
- pcthreat - spyware 정보 제공
- rootkit.com - 루트킷 관련 정보
- www.ntinternals.net
- WINE CrossRef. - source.winehq…
- tuts4you
- hex-rays
- idapalace
- idefense
- immunityinc
- threatexpert
- hdp.null2root.org
- www.crackstore.com
- crackmes.de
- www.who.is
- www.cracklab.ru
- community.reverse-engineering.…
- video.reverse-engineering.net
- SnD
- 클레이 키위
- reversengineering.wordpress.co…
- www.openrce.org
- www.woodmann.com
- PEID.Plusins.BobSoft
- roxik.com/pictaps/
- regexlib.com
- spyware-browser.com
- www.usboffice.kr
- regulator
- www.txt2re.com
- ietab.mozdev.org
- zesrever.xstone.org
- www.heaventools.com/PE-file-he…
- www.heaventools.com
- www.innomp3.com
- 울지않는벌새
- exetools.com-forum
- exetools.com
- utf8 conv
- robtex - IP trace
- onsamehost - same IP sites
- JpopSuki
- jsunpack.jeek.org
- wepawet.iseclab.org
- www.jswiff.com
- www.hackeroo.com
- winesearcher.co.kr
- khpga.org
- malwareurl.com
- anubis.iseclab.org
- www.crummy.com-eautifulSoup
- malwarebytes.org/forums
- bbs.janmeng.com
- blackip.ustc.edu.cn
- eureka.cyber-ta.org
- exploit-db.com
TAG
- ChatGPT
- CriticalSection
- 주식트래이딩
- 실시간트래이딩
- ROA
- ubuntu
- 미국주식
- 군함도
- 주택구매력지수
- 다올저축은행
- INVOICE
- Pivot
- O365
- 매매가격지수
- hai
- 맥쿼리인프라
- 시스템트래이딩
- ElasticSearch
- PIR
- SBI저축은행
- 공공인프라
- 사회간접자본
- 자동트래이딩
- 전세매매지수
- 피봇
- systemd
- 레고랜드
- logrotate
- 주식
- 신한저축은행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함