irvine

어셈블리2017. 5. 1. 23:08

(*참고 : http://ajlab.tistory.com/entry/Visual-Studio-2010-MASM-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95)


INCLUDE Irvine32.inc

.code

main PROC

mov eax, 10000h

add eax, 40000h

sub eax, 20000h

call DumpRegs


exit


main ENDP

END main

'어셈블리' 카테고리의 다른 글

Irvine 설치 방법  (0) 2017.05.07
버퍼 오버플로우 공격  (0) 2017.05.02
인라인 어셈블리 sub  (0) 2017.05.01
인라인 어셈블리 add  (0) 2017.05.01
mov  (0) 2017.05.01

# include <stdio.h>


int main(void)

{

int v1 = 10;

int v2 = 5;

int re = 0;


__asm

{

mov eax, v1;

mov ebx, v2;

sub eax, ebx;

mov re, eax;

}

printf("%d \n", re);

return 0;

}




(*visual studio deburging mode)


       int v2 = 10;

 mov         dword ptr [v2],0Ah

// OAh => h는 hex 즉, 16진수

  

int v1 = 30;

 mov         dword ptr [v1],1Eh  


int re = 0;

 mov         dword ptr [re],0  

re = (v2 - v1);

 mov         eax,dword ptr [v2]  

 sub         eax,dword ptr [v1]  

 mov         dword ptr [re],eax


'어셈블리' 카테고리의 다른 글

Irvine 설치 방법  (0) 2017.05.07
버퍼 오버플로우 공격  (0) 2017.05.02
irvine  (0) 2017.05.01
인라인 어셈블리 add  (0) 2017.05.01
mov  (0) 2017.05.01

# include <stdio.h>


int main(void)

{

int v1 = 10;

int v2 = 20;

int result = 0;


__asm

{

mov eax, v1;

mov ebx, v2;

add eax, ebx;

mov result, eax;

}

printf("%d \n", result);

return 0;

}


__asm 부분을 c언어로 convert

/*

int val1 = v1;

int val2 = v2;

val1 += val2;

result = val1;

*/

'어셈블리' 카테고리의 다른 글

Irvine 설치 방법  (0) 2017.05.07
버퍼 오버플로우 공격  (0) 2017.05.02
irvine  (0) 2017.05.01
인라인 어셈블리 sub  (0) 2017.05.01
mov  (0) 2017.05.01

mov

어셈블리2017. 5. 1. 21:53

# include <stdio.h>


int main(void)

{

int v1 = 10;

int v2 = 0;

__asm

{

mov eax, v1;

mov v2, eax;

}

printf("%d \n", v2);

return 0;

}




구지 __asm 부분을 c언어로 생각해보자면 아래와 같을 것이다.

/*


int temp = 0;

temp = v1;

v2 = temp;


*/


================================================================

*mov 명령 사용시 주의사항

1. 목적지 (Destination), 소스(source)는 반드시 같은 크기여야 한다.

2. 목적지 (Destination), 소스(source)는 모두 메모리 피 연산자 일 수 없다.

================================================================

# include <stdio.h>

int main(void)
{
char cData = 0;

__asm
{
//mov eax, cData; /* 오류 */
mov al , cData;
}
return 0;
}


'어셈블리' 카테고리의 다른 글

Irvine 설치 방법  (0) 2017.05.07
버퍼 오버플로우 공격  (0) 2017.05.02
irvine  (0) 2017.05.01
인라인 어셈블리 sub  (0) 2017.05.01
인라인 어셈블리 add  (0) 2017.05.01