CodeEngn basic 7번 문제
컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가
문제를 보니 컴퓨터 드라이브의 이름으로 시리얼을 생성하는 것 같다.
실행을 하여보니 시리얼을 맞추는 프로그램인 것 같다.
성공구문이 보인다.
성공구문으로 가서 올려다 보니 GetVolumeInformationA라는 함수가 있다.
함수이름을 보았을 때는 Volume에 대한 정보를 갖는 함수인 것 같다.
여기에 브레이크 포인트를 걸고 천천히 실행시켜보아야겠다.
실행을 하여 보니 나의 드라이브이름이 40225C에 들어간 것을 볼 수 있다.
계속 실행 해보겠다.
lstrcatA라는 함수를 보니 StringToAdd와 ConcatString을 합쳐서 ConcatString에 저장하는 함수인 것 같다.
MOV DL,2명령어가 있는 것을 보아 2번 반복하는 것을 알 수 있다.
4010AF부터 4010C4 까지 보니 40225C,40225D,40225E,40225F의 값을 1씩 증가시키는 것을 볼 수 있다.
PTR DS 이니 데이터영역에서 40225C로 가보니 GetVolumeInformationA함수로 드라이브 이름이 있는 것을 볼 수 있다.
실행을 하여 보니 HEX dump에 하이라이트한 4바이트가 1바이트씩 1증가 한 것을 볼 수 있다.
반복문으로 다시 점프하고 한번 더 실행하여 다시 +1된것을 볼 수 있다.
계속 진행해보겠다.
lstrcatA함수를 2번하고 lstrcmpiA함수를 사용하여 내가 입력한 Serial과 최종변경된 Serial값을 비교하는 것을 볼 수 있다.
정리하면, GetVolumeInformationA라는 함수를 통해 드라이브의 이름을 알아내 뒤에 4562-ABEX의 값을 붙인 뒤
드라이브의 이름 앞에 4바이트를 +2올린 후 앞에 L2C-5781을 붙여 Serial을 만드는 프로그램이다.
즉, CodeEngn이 드라이브 이름이면 Serial은 L2C-5781EqfgEngn4562-ABEX인 것을 알 수 있다.
답 : L2C-5781EqfgEngn4562-ABEX
'리버싱 > CodeEngn 문제풀이' 카테고리의 다른 글
CodeEngn basic 9번 문제 풀이 (0) | 2020.08.13 |
---|---|
CodeEngn basic 8번 문제 풀이 (0) | 2020.08.11 |
CodeEngn basic 6번 문제 풀이 (0) | 2020.08.09 |
CodeEngn basic 5번 문제 풀이 (0) | 2020.08.08 |
CodeEngn basic 4번 문제 풀이 (0) | 2020.07.28 |