Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- .net core 7
- ioctl
- wrefresh
- cbpf
- packet flow
- 풀이
- mvwin
- C언어
- level trigger
- packet filter
- ncurses
- epoll
- doupdate
- wnourefresh
- Docker
- architecture
- rfc5508
- Compiler
- REDIS
- .nret core 배포
- vtable
- BOF
- epoll_wait
- edge trigger
- NAPT
- DOCKER-USER
- LOB
- 취약점
- 어셈블리어
- iptables
Archives
- Today
- Total
Tuuna Computer Science
abex ' 2nd crackme:1 (시리얼 값 찾기) 본문
abex ' 2nd crackme:1 (시리얼 값 찾기)
윈도우 리버싱연습으로써 abex' 2nd crackme의 시리얼값을 알아보도록하자
일단 먼저 프로그램을 실행해보자.
name값을 치는 공간과 serial값을 치는 구간이 있다.
틀린 값을 넣으면 틀렸다고 나온다.
메세지가 Worng serial이라고 나오는것을 보아
name값에 따라 serial값이 바뀐다는것을 어느정도 유추할 수 있을것이다.
( 물론 필자는 예측 실패)
name값에 따라 serial값이 바뀐다는것을 어느정도 유추할 수 있을것이다.
( 물론 필자는 예측 실패)
이 파일을 Ollydbg로 까보자. 그럼 00401238주소에 EP가 형성된다. (entry point)
0040123D주소에 MSVBVM60를 호출하는 것을 발견할 수 있다. 이는 visual basic로 작성된것을 확인할 수 있다.
이 함수로 들어갈 필요는 없는데 만약 들어가면 733735A5주소로 가게된다.
이 주소는 우리가 디버깅 할 필요가 없는 주소다.
이 주소는 우리가 디버깅 할 필요가 없는 주소다.
일단 뭐를 어디서 부터 봐야할지 모르는 string표를 보자 단축기(alt+R)인가
암튼 보면 시리얼값에 따른 여러 UNICODE로 된 문자열을 볼 수 있다.
방금 본 문자열을 더블 클릭하여 그 주소로 향해보자! (올바르게 왔당)
좀 올리다 보면 성공과 실패의 문자열출력을 가를 조건문이 존재하게 된다. (참과 거짓을 판별하는 분기분을 찾았다!)
00403329주소에 브레이크를 걸어 실행해보자!
Q. 왜 조건문에 브레이크를 안거나요?(필자가 궁금했던 부분)
A. 위의 주소들을 잘 보면 PUSH EAX, PUSH EDX가 보일 것이다.
이는 사용자의 입력값과 프로그램에 의한 시리얼생성값으로 구분될 수 있다.
그리고 이 함수의 파라미터(매개변수)들은 그 밑 값을 비교하는 함수로 가기때문에 보내기 전에 브레이크를 건것이라고 생각함.
name과 serial값에 아무거나 입력해 보았다.
스택이 PUSH되었다. 메모리주소를 확인해보자
하나는 0019F260, 0019F250이 메모리에 들어갔다.
( 컴퓨터의 실행환경에 따라 메모리주소값은 바뀐다.)
( 컴퓨터의 실행환경에 따라 메모리주소값은 바뀐다.)
이동해보장
해당 메모리 주소로 이동했다.
관찰결과 9~12비트 부분에만 아래 위 값이 다르다는 것을 알 수 있다.
관찰결과 9~12비트 부분에만 아래 위 값이 다르다는 것을 알 수 있다.
뭔가 중요해보이지 않는가
이를 Address with ASCII dump로 살펴보자
그러니 name에 친 gutte에 따른 시리얼값이 생성된 것을 확인할 수 있다.
그러니 name에 친 gutte에 따른 시리얼값이 생성된 것을 확인할 수 있다.
크랙 성공!
여기서 gutt부터 뒤에 아무거나 넣어도 같은 시리얼로 인식되길래
4글자 까지만 시리얼로 변환하는 것 같다.
4글자 까지만 시리얼로 변환하는 것 같다.
다음 시간엔 이를 name값을 serial로 암호화하는 과정을 살펴볼 것이다.
ps. 메세지 박스를 바꾸는것도 크랙이라고 말할 수 있다!
'Reversing' 카테고리의 다른 글
[ UPack의 PE 헤더 분석 ] (0) | 2018.06.12 |
---|---|
plt와 got 개념알기 feat. static or dynamic(Linking) (0) | 2018.05.09 |
[Reversing.kr] Easy_ELF 비밀번호 찾기 (리버싱) (0) | 2018.04.15 |
[Reversing.kr] Easy_Crackme! 비밀번호찾기(find password) (0) | 2018.04.12 |
Hitcon Training LAB 1 (0) | 2018.04.11 |
Comments