본문 바로가기

해킹 공부

[NOOBHACK] 어셈블리어란

해킹을 배운다면 정말정말 중요한 어셈블리어에 대해 배워보자

일단 어셈블리어란 프로그래밍 언어인데 이게 좀 저급 언어다

 

언어로서 질이 낮다는게 아니라 프로그래밍 언어 중 고급 언어와 저급 언어로 나뉘는데

 

고급 언어 일수록 사람이 쉽게 이해하고 읽을 수 있는 언어다(파이썬, C언어,자바 등등)

저급 언어 일수록 사람보다는 컴퓨터가 쉽게 읽을 수 있는 언어다(어셈블리어)

 

근데 컴퓨터가 제일 쉽게 읽을 수 있는 언어라면 바이너리 코드지만 인간이 바이너리 코드를 읽다가

골로 가버릴수 있기 때문에 바이너리 코드를 쉽게 읽을 수 있는 언어가 어셈블리어다

 

즉 정리하자면

바이너리 코드를 쉽게 읽을 수 있게 만든 언어가 어셈블리어고 어셈블리어를 쉽게 읽을 수 있게 만든 언어가

파이썬,C언어 등등 이런 것이다

 

바이너리->어셈블리어->C언어

 

그럼 어셈블리어의 특징을 알아보자

 

1.난이도

일단 더럽게 어렵다 처음 코딩을 접하면 파이썬을 먼저 배울 텐데 C언어는 printf함수 하나면 되지만

어셈블리어는 출력 하나 가지고 코드를 겁내 뻥튀기 한다

 

이 코드는 어셈블리어로 printf문을 실행하는 코드다

뭐야 이거 무서워

 

어셈블리어는 작동 하나하나를 다 보여주며 변수 할당과 주소 마저 일일이 다 보여주므로

가독성은 정말 떨어진다고 보면 된다

 

어셈블리어로 프로그래밍이 가능한 사람은 정말 극소수이며 이 사람들은 최고의 개발인력이라 봐도 무방하다

그래서 어렵다 하지만 해킹을 위해서라면 꼭 필요하다 배워보자

 

2.속도

일단 게임마냥 "어렵지만 잘 쓰면 사기" 라는게 여기서도 통하는지 속도하나는 C언어하고 비교가 안될 정도로 빠르다

참고로 C언어도 기계와 가까운 언어이기에 파이썬 보다 2~140배는 빠르다

 

어려운만큼 사기인 언어다

근데 이 언어가 은근 지금도 쏠쏠하게 많이 쓰인다 요즘 컴퓨터의 CPU는 날이 갈수록 작아지는데

그게 가능한 이유가 어셈블리어로 만든 컴퓨터기 때문에  정말 빠른 것이다

 

 

3.생산성

일단 최악의 단점으로 손 꼽힌다 코드가 긴 만큼 사람이 일일이 이해하고 작성하는건 매우 어려운 일이며 매우 오래 걸린다

파이썬은 한 줄 이면 끝날 문장을 어셈블리어로 쓰면 매우 길고 가독성도 떨어지기에 생산성 하나 만큼은 저급 언어의 특징 인 만큼 매우 떨어진다