본문 바로가기

assembly2

어셈블리 핸드레이 2 2번도 풀어보자 함수를 살펴보니 func함수와 main함수를 중점으로 보면 좋을 것 같다. 메인함수 먼저 맨 앞 두줄은 함수 프롤로그이고 mov DWORD PTR [rbp-0x4], 0x0 이거는 처음에 변수를 정해주는 것 같다. mov edi 0x4006c4 뒤에 있는 주소가 뭔지 모르겠어서 아래 사진처럼 직접 확인을 해보니까 "점수를 입력하세요 : " 이거였다. 이게 프린트 되게끔 printf 함수를 불러왔다. 그리고 lea rax, [rbp-0x4] rbp-0x4에 저장된 주소를 rax에 저장한다. mov rsi, rax rsi에 rax(rbp-0x4 주소)값을 넣고 mov edi, 0x4006e1 아래를 참고하면 뒤의 값은 %d이다. mov eax, 0x0 이렇게까지 해주면 scanf를 호출한다... 2021. 9. 7.
어셈블리 핸드레이 1 2주차 숙제로 핸드레이를 직접 해보는 숙제를 내주셨다. 먼저 gdb-peda를 실행하여 어떤 함수가 있는지 i fu 명령어로 살펴보았다. func함수와 main함수가 있어요!! 하나씩 어떤 함수인지 살펴보자. 일단 메인함수를 어셈블리어로 확인해보자. push ebp mov ebp,esp 여기는 함수의 프롤로그 부분인 듯 하고 mov DWORD PTR [ebp-0x4], 0x0 여기 부분은 ebp-0x4의 데이터 4바이트를 참조하여 여기에 0을 넣어라! 이런 뜻인 것 같다. lea eax, [ebp-0x4] 이거는 ebp-0x4에 저장된 주소를 eax에 저장하라는 의미이다. 그러고 나서 eax 그니까 여기서 값은 0이고..? 이걸 push하고 %d를 push한 것은 내 생각에는 scanf("%d", eax.. 2021. 9. 7.