728x90
실행
먼저 파일을 실행시켜보면
이렇게 뜬다. 그래서 MSVBVM50.dll을 설치해줬다.
확인을 누르고 나면 이렇게 Regcode를 입력하는 창이 나온다.
어셈블리코드(IDA)
loc_40288BA 블록에서 보면 대충... 느낌적으로 비밀번호인 듯한 문자열과 비교함수 vbaStrCmp 가 보인다. 문자열"2G83G35Hs2"가 비밀번호라고 추측했던 이유는 그 아래 플로우에서도 찾아볼 수 있는데, 그 아래 가지를 살펴봤을 때 "Danke, das passwort ist richtig!" (대충 Thanks, the password is right.. 이런 의미...?) 또는 "Error! das passwort ist falsch"라는 에러창이 뜨도록 되어있다.
vbaStrCmp 호출 부분 코드를 좀 더 자세히 살펴보면
- push dword ptr [ebp-0x58]
- push offset a2g83g35hs2 // "2G83G35Hs2"
- call __vbaStrCmp
ebp-0x58의 위치에 사용자가 입력한 시리얼 값이 들어있을 것이고 이를 pop 해서 vbaStrCmp의 인자로 전달하게 된다. 그리고 비밀번호 값도 push 해서 vbaStrCmp의 인자로 전달한다. vbaStrCmp("2G83G35Hs2", *(ebp-0x58))으로 이해하기 쉽게 정리할 수 있다.
△ 잘못된 값을 입력한 경
△ 정답을 입력한 경우
문제(비주얼 베이직에서의 문자열 비교 함수)의 답: vbaStrCmp
SMALL
'Reversing > Reversing (Wargame)' 카테고리의 다른 글
[CodeEngn] BASIC RCE L05 (0) | 2021.05.11 |
---|---|
[CodeEngn] Basic RCE L04 (0) | 2021.05.11 |
[CodeEngn] BASIC RCE L02 (0) | 2021.05.04 |
[CodeEngn] BASIC RCE L01 (0) | 2021.05.04 |
[HackCTF] Handray (0) | 2021.05.03 |