티스토리 뷰
분기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 이다.
'Security&Hacking > Reversing' 카테고리의 다른 글
Reversing) DLL Injection with CreateRemoteThread() (0) | 2019.09.11 |
---|---|
Reversing) abex crackme #3 (0) | 2019.09.11 |
Reversing) 기본 C문법 리버싱 (if문, for문) (0) | 2019.09.11 |
Reversing) CrackMe.exe v1.0 (Cruehead/MiB) (0) | 2019.09.11 |
Reversing) FSC_Level 1 (0) | 2019.09.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- brute-force
- webhacking.kr
- JPA
- Stack
- Java
- 해외여행
- 리버싱
- socket
- C
- 우아한 테크코스
- dfs
- 프로그래머스
- Android Studio
- Data Structure
- Android
- bfs
- javascript
- Algorithm
- Vo
- 회고
- 웹해킹
- queue
- graph
- FRAGMENT
- sort
- mysql
- git
- OneToMany
- 개발자
- reversing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함