INC -> operand 값을 1 증가
인라인 어셈 - 상위레벨 언어에서 어셈 사용 가능하게 만들어줌
int main(){
int a=0;
printf("%d\n",a);
_asm{
INC a
INC a
}
printf("%d\n",a); // 2
return 0;
}
----------------
int main(){
int a=0;
printf("%d\n",a);
_asm{
INC a; INC a
}
printf("%d\n",a); // 1
return 0;
}
// 한줄에 한 명령어 넣어 주는 게 좋음
// 소문자 명령어로 넣어도 됨 (inc...)
----------------
int main(){
int a=0;
printf("%d\n",a);
_asm{
INC [EBP-0x04] // 주소로 접근
INC a
}
printf("%d\n",a); // 2
return 0;
}
-------------
DEC - 감소 (--)
int main(){
int a=2;
printf("%d\n",a);
_asm{
DEC a
DEC a
}
printf("%d\n",a); // 0
return 0;
}
a -> mem
reg -> EAX, EBX ...
---------------------
int main(){
int a=2;
_asm{
INC a
INC a
}
printf("%d\n",a);
_asm{
DEC a
DEC a
DEC a
DEC a
}
printf("%d\n",a);
return 0;
}
------------
ADD
int main(){
int a=0;
printf("%d\n",a);
_asm{
ADD a,0x05 // 10진수도 되지만 16진수로 사용하는 것을 연습
ADD a,0xa
}
printf("%d\n",a); // 15
return 0;
}
* ADD mem, imm
Ex) ADD[EBP-0x0C],0x0A
--------------
int a=20;
printf("%d\n", a);
_asm{
SUB a, 0xf
}
printf("%d\n",a); // 5
return 0;
}
-------------
int a=2;
_asm{
ADD a,0x03
SUB a,0x02
}
printf("%d\n", a);
return 0;
}
------------
MOV - 값 복사 대입
int a=0;
printf("%d\n",a);
_asm{
MOV a,0x10
}
printf("%d\n",a);
return 0;
}
* MOV mem, mem -> error, 메모리끼리는 안 됨
-----------
int a,b,c;
_asm{
MOV a,0x03
MOV b,0x05
MOV c,0xa
INC b
DEC c
MOV EAX,a
ADD EAX,b
MOV c,EAX
MOV EBX, a
SUB EBX,c
MOV b,EBX
}
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
return 0;
}
'Reversing' 카테고리의 다른 글
assembly lingoes and questions (0) | 2014.09.19 |
---|---|
assembly lingoes (0) | 2014.09.18 |
assembly lingoes (0) | 2014.09.17 |
assembly lingoes and basic questions for practicing (0) | 2014.09.16 |
The process of learning reversing and basic knowledge of lingoes (0) | 2014.09.11 |