문제
"컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가"
해결
프로그램은 단순하다. 한가지 UserForm을 받아서 판정하는 실행프로그램이다. 바로 디버거로 만나보자
MessageBoxA 파라미터의 Error!위쪽에 문제와 연관되는 함수가 보인다. 0x00401099에 GetVolumeInformationA라는 함수가 보이는데, API를 조금 보고오자 Fileapi.h에 정의되어 있는 함수다.
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationa
BOOL GetVolumeInformationA(
LPCSTR lpRootPathName, // root디렉토리를 가르키는 String이 있는 pointer
LPSTR lpVolumeNameBuffer, // 지정된 볼륨의 이름을 저장하는 버퍼를 가르키는 pointer
DWORD nVolumeNameSize, // volume name Buffer의 길이
LPDWORD lpVolumeSerialNumber,
LPDWORD lpMaximumComponentLength,
LPDWORD lpFileSystemFlags,
LPSTR lpFileSystemNameBuffer,
DWORD nFileSystemNameSize
);
적당히 주석도 달아보았다. 우리의 프로그램은 다음과 같이 동작한다.
그러니 강제로 0040225C에 CodeEngn을 넣어보자
마지막 비교분기(0x4010F7)에서 우리의 입력은 L2C-5781EqfgEngn4562-ABEX과 비교된다. 즉 CodeEngn은 EqfgEngn으로 변환된다.
'WarGame > CodeEngn' 카테고리의 다른 글
[CodeEngn] 코드엔진 - Basic RCE 9 - (0) | 2021.10.17 |
---|---|
[CodeEngn] 코드엔진 - Basic RCE 8 - (0) | 2021.09.05 |
[CodeEngn] 코드엔진 - Basic RCE 6 - (0) | 2021.09.05 |
[CodeEngn] 코드엔진 - Basic RCE 5 - (0) | 2021.09.05 |
[CodeEngn] 코드엔진 - Basic RCE 4 - (0) | 2021.09.04 |