-榮-

[CodeEngn] Advance RCE L04 본문

CodeEngn/Advance

[CodeEngn] Advance RCE L04

xii.xxv 2021. 4. 2. 17:25

● CodeEngn Advance RCE L04 문제

 

CodeEngn Advance RCE L04

 

 

◎ 파일 실행 화면

[그림 1] 파일 실행 화면 및 실패 화면

 

◎ 패킹 및 난독화 여부 확인

[그림 2] exeinfo PE

 


 

● CodeEngn Advance RCE L04 풀이

 

[그림 3] 디버거 - OllyDbg / 디버기 - 04.exe (Advance RCE L04 실행파일)

 

[그림 1]에서 본 실패 문자열("Error!")을 찾기 위해 [Search for > All referenced text strings]를 확인했습니다.

All referenced text strings에는 문자열이 보이지 않았고, [Search for > All intermodular calls]도 같았습니다.

패커가 없으며, 문자열도 모듈도 안 보이는 것을 보면 암호화되어있다고 추측할 수 있습니다.

[그림 4] Search for > All referenced text strings / All intermodular calls

Step Over[F8]로 진행하다 보면 반복문이 나옵니다. 이 반복문은 [00401006]부터 [004011A7]까지 25h를 XOR 하는 코드입니다. 즉 이 반복문은 코드를 복호화하는 코드입니다.

[그림 5] 복호화 코드

 

반복문이 종료되면 [00401006]부터 [004011A7]까지 변경된 것을 확인할 수 있습니다.

[그림 6] 복호화 후 메모리

 

복호화된 내용이 코드인 것을 볼 수 있습니다. 복호화를 했다지만 코드가 제대로 확인되지 않으므로 OEP를  00401006으로 하고 덤프를 떠주겠습니다.

[※참고]

덤프 파일 생성은 CodeEngn Basic RCE L09의 "StolenByte를 제자리로 옮기고 덤프 파일 만들기"

 

[그림 7] 복호화된 코드

 

생성된 덤프 파일을 디버거에 올리면 [그림 8]과 같은 오류가 발생합니다. [그림 8]의 오류를 해결하기 위해 Rebuild 해줍니다.

[그림 8] 오류 및 Rebuild

 

Rebuild 한 파일을 디버거에 올립니다.

[그림 9]디버거 - OllyDbg / 디버기 - 04_dump.exe

 

이제 코드가 제대로 확인되니 [그림 1]에서 본 실패 문자열("Error!")을 찾기 위해 [Search for > All referenced text strings]를 확인했습니다.

[그림 10] All referenced text strings

 

실패 문자열 주소로 이동하면 분기점(0040117B)을 바로 확인할 수 있습니다.

코드를 보면 00401172가 분기 조건으로 IstrcmpA 함수로 입력받은 Serial과 입력받은 Name으로 만든 Serial을 비교한다는 것을 알 수 있습니다. 

[그림 11] 분기점 및 분기 조건 확인

 

IstrcmpA 함수 전까지 실행시키면 [00403104]에 입력받은 Name("CodeEngn")으로 만들어진 Serial을 확인할 수 있습니다.

[그림 12] Serial 확인

 

[※참고]

Name을 사용한 Serial 생성 방법은 CodeEngn Advance RCE L04 Serial 생성 분석 참고해 주세요.

 


 

● CodeEngn Advance RCE L04 확인

 

 

[그림 13]  Valid Serial!

 


+α OllyDbg 'Ctrl + A'

 

풀이 [그림 7]에서 덤프를 뜨고 Rebuild 했지만 Advance RCE L04의 상황에서는 OllyDbg의 'Ctrl + A'(코드 재분석) 기능을 사용하면 바로 [그림 9]의 화면을 볼 수 있다.

[그림 14] OllyDbg의 'Ctrl + A'(코드 재분석)

 

'CodeEngn > Advance' 카테고리의 다른 글

[CodeEngn] Advance RCE L05  (0) 2021.04.02
[CodeEngn] Advance RCE L04 Serial 생성 분석  (0) 2021.04.02
[CodeEngn] Advance RCE L03 Serial 생성 분석  (0) 2021.03.31
[CodeEngn] Advance RCE L03  (0) 2021.03.31
[CodeEngn] Advance RCE L01  (0) 2021.03.31