문제 파일을 받고 실행시켜보자
serial check 프로그램 같다
디버거에 넣어본 뒤에
[Search for] - [All referenced text strings] 를 이용해서
성공메시지 부분을 찾았다.
그곳으로 이동해보자
이동해보면 주변에 함수들이 되게 많아서 함수들을 살펴보았다.
좀만 더 위로 올리면
이 함수를 확인해볼 수 있었는데,
문제에 '컴퓨터 C드라이브의 이름이 CodeEngn일 경우 시리얼이 생성될 때'라고 했으므로 C드라이브의 이름을 받는 함수가 있을 것 같았다.
아마 GetVolumeInformationA 함수가 그 역할을 할 것 같다.
종단점 설정해주고 재시작을 해보자
f7로 들어가보면
잘 모르겠다.
나와서 f8로 한 줄씩 디버깅 해보자
serial 창에 임의의 숫자인 1111을 입력해준 뒤 살펴보니
밑에 String2에 1111이 들어가 있다. 그 밑에 String2와 비교하는 것일까
사진 마지막 JE 명령어 옆 주소를 보면
성공 메시지가 출력되는 부분으로 이동하는 것으로 보아 저게 serial 키 포인트인 것 같다.
혹시몰라 L2C-5781을 입력해보았는데
아니라고 한다..
근데 아까 상태에서 f8로 계속 실행하다보니
String1에 변화가 생겼다.
L2C-57816784-ABEX를 다시 확인해보자
그랬더니
성공창이 나왔다.
근데 auth key는 C드라이브 이름이 CodeEngn인 경우의 serial을 구하라고 했는데 ,,
아마 C드라이브 부분이 GetVolumeInformationA 함수에서 이뤄지는 것 같아서 다시 들어가보았다.
그래도 알 수 없어서 찾아보니
GetVolumeInformationA() 호출 이후 C드라이브 이름을 입력한다고 해서
C드라이브 이름이 입력되는 주소로 이동해서
CodeEngn으로 패치해주었다.
그랬는데 저 부분을 두 번 반복해서 문자열이 변경되었다.
add 연산으로 문자열을 변화시키는 것 같다.
그래서 마지막 serial 비교 부분에서는
이런 serial이 완성되었다.
이것도 한번 확인해보자
L2C-5781EqfgEngn4562-ABEX를 넣어보면
이렇게 비교하고 같은 걸 확인할 수 있다.
성공!
문제에서 CodeEngn이 어떤걸로 변화하는 건지 물어봤으므로
EqfgEngn을 넣어보았다.
성공!
'Reversing > Wargame' 카테고리의 다른 글
[dreamhack] rev-basic-1 (0) | 2021.09.10 |
---|---|
[dreamhack] rev-basic-0 (0) | 2021.09.09 |
[CodeEngn] Basic RCE L15 (0) | 2021.02.24 |
[CodeEngn] Basic RCE L09 (0) | 2021.02.23 |
[CodeEngn] Basic RCE L04 (0) | 2021.02.22 |
댓글