2018/05/15(2)
-
PE 64비트에서 최적화에 대한 이야기
64비트에서의 최적화 관련 처리 1. 강화 된 함수 인라인 처리 "인라인 함수 확장(Inline Function Expansion)" 조건에 따라 64비트 컴파일러는 함수 호출을 함수의 내용으로 대체하기도 하는데, 이를 인라인 함수 확장이라 한다. 인라인 처리라는것은, 함수를 CALL명령으로 처리하는게 아니라 함수 자체 코드를 호출 부분에 삽입하는 것이다.물론, 함수 자체를 호출 부분에 삽입하기 때문에 프로그램의 크기는 증가하게 된다. 하지만, 호출을 위한 스택 준비와 CALL 명령의 분기로 인한 부하는 없앨 수 있다.디버깅은 다소 어려울 수 있다. 왜냐하면, 심볼을 제대로 찾을 수 없기 때문이다. 2. 최종 호출 제거 (Tail Call Elimination) 우선 기억해두어야 하는 것이 하나 있다.스..
2018.05.15 -
Core Dump
DEFCON CTF Qualifier 2018 에서 ps-sec를 풀기 위해 코어 덤프를 공부하였다. Core Dump란 무엇일까? 운영체제에서 프로그램의 오류가 자동으로 코어 덤프를 실행시키게 되는데 이 행위를 "코어 덤프"라고 한다. Core Dump는 덤프 프로세스 주소 공간의 덤프 영역의 모든 내용을 나타낸다고 한다. 보통 덤프를 뜨면 디스어셈블이 가능한데, 왜 이 문제는 디스어셈블이 안되는지 .... 고민에 빠져버렸다.. 덤프 코어에서 유용한 명령어는 backtrace, where, frame이 있다. 딱히 적을만한게 없는 것 같다.
2018.05.15