본문 바로가기

Computer/0x06 리버스엔지니어링

리버스엔지니어링 2화 기초 어셈블리어

리버스엔지니어링 2화 기초 어셈블리어



어셈블리어(Assembly)

: 기계어와 1 대 1로 대응하는 언어로 사람이 이해하기 쉽게 약간 변형시킨 언어 입니다. 기계어와 가장 가깝기 때문에

그 기계의 특성을 가장 잘 살릴 수 있다는 것이 장점 입니다. 또 고속의 가상 프로그램이 가능한 것도 

어셈블리어의 특징 입니다. 그러나 각 컴퓨터에 따라 다르기 떄문에 다른 기계인 경우는 이식 작업을 해야 합니다.

이 과정이 매우 복잡하고 또 어렵기 떄문에 그렇게 간단하게 되지는 않습니다. 또 기계어와 매우 비슷하기 떄문에

이해하기 어렵다는 것이 단점입니다.


하지만 천리길도 한걸음 부터라는 말도 있듯이 어셈블리어는 한줄한줄 까보면 막상 어렵지는 않습니다.

조금씩 자주 쓰이는 패턴들 위주로 익히시다 보면 실력이 붙으실 것입니다.


화이팅 ㅎㅎ



                                



p.s  여기서 SS는 스택 세그먼트 의 약자 

         DS는 데이터 세그먼트의 약자





                                                   













  



 

         





                                          






* SF(Sign Flag) : signed =>

              unsigned => 


* JL (Jump if Less Than)


- ZF = 1 -> 동일 => jump x

- ZF = 0  => 앞 > 뒤 => Jump x

  CF = 0 


- ZF = 0  => 앞 < 뒤 => Jump O

  CF = 1 



* EAX : 32bit CPU용 (32bit)

  AX  : 16bit CPU용 (16bit)


* IMC (Increase) 증가