실행파일 분석
문제를 실행하기 전에 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 걸고 실행)
요 두 함수를 엄청 왔다 갔다 하고
드디어 시리얼값 만드는게 끝나면
이렇게 스트링 두개를 비교하는 것이 보인다!!
1234는 내가 입력한 값이고 3265754874는 메모리에 있는 계산된 시리얼값이니 이게 정답이다 ^^
정답을 입력해보면~~
^^...
다음에 Key generator 만들어보는걸로~
'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 |