반응형

PC리버싱 134

IAT (Import Address Table / PE File 관련)

IAT(Import Address Table) · Windows의 Program이 어떤 Library에서 어떤 함수를 사용하고 있는지를 기술한 Table · PE File 내의 특정 구조체인 'IMAGE_IMPORT_DESCRIPTOR'에 Import에 관한 정보를 저장한다. · PE Header에서 Table은 배열을 의미한다. · 각 Section마다 존재한다. 1. IMAGE_IMPORT_DESCRIPTOR 구조체 typedef struct _IMAGE_IMPORT_DESCRIPTOR{ union { DWORD Characteristics; DWORD OriginalFirstThunk; }; DWORD TimeDataStamp; DWORD ForwarderChain; DWORD Name; DWORD..

함수 호출 규약 (Calling Convention)

1. 함수 호출 규약 개요 함수 호출 규약(Calling Convention)이란, 함수를 호출하는 방식에 대한 약속이다. 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종류를 구분한다. 예시 코드를 분석해 각 호출 규약의 특징과 진행 과정을 알아본다. ▶Stack Frame 함수를 호출 할 때 상위에서 진행하던 함수의 정보를 저장하고 인자를 전달하기 위해 Stack Frame이라는 구조를 사용한다. Stack Frame은 함수의 호출 과정에서 호출되는 함수가 사용하기 위해 할당되는 Stack의 공간을 의미한다. 프로그램이 실행되면 가장 먼저 Main 함수의 Stack Frame을 할당한다. Main함수가 A 함수를 호출하면서 A의 Stack Fra..

visual studio 보안해제하기

[GS (Stack Canary/Cookie) 해제법] 프로젝트 속성 -> C/C++ -> 코드 생성 -> 보안 검사 -> 보안 검사 사용 안 함(/GS-) 으로 변경. 함수 프롤로그 이후 스택에 버퍼 할당 전에 랜덤한 값을 Push해 두고, 함수 에필로그 직전에 검사하여 변조되었는지 체크하는 보호 기법. 보통 윈도우에서는 GS 또는 Stack Cookie라고 불리고 리눅스에서는 Stack Canary라고 불리지만 그거나 그거나이므로 넘어가자. [DEP(NX) 해제법] 프로젝트 속성 -> 링커 -> 고급 -> DEP(데이터 실행 방지) -> 아니요(/NXCOMPAT:NO) 로 변경. 각 페이지마다 Read/Write/Execute 권한 플래그를 설정하여 Write/Execute 권한을 동시에 주지 않는 ..

PC리버싱/기타 2020.05.21

간단한 ASLR우회 방법

aslr 이란 ? address space layout randomization 즉, 주소의 공간을 무작위로 배치한다 라는 뜻입니다. 리버싱 방지 기술 중에 하나입니다. 그럼 오늘은 aslr을 제거 하는 방법에 대해서 소개하도록 하겠습니다 aslr은 또한 reloc section이있을시 aslr이라는 힌트도잇다 방법1 CTF exploer님에게 맡기세요 dll can move 체크를뺴면된다 방법2 준비물 : aslr 이 적용된 프로그램 , hexediter , peview, x64dbg peview 프로그램을 사용하여 aslr 이 존재하는지에 대해서 판단합니다. 1. peview 에대 대상 파일을 올립니다.(저는 minesweeper.exe) 여기서 IMAGE_INT_HEADER에 들어갑니다. 위와 같이..

(06)RVA VA에대해서

1. RVA, RAW, VA RVA( Relative Virtual Address )는 파일이 메모리에 로딩 되었을 때의 상대 주소입니다. RAW( File Offset )는 파일상태에서의 주소값 입니다. 2. RVA, RAW 매핑 관계 RVA주소로 RAW 값을 구할 수 있는데 공식은 아래와 같습니다. 공식 : RAW(Offset) = RVA - Virtual Address + PointerToRawData PEView와 X64dbg를 이용해서 공식을 확인해 보겠습니다. a. PEView와 X64dbg로 Crackme1 파일을 로드합니다. b. ImageBase = 0x4000000 c.1st crackme가 0x402000에있으니 RVA는 0x4000000 - 0x402000 = 2000 RVA는 20..

(05)PE구조 상세

PE 헤더(PE Header) 실행 파일을 실행하기 위한 여러가지 정보가 기록이 되어 있으며, PE의 내용을 가지고 DLL를 로드하거나 여러가지 리소스를 할당하는 등 상당히 많은 정보가 PE 헤더에 저장되어 있습니다. 중요한 정보가 담긴 만큼, 이 영역의 일부가 누락되거나 손상되는 경우가 있으면 정상적으로 해당 파일을 실행할 수 없습니다. 파일을 백업해두고 HEX 코드 일부를 수정하시고 저장하셔서 실행을 하여 어떠한 결과를 초래하는지 보세요. PE 구조는 차례대로 DOS Header, Stub Code, PE Header(File Header, Optional Header 포함), Section Header로 나뉘며 그 뒤에는 보통 코드를 포함하는 코드(.text) 섹션, 전역 변수 혹은 정적 변수를 포..

반응형