stack

    JAVA :: JVM의 메모리 구조

    JAVA :: JVM의 메모리 구조

    남궁성 저자의 Java의 정석 3판 스터디 어플리케이션이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. Method Area 프로그램 실행 중 어떤 클래스가 사용되면, JVM 은 해당 클래스의 클래스파일(*.class)을 읽어서 클래스 데이터를 이 곳에 저장한다. 클래스 변수도 이 영역에 함께 생성된다. Heap 인스턴스가 생성되는 공간, 인스턴스 변수들도 이 곳에 생성된다. Call Stack Method 가 호출되면 Call stack에 메모리가 할당되며, 연산의 중간결과 등을 저장하는 데에 사용된다. 이 메모리는 Method가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 Method 작업에 필요..

    Pwnable.kr :: Toddler's Bottle - bof write up

    Pwnable.kr :: Toddler's Bottle - bof write up

    Pwnable.kr 의 세번째 문제를 풀어보자. 이번 문제는 Buffer Overflow 에 대한 문제이다. Buffer Overflow 란, 데이터를 버퍼에 저장할 때, 데이터가 지정된 범위 바깥에 저장되는 것을 의미하고, 벗어난 데이터는 인접 메모리를 덮어쓰게 된다. nc 로 접속하면 bof 파일이 바로 실행되고, 그 전에 wget 으로 bof 파일과 bof.c 소스파일을 다운받아보았다. bof.c 소스파일은 main 함수와 func 함수로 이루어져 있다. main 함수에서는 func 함수를 호출하는 거 이외에 별다른 코드가 없고, 0xdeadbeef 라는 값을 인자로 넘기면서 func 함수를 호출하고 있다. func 함수에서는 0xdeadbeef 라는 값을 int 형 변수 key 에다가 넣고, ov..