Codes/Assembly

어셈블리어를 이용한 while 반복문

2017. 2. 24. 01:15

어셈블리어를 이용한 while 반복문 

- H3X0R, s1ipp3r 팀 소속 윤석찬(ch4n3) -


요즘들어서 웹만 파지 말고 이것저것 다 해봐야겠다는 생각이 많이 들었습니다. 제 꿈이 제로데이 취약점을 찾는 거라서, 취약점 찾기에는 리버싱이 핵심이라는 생각 덕분에 리버싱을 공부 중입니다. 


 평소에 어셈블리어에 대한 안좋은 인식을 갖고 있었는데, 점점 배우다 보니 C언어(보다는 아니지만)처럼 익숙해지고 있습니다. 



오늘은 제가 C언어로 짠 while 반복문을 공유하겠습니다. _asm 을 이용했어요~



#include <stdio.h>


int main(void) {


int n = 10; 


printf("[*] C언어로 된 while 문(n : %d)\n", n);


while (n != 0) {

n--;

}


printf("[*] 실행이 끝난 while 문 (n : %d)\n\n", n);


n = 10;

printf("[*] 어셈으로 된 while 문(n : %d)\n", n);


_asm {

MOV n, 10

MOV ecx, 10

TOP:

CMP ecx, 0

JE BOTTOM

DEC ecx

JMP TOP

BOTTOM:

MOV n, ecx


}


printf("[*] 실행이 끝난 while 문 (n : %d)\n", n);



return 0;


}



어제는 코드엔진의 basic 001 문제를 풀었고, 오늘은 이렇게 코딩을 하니까 공부가 더 잘되는 것 같기도 합니다ㅋㅋㅋㅋㅋㅋ


디미고가서도 이렇게 열심히 공부할 수 있었으면 좋겠다~~~