pwnkidhn.github.io

고정 헤더 영역

글 제목

메뉴 레이어

pwnkidhn.github.io

메뉴 리스트

    • 분류 전체보기 (194)
      • memo (0)
      • Pwnable Exploitation (19)
        • 01.Shellcode (4)
        • 02.Return to Shellcode (1)
        • 03.RTL(Return to libc) (2)
        • 04.Frame faking(Fake ebp) (1)
        • 05.Frame Pointer Overwrite (2)
        • 06.ROP(Return Oriented Prog.. (3)
        • 07.SROP(Sigreturn-oriented .. (2)
        • 08.JOP(Jump-Oriented Progra.. (1)
        • 09.Return-to-csu(__libc_csu.. (0)
        • Malloc - glibc(ptmalloc2) (3)
      • Pwnable Write-Up (54)
        • 00.CTF (0)
        • 01.hackerschool F.T.Z (20)
        • 02.hackerschool L.O.B (21)
        • 03.dreamHack (13)
        • 04.HackCTF (0)
      • Reversing Write-Up (38)
        • 01.Abex's crackme (5)
        • 02.CodeEngn Basic (20)
        • 03.CodeEngn Advance (13)
      • Fuzzing (1)
        • Theory (1)
      • Programming (22)
        • Data Structure (0)
        • Windows System (22)
      • Computer Science (60)
        • Computer Architecture (18)
        • OS Concepts (29)
        • Linux System (5)
        • Reverse Core (8)

    검색 레이어

    pwnkidhn.github.io

    검색 영역

    컨텐츠 검색

    Computer Science/Reverse Core

    • Reverse Core 13장 (★★★★★)

      2020.01.22 by RACC8N

    • Reverse Core 10장

      2020.01.15 by RACC8N

    • Reverse Core 7장

      2020.01.15 by RACC8N

    • Reverse Core 5장

      2020.01.14 by RACC8N

    • Reverse Core 4장

      2020.01.14 by RACC8N

    • Reverse Core 3장

      2020.01.14 by RACC8N

    • Reverse Core 2장

      2020.01.14 by RACC8N

    • Reverse Core 1장

      2020.01.14 by RACC8N

    Reverse Core 13장 (★★★★★)

    ◆ PE File Format PE(Portable Executable) File : Windows OS의 실행파일 형식. PE 파일 종류 종류 주요 확장자 실행 계열 EXE, SCR 라이브러리 계열 DLL, OCX, CPL, DRV 드라이버 계열 SYS, VXD 오브젝트 파일 계열 OBJ ※ OBJ 파일을 제외한 모든 것은 실행 가능한 파일. (리버싱에서 관심 가질 필요 없음) ◆ 기본 구조 Dos Header ~ Section Header = PE Header // Section = PE Body 파일에서는 Offset // 메모리에서는 VA (Virtual Address, 절대주소) Section Header : 각 Section에 대한 파일/메모리에서의 크기, 위치, 속성 등이 정의되어 있음. 파..

    Computer Science/Reverse Core 2020. 1. 22. 23:12

    Reverse Core 10장

    Calling Convention (함수 호출 규약) '함수를 호출할 때 파라미터를 어떤 식으로 전달하는가?'에 대한 일종의 약속 프로세스가 실행될 때 스택 메모리의 크기가 결정됨.(malloc/new 같은 동적 메모리 할당과는 다름) Q1. 함수가 실행 완료되었을 때 스택에 들어있던 파라미터는 어떻게 해야 될까? A1. 그대로 놔둔다. 스택에 저장된 값은 임시로 사용하는 값이기 때문에 더 이상 사용하지 않는다 해도 값을 지우거나 하면 불필요하게 CPU자원을 소모함. Q2. 함수가 실행 완료되었을 때 ESP는 어떻게 될까? A2. ESP 값은 함수 호출 전으로 복원되어야 한다. 그래야 참조 가능한 스택의 크기가 줄어들지 않는다. 스택 메모리는 고정되어 있고 ESP로 스택의 현재 위치를 가리키는데, 만약 ..

    Computer Science/Reverse Core 2020. 1. 15. 18:54

    Reverse Core 7장

    Stack Frame ESP(스택 포인터)가 아닌 EBP(베이스 포인터)레지스터를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법. ESP레지스터의 값은 수시로 변경되기 때문에 스택에 저장된 변수, 파라미터에 접근하고자 할 때 ESP값을 기준으로하면 어려움. 어떤 기준 시점(함수 시작)의 ESP 값을 EBP에 저장하고 이를 함수 내에서 유지해주면, ESP값이 아무리 변해도 EBP를 기준(base)으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. 프롤로그 : push ebp ~ 에필로그 : mov esp, ebp ~ ※ 스택에 복귀 주소가 저장된다는 점이 보안 취약점으로 작용 할 수 있다. (Buffer overflow)

    Computer Science/Reverse Core 2020. 1. 15. 17:47

    Reverse Core 5장

    Stack 1. 함수 내의 로컬 변수 임시 저장 2. 함수 호출 시 파라미터 전달 3. 복귀 주소(return address) 저장 특징 : FILO (First In Last Out) 프로세스에서 스택 포인터 (ESP)의 초기 값은 Stack Bottom쪽에 가까움. PUSH 명령에 의해서 Stack에 값이 추가되면, ESP는 Stack Top을 향해 움직이고, POP 명령에 의해 Stack에서 값이 제거되면, ESP는 Stack Bottom을 향해 움직임. 즉 높은 주소에서 낮은 주소 뱡향으로 스택이 자라난다. "스택은 거꾸로 자란다." 스택에 값을 입력하면(PUSH) ESP는 감소하고, 스택에서 값을 꺼내면(POP) ESP는 증가한다.

    Computer Science/Reverse Core 2020. 1. 14. 16:37

    Reverse Core 4장

    CPU Register : CPU 내부에 존재하는 다목적 저장 공간. IA-32 Register Basic program execution registers x87 FPU registers MMX registers XMM registers Control registers Memory management registers Debug registers Memory type range registers Machine specific registers Machine check register ... Basic program execution registers General Purpose Registers (32bit - 8) Segment Registers (16bit - 6) Program Status and..

    Computer Science/Reverse Core 2020. 1. 14. 16:28

    Reverse Core 3장

    바이트 오더링 0x12345678 : Big[12 34 56 78] Little[78 56 34 12] Big Endian : 사람이 보기에 직관적임. 대형 UNIX 서버에 사용되는 RISC 계열의 CPU에서 많이 사용됨. 네트워크 프로토콜에 사용됨. Little Endian : Intel x86 CPU에서 사용됨. 산술 연산과 데이터의 타입이 확장/축소될 때 더 효율적임.

    Computer Science/Reverse Core 2020. 1. 14. 15:36

    Reverse Core 2장

    Build Mode Debug Mode : 실행파일에 디버깅 정보를 포함하여 언제든지 디버깅이 가능함. Release Mode 보다 더 큰 메모리를 사용함. 디버그에 필요한 정보들을 실행 시 계속 체크하기 때문에 속도가 느려짐. Release Mode : 디버그에 필요한 정보가 없고, 코드를 최적화하여 실행파일의 크기를 줄여줌. 초기화를 하지 않으며, 같은 문자열 상수라도 서로 다른 공간에 할당됨. 메모리 사용, 속도 측면에서 디버그 모드보다 좋음. 더 이상 문제점이 없을때 빌드하는걸 추천. Debugger EP(Entry Point) : Windows 실행 파일 (EXE, DLL, SYS 등)의 코드 시작점을 의미함. 프로그램이 실행될때 CPU에 의해 가장 먼저 실행되는 코드 시작 위치. Stub Co..

    Computer Science/Reverse Core 2020. 1. 14. 14:21

    Reverse Core 1장

    리버싱(분석) 방법 정적 분석 : 파일을 실행시키지 않고, 파일의 겉모습을 관찰하여 분석하는 방법. 파일의 종류 (EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE)정보, Import/Export API, 내부 문자열.. 다양한 내용 확인. 동적 분석 : 파일을 실행시켜서, 디버깅을 통하여 코드 흐름과 메모리 상태를 관찰하여 분석하는 방법. 파일, 레지스트리(Registry), 네트워크 등을 관찰하면서 프로그램의 행위 분석. ※ 리버싱 != 디버깅 : 디버깅은 리버싱 방법 중에서 비중이 큰 리버싱의 하위 개념. Patch : 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업. Crack : 패치와 같은 개념이지만 특별히 그 의도가 비 합법적이고 비도덕적인 경우.

    Computer Science/Reverse Core 2020. 1. 14. 13:43

    추가 정보

    페이징

    이전
    1
    다음
    TISTORY
    pwnkidhn.github.io © rvkhun
    페이스북 트위터 인스타그램 유투브 메일

    티스토리툴바