안녕하세요. Ani Gil [아니길]입니다 오랜만에 글을 씁니다 몇개월 정도 된거 같네요

 

그 몇개월동안 많은 변화가 있었습니다. 헛소리 집어 치우고 본론으로 넘어가봅니다.

일단 저는 보안쪽을 약간만 알아서, 이 자격증 같은경우 다른 IT 자격증과 다르게 강의를 다 듣고 시험을

 

응시 할 수 있더라구요. 일단 강의 진도율이 80%가 넘으면 응시할 수  있다고 합니다. 여러분들도 한번 해보시길..

 

아무튼간에 "해킹보안전문가 주니어" 자격증은 기초적인 보안관련과 IT 관련해서 나온 문제들이 꽤나 있었구요

 

늅늅이분들한테는 굉장히까진 아니지만 도움이 될만한 자격증이라고 생각됩니다.

 

"해킹보안전문가 3급" 자격증 같은 경우에는 뭐 위와 같이 강의는 안보고(그냥틀어놓으면 알아서 진도율 올라감)

 

시험에만 응시해봤더니 그래도 제가 아는 부분이 약간이라도 있어서 저 점수를 받게 된거 같습니다.

 

뭐... 이 자격증은 따로 필요해서 딴게 아니고 그냥 인터넷에 "해킹 관련 자격증"을 쳐보니 있더라구요 

 

그래서 냉큼 땄는데 나중에 6개월뒤 "해킹보안전문가 2급"을 응시 할 수 있다는데 2급같은경우에는

 

서울에 올라가서 봐야합니다... 광주에서 서울이라.. 그것도 11시에 시험 시작하면 버스는 최소 6시 차를 타야겠네요.. ㅎ

 

암튼간에 6개월 뒤인 12월달 이번년도 마지막회차에 보시는분들 모두들 화이팅입니다.



안녕하세요. 아니길 입니다.

오늘은 이것이 C언어 서적리뷰를 해볼려고 합니다.


개인적으로 별점은 ★★★★☆ 5개중 4개를 드리고 싶습니다.

현재 책은 다 읽은 상태에서 평을 드립니다.


일단 이 책의 좋은점 즉 장점을 뽑아 보자하면은

예제가 무수히 많다는겁니다. 인강 또한 유튜브에 게시되어 있어, 이해하기 힘든 부분은


인강으로 접할 수 있다는게 제일 큰 장점이라고 생각됩니다.

챕터는 모두 19챕터로 되어있습니다.


이 말의 즉은 하나하나씩 세세하게 알려준다는 점이 좋은거같습니다.

또한 19챕터 뒤에 알고리즘부분도 공부할 수 있는 부분이 존재하여


배운 프로그래밍을 활용성을 더욱 높게 끌어준다고 생각됩니다.


하지만 단점을 보자면 예제중 실행이 안되거나 오류가 있는 예제가 작게 있습니다.

gets함수같은경우 애초에 visual studio에서 막아버린거 같아서 안되구요 (원레 안쓰지만)


이 책이 2014년도 즉 5년전꺼라서 통합환경 개발툴인 visual studio 버전도 달라 예제를 진행하는

부분에서 불편함이 있잖아 없는거 같습니다.


개인적으로 이 책에 대해서 모든 평가를 종합하자면 지은이인 서현우 강사님의 유튜브에 올라온

이것이 C언어다 강의를 먼저 보고 공부하는게 더 효율적이라고 생각됩니다.


아무튼 C언어를 공부하는데 매우 많은 도움을 준 책이라고 생각됩니다.

지인 분들에게도 추천하고 싶은책이기도 합니다.



이것으로 책립ㅠ를 마치겠습니다 (다음 리뷰는 이것이C++이다)


'IT관련 서적 리뷰 > 프로그래밍 서적' 카테고리의 다른 글

[서적리뷰] 이것이 C언어다  (0) 2019.02.22

Ani Gil

PE구조 살피기





IMAGE_DOS_HEADR

EXEDLLWin Hex, Hewin 등으로 열어서 봤을 때 가장 맨 처음 부분에 해당하는 버퍼이고 무수히 많은 멤버가 존재하고 파일의 맨 처음부분에 해당한다.

또한 첫 번째 필드인 e_magic 과 마지막 e_lfanew 만 여겨 보면 된다.

 

e_magic : 현재 파일이 PE파일인지 체크하는 용도이다.

