문제입니다.

실행 화면입니다.

파일을 클릭하니 업로드 메뉴가 없는 것 같습니다.

패킹이 되어 있지는 않았습니다.

먼저 String 찾기로 성공 문자열을 찾아보았습니다.

40118A 부분이 분기점인 것 같습니다.

분기점을 찾았으니 키파일을 읽는 부분을 찾아보겠습니다.

[Search for] -> [All Intermodular calls]로 들어간 화면입니다.

빨간 박스를 보면 파일을 생성 또는 열거나 읽는 함수가 보입니다.

더블 클릭해서 들어가보겠습니다.

401028부분을 보면 PUSH를 하는데 FileName이 "CRACKME3.KEY"로 되어 있네요.

그럼 파일을 생성하여 이 부분을 통과시켜 보겠습니다.

파일을 생성했습니다.

401066 부분을 보면 CMP DWORD PTR DS : [4021A0],12 를 하고 있습니다.

파일 내의 문자열 갯수를 비교하는 부분입니다. 0x12는 10진수 18이므로 키파일에 18개의 문자를 채워넣겠습니다.

이후 401074 부분은 키파일에 있는 문자열을 바꾸는 함수입니다.

어떤 원리로 바뀌는지 확인해 보겠습니다.

BL에 0x41을 넣고 BL이 0x4F(14번 루프)가 될때까지 BL을 1씩 증가시키면서 키파일의 문자를 하나씩 XOR 연산한 결과를 4020F9에 더하여 저장하고 있습니다.

다시 돌아가서 401093부분을 보면 CMP EAX, DWORD PTR DS:[4020F9]를 키파일의 뒤의 4글자를 비교하고있습니다.

그럼 EAX 어떤 값이 들어있는지 확인해보겠습니다.

아스키코드로 표현하면 EAX에는 "o,p,q,r"이 들어있습니다.

4020F9에는 어떤 값이 들어있는지 확인해보겠습니다.

0xB8,0x57,0x34,0x12가 들어있네요~

그럼 키파일의 뒷의 4글자를 위와 같이 바꾸어주면 이 부분은 통과 할 것입니다.

이제 키파일에 입력된 14문자를 바꾸는 코드를 짜서 "CodeEngn"이 되도록 만들면 되겠습니다.

파이썬으로 짜보면 이와 같습니다.

"CodeEngn"이 부분은 0x02,0x2d,0x27,0x00,0x28,0x20,0x26이 되겠습니다.

HxD를 이용하여 "CRACKME3.KEY" 파일을 열고 0x02,0x2d,0x27,0x00,0x28,0x20,0x26 (CodeEngn)을 입력하고 마지막으로 0x49를 넣어주어야 합니다.0x49를 넣어주어야 문자가 변환되면서 0x00으로 바뀌고 문자열의 끝임을 알릴 수 있기 때문입니다.

이후 0x00으로 된 6개의 문자는 아무값이나 넣어도 상관없습니다.

"0x7B, 0x55, 0x34, 0x12"이 부분은 키 파일의 처음 14글자의 변동에 따라 값이 다르므로 만일 인증에 실패한다면 4020F9의 값을 확인한 후 바꾸어주면 됩니다.

저장 후 20.exe를 다시 실행시키면!

성공적으로 크랙이 됩니다.

홈페이지에 인증을 할때는

위처럼 hex값을 이어서 적어주면 됩니다.

Basic RCE L20 성공!

'WAR GAME > CodeEngn(Basic)' 카테고리의 다른 글

Basic RCE L19  (0) 2020.04.29
Basic RCE L18  (0) 2020.04.29
Basic RCE L17  (0) 2020.04.29
Basic RCE L16  (0) 2020.04.29
Basic RCE L15  (0) 2020.04.29

+ Recent posts