티스토리 뷰

분기1)

name값이 4자리 이상이면 eax가 0이고, 4자리 미만이면 FFFF..로
TEST AX, AX 연산을 통해 점프문 분기.

이후 반복문을 돌며, name으로 serial값 생성 (비트단위 반복 연산_생략)

분기2)


- MOV DWORD PTR SS:[EBP-94],EAX
EAX가 가리키는 값(serial값 ex.4444)을 스택 ebp-94에 복사한다.

[memory] eax = 465AAC

[stack]

 

LEA 명령어를 통해 EBP-44,34의 주소값을 edx,eax에 복사한후, 스택에 push한다.
이후 함수를 호출하고, TEST AX AX 결과에 따라 점프분기한다.
역시 분기흐름을 임의로 바꿔주면 다음과같이 창이 뜨긴 한다.

 

MOV vs LEA

EBP = 0019F2B0 , EBP-88 = 0019F228

EBP-88인 0019F228위치엔 004656AC값이 들어가있다.

1. MOV 명령어는 좌변에 우변의 값을 입력한다. 따라서 명령어를 수행하고 나면
eax = 004656AC 이다.

2. LEA 명령어는 좌변에 우변의 주소값을 입력한다. 따라서 만약 MOV대신 LEA 명령어였다면
eax = 0019F228 이다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함