반응형

Challenges : Basic 05


Author : Acid Bytes [CFF]


Korean 
이 프로그램의 등록키는 무엇인가 

English 
The registration key of this program is? 


문제는 굉장히 쉽게 풀었다. UPX 패킹이 되있으므로, 유틸을 사용해서 언팩을 해주던가, 

가내수공업으로 언팩을 해주는 방법 두가지가 있겠다. 

따로 설명은 안하겟고, 맨마지막 jmp 부분에 브레이크를 걸어주고 덤프를 뜬다던가,

UPX 의시작점 부분에서 ESP 의값을 하드웨어 브레이크를 걸어주고 덤프를 떠준다. 

유틸사용이야 말해봐야 입아플거같고,

이프로그램은 키값과 동시에 Name 부분의 란이 따로 존재한다. 

UPX를 언패킹해주면,시리얼 키를 EDX 레지스터에 넣고 CMP하는 구문이있다.

따로 브레이크를 걸필요없이, 노출되어있어서 쉽게 찾을수 있었다.

코드엔진에서 물어보는 키값은 이것(등록키)이지만,

원래의 본프로그램의 경우, 키값을 맞춤과 동시에 그에 맞는 name 값을 input으로 넣어줘야 한다.

serial키 부분보다는 name 부분에 좀더 신경을 쓴 프로그램 같다 

우선, 해당 프로그램이 어떤 루틴을 갖는지 분석을 해보면(UPX를 언패킹 해서 OEP에 접근했을때 부터의 이야기이다)

1)name의 input이 있는지 없는지 에 따라 분기한다

2) serial 값이 있는지 없는지에 따라 또한 분기한다.

3)Register User 부분인데 이 아래에 존재하는 CALL 0x00403B2C에 암호화 루틴이 존재한다

4)name의 input 값이 맞는지 아닌지에따라 성공 실패 분기문이 갈린다.

5)serial 값이 맞는지 아닌지에 따라 성공 실패 분기 문이 갈린다 

주석을 첨가한 약간의 코드를 첨부한다.(name 루틴부분을 분석할까 했는데 귀찮아서 안함 ㅡㅡ;나중에 심심할때 해보겟음 )

 





반응형

'과거의 컴퓨터 공부 > codeengn-basic' 카테고리의 다른 글

(codengn)level07  (0) 2015.03.13
(codengn)level6  (0) 2015.03.04
(codeengn)level4  (0) 2015.03.03
(codeengn)level3  (0) 2015.02.27
(codeengn)level2  (0) 2015.02.27
,