블로그 이미지
ludwings

카테고리

분류 전체보기 (130)
WIN API (22)
워게임 (61)
만든것 (2)
메모 (37)
Total18,086
Today0
Yesterday3

codeengn advance rce l15 문제 풀이당.

 

먼저 문제를 풀기위해 확인하기 위해 about을 보면

no patch,

find correct unlock code ..

등이 있다..

 

back to user mode 를 통해서 unlock code를 체크하는 부분을 찾아낸다.

 

첫번째함수.

40109d -> unlock code check

 

입력한 값을 가지고 어떠한 연산을 통해  0x403318에 저장해둔다.

 

두번째함수.

두번째함수를 확인해보니

 

앞서 0x403318에 저장해두었던 byte값과

프로그램이 4011c1 위치에 가지고 있는  값들을 xor 하여 함수를 만들어 내는것같다

 

403318에 들어갈수있는 값은 byte이니 0 ~ 0xff 까지 값을 넣어가면서 확인해본다.

하나하나 확인해보면 시간이 오래걸릴테니

 

xor 연산을 마친 후,

 

함수의 가장 이상적인 모습인

push ebp

mov ebp, esp 로 시작하는 것만 확인해본다.

 

따로만들기 귀찮아서 프로세스내에 빈부분 00으로 꽉차있는 부분에 어셈코드를 새로 작성했다.

0~ff까지돌며 복호화하는 코드이다.

 

쭉 돌리다보니... 복호화 했을시, push ebp로 시작하는 것을 찾을수 있었는데

그 연산값에 필요한 값은 0x25였다.

 

 

 

이렇게 복호화 하고보면 단순히 덤프창에서 확인하는 것만으로 serial 값을 확인할수있었다.

 

 

 

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

CodeEngn Advance RCE L14  (0) 2013.11.27
codeengn advance rce l11 풀이  (0) 2013.11.25
codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
thisislegal.com application 1,2,3  (0) 2013.10.31
Posted by ludwings

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함