Lena 11
이번에도 register 문제다.


프로그램 아이디에 맞는 패스워드를 입력해야 select 기능을 쓸 수 있다. 따라서 리버싱으로 패스워드를 알아내야 한다.

문자열 검색으로 register 검사하는 곳을 찾았다.
WritePrivateProfileStringA로 입력한 문자열을 특정 섹션에 저장하고 GetPrivateProfileStringA로 섹션에 저장된 문자 버퍼를 가져올 수 있다는 것을 알았다.
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-getprivateprofilestringa
밑에 있는 fjproducer.004046E0을 살펴봤으나, 이미 검사된 것을 가지고 제목을 바꾸는 기능이었다.
invalid가 뜨는 부분을 잘 살펴보면, AL을 사용하는 조건문 2개가 있는데, 처음 조건문은 사용자가 아무것도 입력하지 않았을 때 뜨고, 두번째는 fjproducer.00404640의 반환값에 따라 AL이 0이면 invalid가 뜬다.

따라서 fjproducer.00404640을 더 살펴본다.

이 함수는 여러 복잡한 조건식을 계산하고 마지막에 연산 값을 비교해 5F와 같다면 AL을 1로 설정한다. 따라서 아예 이 함수가 1만 반환하는 함수로 바꿔줬다. (명령어 크기 유의)

이렇게 고치면 register되어 select기능을 쓸 수 있게 된다.

'리버싱 입문' 카테고리의 다른 글
[리버싱 입문](21)[Lena 9] (0) | 2025.03.17 |
---|---|
[리버싱 입문](20)[Lena 8] (0) | 2025.03.14 |
[리버싱 입문](19)[Lena 6] (0) | 2025.03.13 |
[리버싱 입문](18)[Lena 4] (0) | 2025.03.12 |
[리버싱 입문](17)[Lena 3] (0) | 2025.03.11 |