Helloworld.exe  올리디버그로 어셈코드를 분석!

HUJ

응응귀엽당..ㅎ



Helloworld.c를 컴파일해서 올리디버그로 각각 어셈코드를 분석해보겠습니다~


이쁜 Visual Studio 열어서 Hello world! 가 출력되게 다음과 같이 작성해줍니다.

#include <stdio.h>

int main()

{

printf("Hello world!\n");

return 0;

}


F5를 눌려서 디버깅을 해줍니다.

만약, Ctrl+F5를 눌려서 디버깅않고 시작해주면 다음 그림처럼 뜨게 되겠쥬


그럼 빠져나와서 Helloworld 프로젝트 저장한곳을 찾아줍니다. 그다음 Debug파일에 들어가셔서 다음그림처럼 Helloworld.exe를 찾으면 됩니다. 

찾기어려우시면 

[시작 - 검색창에 Helloworld.exe (자신이 만든 프로젝트이름)] 치고 오른쪽 클릭하셔서 파일위치열기 누르시면 나옵니다.~


다음 올리디버그를 열어주시고, 저 파일을 찾아 open 해줍니다.

그럼 다음과 같이 뜨게될껍니다.

(이제 그림밑에 설명써야징)


64bit컴퓨터에 버전 110을 사용하시면 저 하얀창 뒤엔 요렇게..ㅜ

그래서 전 다시 220을 깔고 다시 환경설정했습니다.ㅜㅜ


이제 안나타나고 잘실행되네요>< 본격적으로 분석해보겠습니다.


일단 처음해보는 분석이니, F7을 누르면서 하나하나 살펴보고, int main에 해당하는 부분을 찾아봅니다.


이것저것 보는중..ㅋㅋㅋ


일단 윗 그림처럼 찾기 쉬운, ASCII 코드로 되어있을 "Hello world!" 라고 출력될 코드를 찾아봅시다. 컨트롤 에프 눌려서 찾고싶다만.. 안됨...ㅠㅠ


제가 찾아본 방법은 이렇습니다.

CPU 창에서 오른쪽 클릭! 문자열string 일테니, [Search for - All referenced Strings] 으로 들어가 봅시당


창이 뜸과 동시에, ASCII 코드로 표시된 "Hello world!" 발견!!! 저 빨간상자를 눌려주시면 해당 주소로 알아서 찾아가줍니다ㅎㅎㅎ


ㅎㅎㅎㅎ발견ㅎㅎㅎ

거기서 F2로 BreakPoint설정하고 F7을 누르니, 스택 창보시면 comment에도 가리키는걸 보실수있습니다.


이제 return 0;의 어셈코드를 보고싶었는데,, 스택창 comment에서 return 같은게 있네요

이건 더 배우고 와야될듯ㅜ


엉엉ㅃㅃ

Posted by 알 수 없는 사용자
,