본문 바로가기
  • 안아주는 다람쥐

seKUrity_Study : System & Reversing14

[system] 메모리구조란? 프로그램 실행 순서 메모리 영역에 관해 이야기하기 전에 어떤식으로 프러그램이 실행되는지 과정을 살펴 보겠습니다. 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보실 수 있으실텐데, 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다. 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있습니다. 코드(Code) 영역 우리가 작성한 소스코드가 들어 가는 부분. 즉, 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code)영역이라고도 부른다. 코드영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 여기에 지정된다. 데이터(Data) 영역 전역변수와 static변수가 할당되는 영역 프로그램의 시작과 동시에 할당되고, 프로.. 2023. 3. 10.
[ System ] 어셈블리어에 대하여 1. 어셈블리어란? 어셈블리어(Assembly language)는 컴퓨터 아키텍처의 명령어를 기반으로 하는 저급 언어로, 기계어보다 이해하기 쉽고 수정하기도 쉽습니다. 어셈블리어는 기계어의 대부분 명령어를 가지고 있으며, 기계어의 문제점인 가독성과 수정 용이성을 개선하고자 만들어졌습니다. 즉 어셈블리어란 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어입니다. 2. 어셈블리어의 특징 1. 하드웨어에 직접 접근 어셈블리어는 CPU가 직접 이해할 수 있는 기계어로 작성되기 때문에 하드웨어에 직접적으로 접근할 수 있습니다. 따라서 어셈블리어는 하드웨어와의 상호작용이 필요한 시스템 프로그래밍, 임베디드 시스템, 드라이버 등에서 많이 사.. 2023. 3. 9.
[System] CPU의 아키텍쳐의 종류별 특징 1. x86 아키텍처 인텔(Intel)에서 개발한 32비트 프로세서 아키텍처 현재 대부분의 PC와 서버에서 사용되는 아키텍처 하드웨어와 소프트웨어의 호환성이 높고, 다양한 애플리케이션과 운영체제가 지원됨 2. x64 아키텍쳐 인텔(Intel)과 AMD에서 개발한 64비트 프로세서 아키텍처 더 큰 메모리 용량과 더 높은 성능을 지원하며, 32비트 프로그램도 실행 가능 x86과 마찬가지로 다양한 애플리케이션과 운영체제가 지원됨 3. ARM 아키텍쳐 영국의 ARM Holdings에서 개발한 저전력 프로세서 아키텍처 모바일 기기나 임베디드 시스템에서 주로 사용되며, 대표적인 예로 스마트폰과 태블릿 PC가 있음 저전력, 소형, 경량화 등의 특징을 가지고 있으며, 안정성과 보안성이 높음 x86 x64 아키텍쳐의 c.. 2023. 3. 9.
[System] 아키텍쳐란 무엇인가? IT 업계에서 흔히 아키텍쳐라 하면, 시스템, 소프트웨어, 하드웨어 또는 어떤 다른 복잡한 시스템의 구조나 구성을 설계하는 것을 의미합니다. 시스템의 구성요소와 그들 간의 상호작용, 그리고 시스템의 기능적 및 비기능적 요구사항을 고려하여 설계되는 경우가 대부분입니다. 소프트웨어 아키텍처는 소프트웨어 시스템의 구조와 그 구조를 설계하는 과정을 의미합니다. 소프트웨어 아키텍처는 소프트웨어 시스템의 요구사항, 사용자 인터페이스, 데이터베이스, 하드웨어, 네트워크 및 보안 등 다양한 측면을 고려하여 설계됩니다. 아키텍처는 시스템의 성능, 안정성, 확장성, 유지보수성, 재사용성, 보안성 등을 결정하는 중요한 역할을 합니다. 적절한 아키텍처 설계는 시스템이 장기간에 걸쳐 변경되거나 발전할 때 유연하게 대응할 수 있.. 2023. 3. 9.
[system] 고급언어, 저급언어, 기계어란 무엇인가 이번시간에는 고급언어, 저급언어와 기계어에 대해서 알아보겠습니다. 일단 시작하기에 앞서 이 고급언어와 저급언어 그리고 기계어는 프로그래밍 언어의 한 종류를 나타냅니다! 프로그래밍 언어란? 프로그래밍 언어는 컴퓨터에게 명령을 전달하여 작업을 수행하는 데 사용되는 형식 언어를 뜻합니다. 쉽게 정리하자면, 개발자가 컴퓨터에게 명령을 내리기 위해 컴퓨터가 이해할 수 있는 명령어를 작성하고, 컴퓨터는 이를 실행하여 원하는 작업을 할 수 있게끔 하는것이 프로그래밍 언어입니다. 한마디로 정리하자면 컴퓨터와 개발자사이의 대화 수단 (언어)! 라고 생각하시면 편할것 같습니다. 아까 말했듯이 고급언어와 저급언어 기계어는 모두 프로그래밍 언어의 한 종류입니다. 그럼 이어서 고급언어에 대해서 알아보도록 하겠습니다! 고급 언어.. 2023. 3. 9.