일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 디컴파일러
- 프로토콜
- hxd
- 포렌식
- 리버스 엔지니어링
- 인트라넷
- 버프 스위트
- REGA
- 네트워크목적
- 보안위협
- 보안대책
- 원격접속툴
- WEFA
- 디버거
- 역공학
- 컴퓨터네트워크
- 로그분석
- 네트워크구성
- 웹포렌식
- 프록시
- CSMA/CD
- 엑스트라넷
- 리소스공유
- WebGoat
- MAC 주소
- 네트워크장비
- 허브
- 리버싱
- 기계어
- ISA
- Today
- Total
목록리버싱 (3)
IT 따라잡기 시리즈
컴파일러는 우리가 프로그래밍 언어로 소스코드를 작성하면 이를 기계어로 번역합니다. 여기서 기계어는 2진수로 표현되어 CPU는 이를 해석하고 처리합니다. 기계어는 주로 명령을 나타내는 OP 코드와 그 명령의 피 연산자인 오퍼랜드로 정의 됩니다. OP 코드의 길이는 ISA에 의해 정의되며 x86의 경우 4byte의 크기를 가집니다. 문제는 OP코드와 오퍼랜드가 2진수로 이루어져 있기 때문에 우리가 보고 해석하기 힘들다는 것입니다. 때문에 우리는 디컴파일 과정을 거쳐 기계어를 사람이 볼 수 있는 형태로 만듭니다. 우리가 기계어를 해석해야하는 경우는 여러 경우가 있지만, 대표적인 경우는 디버깅입니다. 디버깅은 프로그램을 만들때 그 오류를 찾아 해결하는 과정인데, 이때 기계어를 분석하여 프로그램이 어떻게 흘러가는..
CPU는 수학적인 계산을 할 수 있는 회로를 가지고 있습니다. 또 작은 정보를 저장할 수 있는 저장공간을 가지고 있습니다. --- CPU가 덧셈을 하는 과정을 상상해보겠습니다. CPU는 R0라는 이름을 가진 저장공간에 1이라는 숫자를 가지고 있습니다. 또 R1이라는 이름을 가진 저장공간에 2라는 숫자를 가지고 있습니다. CPU는 R0와 R1을 더하라는 '명령'을 받습니다. 명령대로 CPU는 덧셈을 하는 회로를 통해 R0와 R1을 더하고 R0에 다시 그 값을 저장했습니다. --- CPU는 레지스터라는 여러 용도로 사용할 수 있는 저장공간을 가지고 있습니다. 이 저장공간 안에 있는 값을 이용하여 계산을 하거나 다른 저장공간의 위치 정보를 불러올 수 있습니다. 동일한 CPU라고 가정할때 물리적으로 레지스터 한..
* 리버스 엔지니어링 강의에 오신것을 환영합니다! 이 강의의 목표는 누군가의 도움 없이 스스로 정보를 찾아서 공부할 수 있을 때까지 리버싱 실력을 키우는데에 있습니다. 먼저 리버스 엔지니어링을 하기 위해선 기본 지식이 필요합니다. 첫째로 필요한 지식은 컴퓨터라는 장치에 대한 전반적인 이해(CPU, 램 등이 무엇인지)이며, 두번째는 컴퓨터 프로그래밍 언어와 컴파일러에 대한 이론(특히 C언어[여기서는 C언어를 쓸것이기 때문에])입니다. 다른 부가적인 것들(운영체제에 관한 지식이라던가[스레드 등등], 보안에 관한 지식이라던가[메모리 보호기법 등]..)은 알고있으면 이해에 대한 폭이 넓어질 것 같습니다(이런 저런 연결되면서). 물론 리버스 엔지니어링을 공부하려 하는 사람이라면 필요한 기본 지식들은 다 알고 있을..