CodeEngn Challenges : Basic 07 문제 풀이

안녕하세요 테라트입니다!


오늘은 코드엔진 7번 풀이를 시작해보도록 하겠습니당!


URL : https://codeengn.com/challenges/basic/07





문제는 다음과 같네요 C드라이브의 이름을 가져와서 시리얼을 생성하나 봅니다


그럼 일단 정확한 테스트를 위해서 C드라이브의 이름을 문제에서 제시해준대로 변경해보겠습니다!



그냥 C드라이브 선택 위에서 이름바꾸기를 통해서 바꿔주시면 됩니당 ㅎㅎ



다음과 같이 바뀜을 확인한 후에


동적 분석을 먼저 실시해보도록 하겠습니다


동적 분석이 뭐냐구요?? 그냥 실행해보겠다는 뜻입니다 어떤 행위를 하는지 직접 실행시켜서 분석하는 것을 의미합니다 ㅎㅎ



다음과 같이 표시되고



'Hello' 라고 아무 말이나 입력해보니!


Error! 올바르지 않은 시리얼을 입력했다고 메시지창이 뜸을 확인할 수 있습니다



프로그램이 어떻게 동작하는지 봤으니, 디버거에 올려보겠습니다


'Search for' - 'All referenced text strings' 메뉴를 선택해보겠습니다


※ All referenced text strings 설명 참고



아까봤던 메시지의 문구가 보이네요 저쪽으로 가보겠습니다 (더블클릭! !)



빨간색 박스 보이시죠?


저 두 곳 중 한 곳에서 코드가 생성되고 한곳에서는 비교가 이루어 질 것으로 추측됩니다!



'New origin here' 를 선택해줍니다!


※ New origin here : 함수의 진행부분을 이 곳 위치로 변경하겠다


이동해주셨으면 F8을 통해서 진행을 해보겠습니다



이동해서 확인해보니 ConcatString 부분에 "CodeEngn" 이 들어가 있는 것을 확인하실 수 있습니다


C드라이브의 이름을 가져온건지 가장 확실히 아는 방법은 다시 바꿔서 테스트 해보면 됩니다


다시 C드라이브 이름을 다른것으로 변경해주고-



올리디버거로 실행시켜보겠습니당


이번엔 같은 부분에 변경된  C드라이브 이름이 들어간 것을 확인하실 수 있죠?



그럼 다시 원래대로 'CodeEngn' 으로 변경해서 계속해서 진행해보겠습니다




진행하시다 보면 String 값이 변경되는 것을 캐치하실 수 있으실 겁니다




움짤이 사이즈가 작죠?ㅠㅠ 사이즈 키워보려 했는데


문자열이 깨지더라구요


잘 보시면 눈에 띄실겁니다!



위쪽 lstrcatA 부분에 최종적으로 String 값이 결정난 것을 확인할 수 있고 F8을 통해 계속해서

진행하시면 밑에 StringToAdd 부분에 String이 복사되는 것을 확인하실 수 있습니다!


밑부분이 정답을 비교하는 부분이 되겠군요


실행하다보면 다음과 같이 빈 위치에서 위에 그림과 같이 StringToAdd에 문자열이 입력됨을 볼 수 있습니다!




계속해서 진행하면 String 값이 붙여지는 것을 확인해 볼 수 있습니다


그리고 최종적으로 비교하는 값으로 위에서 보시는 것과 같이 'L2C-5781EqfgEngn4562-ABEX' 값을 확인 하실 수 있습니다


이건 중요하지 않고


처음에 봤던 문제의 답은 C드라이브 이름이 'CodeEngn' 일 때 뭐로 바뀌느냐니까


최종적으로 정답은



짜잔- 



수고하셨습니당- :)



댓글, 0

테라트

Since 2018.07.03 / IT 관련 정보, 일상의 공유를 위한 블로그