crt

Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

CRT 뽀개기 : 

CRT 뽀개기 신영진

누규? : 

누규? 신영진 codewiz, codewiz@gmail.com @codemaru http://www.jiniya.net Microsoft Visual C++ MVP 월간 마이크로소프트웨어 필자 ㈜웰비아닷컴 게임보안 제품 개발

핵심 주제 : 

핵심 주제 멀티스레드 CRT 버퍼 보안 검사 전역 변수 초기화

CRT 일반론 : 

CRT 일반론

CRT가 먼가요? : 

CRT가 먼가요? C/C++ Runtime Library C/C++ 표준 함수들을 포함하고 있는 라이브러리

CRT도 종류가 있다? : 

CRT도 종류가 있다? 디버그와 릴리즈 멀티스레드와 싱글스레드(2005부터 삭제됨) 정적 라이브러리와 동적 라이브러리

디버그 vs 릴리즈 : 

디버그 vs 릴리즈 Release 모드에서 lpReserved를 건드리면 쪼다 된다는거 DllMain(instance, reason, lpReserved)

멀티스레드 vs 싱글스레드 : 

멀티스레드 vs 싱글스레드

멀티스레드 버전은? : 

멀티스레드 버전은?

_getptd : 

_getptd

__flsindex는 어디서 왔는가? : 

__flsindex는 어디서 왔는가? _mainCRTStartup => mtinit

tiddata : 

tiddata

그래서 결론은? : 

그래서 결론은?

Slide 16: 

1번 스레드 2번 스레드 3번 스레드 ptd ptd ptd

정적 vs 동적 라이브러리 : 

정적 vs 동적 라이브러리 CRT EXE CRT DLL EXE CRT DLL DLL

CRT 종류 : 

CRT 종류

CRT 설정하기 : 

CRT 설정하기

라이브러리 충돌 : 

CRT DLL a.lib 라이브러리 충돌 CRT EXE

해결방법 : 

해결방법

CRT가 하는 일? : 

CRT가 하는 일? C/C++ 표준 함수 제공 프로그램 초기화/클린업 예외 처리 지원 안전한 예외 처리기(Safe SEH) 버퍼 보안 검사 64비트 정수 연산 지원 스택 관리 자체 힙 관리 전역 변수 초기화 우리가 모르는 온갖 잡다한 일들,…

버퍼 보안 검사 : 

버퍼 보안 검사

버퍼 보안 검사 : 

버퍼 보안 검사

Slide 26: 

Buffer Buffer EBP RET ADDR Input Size

Slide 27: 

Buffer Buffer Security Cookie EBP RET ADDR

Slide 29: 

push ebp mov ebp, esp sub esp, 0Ch mov eax, dword ptr [__security_cookie] xor eax, ebp mov dword ptr [ebp – 4], eax

Slide 30: 

mov ecx, dword ptr [ebp – 4] xor ecx, ebp call _security_check_cookie mov esp, ebp pop ebp ret

__security_check_cookie : 

__security_check_cookie

전역 변수 초기화 : 

전역 변수 초기화

전역 변수 초기화 : 

전역 변수 초기화

dumpbin : 

dumpbin

cinit : 

cinit

_initterm : 

_initterm

.CRT$X… : 

.CRT$X…

스택 관리 기법 : 

스택 관리 기법

스택 할당 : 

스택 할당

윈도우 스택 관리 메커니즘 : 

윈도우 스택 관리 메커니즘 Reserved Reserved Guard Page Commit Commit Reserved Guard Page Commit Commit Commit EXCEPTION GUARD PAGE

_chkstk : 

_chkstk

예외 처리 : 

예외 처리

C++ Exception, SEH : 

C++ Exception, SEH

C++ Exception : 

C++ Exception

CRT 전용 힙 : 

CRT 전용 힙

malloc : 

malloc

malloc_base : 

malloc_base

heap_alloc : 

heap_alloc

heap_init : 

heap_init

new/delete 문제 : 

new/delete 문제

new/delete 문제 : 

new/delete 문제 CRT EXE CRT DLL

감사합니다. 끝~ : 

감사합니다. 끝~

authorStream Live Help