프로그램의 비밀번호를 맞추는 문제이다.
Immunity Debugger를 통해 동적으로 분석하였다.
Immunity Debugger에서 EasyCrack.exe를 열어준다.
마우스 오른쪽 클릭 -> Search for -> All referenced text strings
여기서 이 프로그램의 모든 스트링들을 볼 수 있다.
딱 봐도 Congratulation !! 이 제일 수상해 보인다.
더블 클릭해서 저 위치로 들어가 본다.
아직은 별로 나온 게 없다.
함수의 시작부분으로 가본다.
GetDlgItemTextA 함수를 호출하는 게 보이고,
어디에 쓰이는지 모를 문자열들이 보인다.
함수가 시작되는 곳에 bp를 걸고,
한 줄씩 실행시켜본다.
esp + 5 위치에 있는 값과 61을 비교한다고 쓰여있다.
esp + 5 위치를 찾아가 본다.
나는 분명히 TEST라 적었는데 처음 부분인 T가 아닌 E부터 비교한다.
esp + 5가 61인지 확인하는 구문을 봤으니 대충 esp + 5가 61이라고 추측할 수 있고,
esp + 5는 입력된 값의 두 번째 자리인 거 까지 추측할 수 있다.
61은 아스키코드로 a이다.
두 번째 자리에 a를 넣어주고 실행
점프 구간을 지났다. a가 맞나 보다.
ecx에 esp + A에 있는 값을 옮긴다고 쓰여있다.
ecx 레지스터를 확인해본다.
내가 입력했던 st가 들어왔다.
대충 세 번째 네 번째가 5y인지 확인하는 구문 같다.
■a5y■■■■ 이라고 추측할 수 있다.
다시 입력 후 실행
이번엔 또 수상한 아스키코드다.
eax에 esp + 10 주소 복사 후 비교하는 구문이다.
esp + 10에 내가 입력했던 zzzz가 보인다.
갑자기 반복문이 나오는데,
확인해보니 문자열 비교 구문이다.
문자열이 R3versing 일 때를 검사하니까,
대충 ■a5yR3versing이라고 생각할 수 있다.
마지막 비교 구문이다.
esp + 4 위치의 값과 45를 비교한다고 쓰여있다.
esp + 4 위치는 첫 번째 자리였다.
그러므로 첫번째 자리는 45를 아스키코드로 변환한 E이다.
정답 : Ea5yR3versing
'해킹, 보안 > 리버싱' 카테고리의 다른 글
[Immunity Debugger] Hello World 문자열 패치 (2) | 2020.09.24 |
---|---|
[Immunity Debugger] reversing.kr 2번 Easy Keygen 문제 풀이 (0) | 2020.09.20 |
레지스터의 종류와 개념 (1) | 2020.09.16 |
함수 호출 규악 (Calling Convention) (1) | 2020.09.15 |