WARGAME/reversing

[코드엔진/CodeEngn] Advance RCE L03

lucykorea414 2024. 3. 27. 01:37
728x90

 

실행파일 분석

문제를 실행하기 전에 exeinfo로 봅시다

 

패킹은 안되어있으니 바로 분석해봅시당

 

실행을 하면 이렇게 뜬다

 

좀 킹받게 살짝 투명하긴 한데, name와 serial을 입력받는 부분을 볼 수 있다.

문제에서 name이 CodeEngn일때의 시리얼값을 찾으라고 했으니 아마 name값에 따라서 시리얼값이 바뀌는것으로 예상된다.

 

 

실제로 아무거나 입력하고 check를 누르면 이렇게 뜬다 :)

 

 

 

IDA 정적 분석

시작 함수는 다음과 같고

 

 

이 파일에 있는 함수들은 다음과 같다

 

이때 핑크색으로 되어있는 부분은 GUI 관련 함수인것 같으니 딱히 신경을 안써도 되고, 저기 start 밑에 있는 DialogFunc 부터 분석을 해보면 될 것 같다!

 

 

일단 엄청나게 크고...

 

우리는 저 메세지 출력 문자열을 찾으면 되는거니까 함수들중에서 찾다보면 세번째 함수인 sub_401392에서 찾을 수 있음!

 

이 함수는 짧으니까 다른 함수에서 이 함수를 호출해서 메세지를 띄우는 방식으로 할 것 같으니 

우선 알아보기 쉽게 함수명을 success_function 으로 바꾸고 이 함수를 참조하는 부분을 찾아보자 (ctrl+x)

 

 

 

DialogFunc 함수 따라가보면 요기 있다

 

호출이 아니라 스택에 주소값 넣고 나중에 빼내서 함수를 호출하는 방식인가부다...

 

다른 함수들도 봤는데 약간 다 서로 호출하고 뭐 계산하고 이런 내용이라서 정적 분석하기에는 힘들고 동적분석으로 바로 진행해봅시다

 

OllyDBG 동적분석

위에 IDA 에서 찾은 함수 모두 주소값 따라가서 bp 걸어주자.

 

그리고 실행해보기..

 

 

이때 요렇게 입력하면서 찾아보자

 

체크를 눌렀더니 요 함수로 왔네요 IDA 에서 함수명 바꿔주겠음!! (click_check)

 

 

 

reference 를 찾아보면 DialogFunc에서 호출하는 부분 보이는데 따라가보면 이렇게 나와있다

 

 

뭔가 체크 함수 실행해서 맞는지 확인 후 string compare을 해서 시리얼 값을 비교하고 있는 것 같다!!

 

일단 다시 동적 분석 실행... (저 stringcompare 하는 부분에 bp 걸고 실행)

eax에 name 저장!

 

요 두 함수를 엄청 왔다 갔다 하고

 

 

드디어 시리얼값 만드는게 끝나면

이렇게 스트링 두개를 비교하는 것이 보인다!!

 

1234는 내가 입력한 값이고 3265754874는 메모리에 있는 계산된 시리얼값이니 이게 정답이다 ^^

 

정답을 입력해보면~~

 

 

^^...

 

다음에 Key generator 만들어보는걸로~

728x90

'WARGAME > reversing' 카테고리의 다른 글

[코드엔진/CodeEngn] Basic RCE L13  (0) 2023.11.13
[코드엔진/CodeEngn] Basic RCE L19  (1) 2023.11.13
[dreamhack] rev-basic-3  (0) 2023.09.22
[dreamhack] patch  (0) 2023.09.22
[dreamhack] rev-basic-1  (0) 2023.09.15