본문 바로가기

/Reversing

리버싱_햇갈렸던 명령어 정리_by $0u1Tr33

자주 까먹거나 햇갈리는 명령어들을 정리했다.

 

JNZ => zero flag가 0일 때 점프한다.

JZ => 반대로 zero flag가 0이 아닐 때 점프한다.

 

ADD a,b => a와 b를 더해서 a에 넣는다.

SUB a,b => a와 b를 빼서 a에 넣는다.

 

INC a => a를 1 증가시킨다.

DEC a => a를 1 감소시킨다. (DEC의 대상이 0이 되면 Zero flag를 1로 설정한다.)

 

SAR a,1 => a를 2번쨰 인자만큼(1만큼) 오른쪽으로 이동시킨다.

a가 만약에 16진수로 6c라면,

2진수로는 01101100 이고 1들을 다 오른쪽으로 1칸씩 밀면

00110110이 된다. 이것은 16진수로 39가 되고 10진수로는 54가 된다.

 

어셈블리어에는 곱셈이 2가지가 있는데 하나는 부호가 없는 곱셈인 MUL과 부호가 있는 곱셈인 IMUL이 있다.

 

JE a,b => a와 b의 값이 같으면 점프하고

JNE a,b => a와 b의 값이 다르면 점프한다.

 

그리고 JMP는 그냥 점프이다.

 

TEST a,a => a와 a를 and 연산한다. 0이면 ZF를 1로 셋팅한다.

 

ZF(zero flag) : 이전 명령어가 거짓이면(이전 연산결과의 값이 0이면) ZF를 1로 설정

                   이전 명령어가 참이라면(이전 연산결과의 값이 0이 아니면) ZF를 0으로 설정

 

 

 

 

 

 

 

 

 

 

'Hacking&Security > Reversing' 카테고리의 다른 글

리버싱_간단한 기초지식_by $0u1Tr33  (0) 2019.10.10