MZ (5A4D)의 값을 가지고 있고 여기서 MZPE를 개발한 Mark Zbikowski의 약어다.

e_lfanew : IMAGE_NT_HEADER의 구조체 위치를 알아내는데 사용되는 값 이다. 실질적인 PE의 오프셋이 어딘지 이 필드를 통해 지정하게 됨.

PIMAGE_NT_HEADERS 사용을 위한 준비작업이다.

 

 

IMAGE_NT_HEADER

PE\0\0을 표시하는 4바이트 값(50 45 00 00)이 되고 PE파일임일 표시하는 용도이다. (사실상 무시해도 무관함)

 

 

IMAGE_FILE_HEADER

이 구조체는 파일을 실행하기 위한 가장 기본적인 데이터가 담겨있는 구조체라고 할 수 있다.

주요필드는 Machine, NuberOfSections, TimeDateStamp, SizeOfOptionalHeader, Characteristics 이다. [겁나 어려움]

 

Machine : 어떤 CPU에서 이 파일이 실행되는지 알려준다.

일반적인 컴퓨터/노트북 이면 넘어가도된다.

 

NumberOfSections : 섹션이 몇 개 있는지 알려준다. 이 필드의 섹션의 개수는 4이며, .text, .rdatz, .data, .rsrc 이다.

섹션? .text.data 같은 코드/데이터 섹션을 일컫는다.

 

TimeDateStamp : 이 파일을 빌드한 날짜를 알려준다.

 

SizeOFOptionalHeader : IMAGE_OPTIONAL_HEADER32의 구조체 크기를 알려준다. PE Lode에서는 이 값을 먼저 확인하고 위의 구조체

HEADER32을 처리한다.

 

Characteristics : 현재 파일이 어떤 형식인지 알려준다. 예를 들어서 EXE 파일, DLL파일 등 구분하는 용도로만 생각하면된다.

 

 

IMAGE_OPTIONAL_HEADER

PE 구조체중 중요한 값을 가장 많이 담긴 구조체에 대해서 알아보자.

 

Magic : 표식이다. 32bit0x10B, 64bit0x20B가 된다.

 

SizeOfCode : 코드 양의 전체 크기를 가리킨다.

 

MajorLinkerVersion, MinorLinkerVersion : 어떤 버전의 컴파일러로 빌드했는지 알려준다. DevVIsual Studio

 

ImageBase : 실제 가상 메모리에 올라가는 번지를 가르킨다.

대부분 0x400000 번지로 된다. DLL0x10000000 번지이다.

 

 

 

AddressOfEntryPoint : 엔트리 포인트를 말한다. Image Base와 더하면 시작지점의 값이 나온다.

 

BaseOfCode : 실제 코드가 실행되는 번지이다. Image Base와 더한 값부터 시작된다. 특별한 일이 없는 한 0x1000 으로 지정되어 있다.

 

SectionAlignment, FileAlignment : 각 섹션을 정렬하기 위한 저장 단위 이다. ) .text800byte 라면 SectionAlignment0x1000 이므로 1000-800 = 200byte0으로 채워지고 다음 섹션이 나온다.

 

SizeOfImage : EXE/DLL () 메모리에 로딩됐을 때의 전체 크기이다.

로더가 이 필드를 보고 메모리의 공간을 확보하게 된다. 이 값은 반드시 Sechin Algnment의 배수가 된다.

 

SizeOfHeaders : PE 헤더의 크기를 알려주는 필드이다.

 

SubSystem : 이 프로그램이 GUI인지 CUI인지 알려주는 역할을 한다.

0x1 : *.sys 같은 드라이버모듈, 0x2 : GUI, 0x3 : CUI

 

DataDirectory : IMAGE_DATA_DIRECOTORY의 구조체로서

VitualAddressSize라는 필드가 포함돼 있다. 익스포트 디렉터리나

임포트 디렉터리, 리소스디렉터리, IAT 각각의 가상 주소와 크기를

이 필드를 통해 알 수 있다. 또한

IMAGE_NUMBEROF_DIRECTORY_ENTRIES16으로 정의되어있다.

 

IMGE_SECTION_HEADER : 주로 각 섹션에 대한 이름을 비롯하여,

시작 주소와 사이즈 등의 정보를 관리하는 구조체 이다. 우리가 말하는

코드섹션, 데이터섹션 등을 구할 수 있다.

+ Recent posts