Jiyong's STUDY

[기초] 기본 구조 본문

보안/리버싱, 어셈블리

[기초] 기본 구조

Kingjiyong 2020. 7. 16. 11:21

냉장고에서 물을 꺼내서 마신다는 경우에,

C/C++ 코드로 작성한다면

 

void 물마심(){

     bool b0pen = 냉장고문오픈();

     if (b0pen){

         물을꺼냄();

         마심();

     }

}

 

이런식이 된다. 

 

하지만 이것을 어셈블리어로 표현한다면?

 

_asm{

     냉장고앞으로간다

     냉장고문을잡는다

     냉장고문을연다

   오픈성공:

     냉장고안을본다

     손을든다

     냉장고안에넣는다

     물병을잡는다

     물병을꺼낸다

뚜껑을연다

물을컵에따른다

컵을손에든다

컵에든것을마신다

 

이런식이다.

 

차이점은 간단하게는 "한 가지 동작"을 한다는 것이다.

어셈블리어는 한 번에 한 가지 동작밖에 하지 못한다.

 

즉 짧은 코드도 어셈블리어로 바꾸면 엄청나게 길어진다는 점이 있는데, 이를 해석하는 방법을 알아야 한다.