code engn basic 7번 문제다.

 파일부터 실행해보았다.

흠.. 키값을 구해야돼나? 일단 파일부터 열어보자.

흠.. 처음보는 함수가 많다. 일단 IstrcatA, IstrcmpIA 함수 같은 경우는 익숙한 함수라 아무 생각없이

이거 위주로 분석해봤더니 키 값은 너무 쉽게 구할 수 가 있다. 뭐지?했는데 문제자체가 이걸 요구하는게

아니었던게 생각났다. 기억력이 금붕언가..? 그래서 함수를 좀 찾아보기로 했다.


흠.. 드라이브 이름과 관련있는 함수가 딱보니 GetVolumeInformationA 일 것 같다. 찾아보니 현재 파일이 위치한 드라이브 이름을 VolumenameBuffer(0040225C)에 반환해 준단다. 그 후 따라가보니 IstrcatA에서 위의 0040225C를 첫번째 변수로 넣어준다. IstrcatA에서 참조하는거보니 공백이다.  CetVolumInformationA 함수에서 RootPathName에 Null값을 넣어주면 C:가 반환된다 했는데 내 환경에서는 그냥 공백값이 반환되었다.

저 함수가 실행되고 나면  공백에 4562-ABEX가 추가되 0040225C에 4562-ABEX가 저장된다.  

그 후 보면 DL에 2값을 넣고 45225C,45225D,45225E,45225F에 1씩 추가를 한다. 이 때 45225C에 4562-ABEX가 저장되어 있으니 순서대로 4 , 5 , 6 , 2 값에 1씩 추가가 될 것이다. 저걸 DL이 1씩 감소하면서 점프문을 만나 반복되 총 2번 적용되게 된다. 그렇다면 6 7 8 4 이 값이 되게 된다. 실제로도 값이 변경되 적용이 되어있다.

이게 문제에서 원하는 정답인 것 같다.  코드엔진에서는 C드라이브 이름을 CodeEngn 이라고 했으니 그럼 C , o , d , e 에 아스키 코드값 2씩 올리면 끝!


아휴..웹쪽 문제만 주구장창 풀다보니 포스팅이 밀린게 너무많아서 할 엄두가 안난다... 괜히 엄한 리버싱만 포스팅.. 귀찮아도 슬슬 해야될 것 같다.


'Wargame > CodeEngn' 카테고리의 다른 글

code engn basic 9번  (0) 2018.01.28
code engn basic 8번  (0) 2018.01.28
code engn basic 6번  (0) 2018.01.28
code engn basic 5번  (0) 2018.01.28
code engn basic 4번  (0) 2018.01.28
블로그 이미지

JeonYoungSin

메모 기록용 공간

,