리버싱 입문

[리버싱 입문](22)[Lena 11]

황올뱀 2025. 3. 18. 21:23

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기능을 쓸 수 있게 된다.

728x90
반응형

'리버싱 입문' 카테고리의 다른 글

[리버싱 입문](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