분류 전체보기

시스템 보안/이론

[System] 아키텍처의 종류

아키텍처의 종류 아키텍처는 크게 x86과 arm으로 나눈다. 프로세서 아키텍처는 프로세서가 명령어를 해석하고 실행하는 방식을 결정한다. x86 & x64 x86은 인텔이 개발한 32비트 프로세서 아키텍처로, 데스크탑 컴퓨터나 노트북 컴퓨터에 주로 사용된다. x64는 x86의 64비트 확장 버전으로, 더 많은 메모리와 레지스터를 지원하며 성능이 향상된다. x86과 x64는 CISC(Complex Instruction Set Computing)라는 방식을 사용하는 프로세서 아키텍처이다. CISC는 복잡하고 다양한 명령어를 제공하여 하드웨어 수준에서 프로그래밍을 쉽게 해준다. arm & arm64 arm은 저전력과 고성능을 갖춘 32비트 프로세서 아키텍처로, 스마트폰이나 태블릿 같은 모바일 기기에 주로 사용된..

시스템 보안/이론

[System] 아키텍처란 무엇인가?

아키텍처란 무엇인가? 아키텍처는 IT 시스템의 구조이다. 시스템의 구성 요소와 하위 시스템, 그리고 그것들이 작동하는 방식을 정의하는 개념적 모델이다. 아키텍처는 시스템의 목적을 달성하기 위해 각 컴포넌트가 무엇이고 어떻게 상호작용하고 정보가 어떻게 교환되는지를 설명한다. 논리적 아키텍처 VS 물리적 아키텍처 논리적 아키텍처는 시스템의 기능과 행위를 나타내고., 물리적 아키텍처는 시스템의 하드웨어와 소프트웨어를 나타낸다. 또한, 고수준 아키텍처는 시스템의 전체적인 개요와 목표를 제공하고, 저수준 아키텍처는 시스템의 세부적인 구현과 최적화를 제공한다. 아키텍처의 예시 아키텍처의 유형에 따라 "하드웨어", "소프트웨어", "기업", "협업 시스템" 아키텍처가 있다. 각 유형의 아키텍처는 다른 구성 요소와 특..

시스템 보안/이론

[System] 고급언어, 저급언어, 기계어란 무엇인가?

프로그램 언어의 종류 프로그램 언어에는 "저급 언어"와 "고급 언어"가 있다. 1. 저급언어 저급언어는 컴퓨터가 이해하기 귀운 이진법으로 이루어진 언어다. 하지만, 가독성과 생산성이 낮다. 반대로 프로그램가 속도가 빠르며, 크기 또한 고급언어 보다 작다. 저급언어의 좋류에는 기계어와 어셈블리어 등이 있다. 2. 기계어 기계어는 프로그램을 나타내는 가장 낮은 단계의 개념이다. CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어다. 비트란 0과 1로 이루어진 이진수로, 컴퓨터의 전류를 제어하는 방식이다. 기계어는 어셈블리어와 1:1로 대응되는데, 어셈블리어는 기계어를 사람이 이해하기 쉬운 단어로 표한한 것이다. 3. 고급언어 고급언어는 사람이 이해하기 쉬운 프로그래밍 언어를 말한다. 고급언..

안드로이드 보안/이론

[Android] NDK란?

NDK란? Android에서 NDK를 다음과 같이 정의하고 있다. C 및 C++와 같은 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있게 하는 도구 모음이다. NDK가 왜 필요한가? Apk개발을 하다가 자신 또는 다른 개발자의 C 및 C++ 라이브러리를 사용해야 하는경우에 유용하다. 또한, 게임이나 머신런닝과 같은 고성능의 계산을 요하는 프로그램들은 Java나 Kotlin으로 만들었 때 결과가 만족스럽지 않을 수 있다. 따라서 C 및 C++ 과 같은 네이티브 코드로 제작이 필요할 때 사용하면 유용하다.

안드로이드 보안/이론

[Android] 안드로이드에서 사용하는 Java

안드로이드에서 사용하는 Java Apk는 원래 가상머신 위에서 동작하였다. 하지만 현재는 이를 대신해 ART(Android RunTime)을 사용한다. 따라서 가상머신이 없어도 가상머신 위에서 동작한다는 점에서 Java의 동작 구조를 띄고있다. 기존에는 주로 Java를 사용하여 앱을 개발하였지만, Google에서 코틀린(Kotlin)을 공식 언어로 채택 후 코틀린을 사용하여 앱을 개발하는 기업이 늘어나고 있다. Kotlin과 Java의 차이 Kotlin과 Java는 100% 호환이 된다. 또한, Kotlin으로 앱을 개발하였을 때와 Java로 개발하였을 때를 비교하면 Kotlin의 코드가 현저히 적다.

안드로이드 보안/이론

[Android] JNI(Java Native Interface)란?

JNI(Java Native Interface)란? Java Native Interface는 자바가 다른 언어로 만들어진 Application과 상호 작용할 수 있는 인터페이스를 제공한다. 간단히 말하면 Java와 다른 언어를 연동하는 솔류션이다. 왜 JNI가 필요한가? 바로 Java의 한계를 극복하기 위해 JNI(Java Native Interface)가 필요하다. Java의 한계 Native Code에 비해 느림 하드웨어 제어 낮은 호환성 기존의 시스템과의 연계 문제 사용방법 사용방법은 6단계로 나눈다. 사용방법 1단계 Native Method를 선언하는 Java Class 작성 2단계 1단계에서 작성한 Class Compile 3단계 javah를 사용하여 Native Method가 사용할 Heade..