Lena 8

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

Lena 11 이번에도 register 문제다.프로그램 아이디에 맞는 패스워드를 입력해야 select 기능을 쓸 수 있다. 따라서 리버싱으로 패스워드를 알아내야 한다. 문자열 검색으로 register 검사하는 곳을 찾았다.WritePrivateProfileStringA로 입력한 문자열을 특정 섹션에 저장하고 GetPrivateProfileStringA로 섹션에 저장된 문자 버퍼를 가져올 수 있다는 것을 알았다.https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringahttps://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase..

리버싱 입문 2025.03.18

[리버싱 입문](21)[Lena 9]

Lena 9 이번엔 key를 찾는 문제다. 설치 관리자를 보면 검증하는 부분이 아무것도 없다. 이것도 지난번 Lena 8과 마찬가지로 설치한 파일에서 검사가 이루어진다.설치하고 실행하자마자 구매창이 뜬다. 이름이나 회사같은 정보 입력 없이 register key를 입력한다고 뜬다.예전에 abexcrackme에서 많이 봤던 vba가 보인다. vba에서 많이 쓰였던 것은 다음과 같다. __vbaVarTst: 모든 데이터 타입 비교__vbaStrCmp: 문자열 데이터 비교 일단 vbaVarTstEq밑을 계속 따라가며 register key가 있는지 찾아본다.대표사진 삭제사진 설명을 입력하세요.뭔가 수상한 문자열이 보인다. 수상한 문자열 oeiu-564-oqei-97을 입력하면 register 된다.

리버싱 입문 2025.03.17

[리버싱 입문](20)[Lena 8]

Lena 7 이번에도 어김없이 unregistered version이다.온라인 구매 페이지는 이미 사라진 지 오래라서 register에서 이메일과 라이센스를 검사하는 부분을 뛰어넘을 수밖에 없다. email로 문자열 검색을 하면 수상한 부분이 나온다.  함수들을 보면 MrBills.004A40B6는 큰 영향은 없어보이고,MrBills.0040714C에서 직접 검사가 이루어져 반환값이 0이라면 register한다. 따라서 프로그램 실행 중간에 중단점을 걸고 EAX를 바꾸거나 조건문을 JNZ에서 NOP로 바꾸면 된다. 그러면 register했다고 뜬다. 참고로 프로그램을 이전에 푼 문제와 다르게 종료할 때마다 unregistered로 바뀌므로 NOP로 아예 패치한 것이 나아 보인다.

리버싱 입문 2025.03.14

[리버싱 입문](19)[Lena 6]

Lena가 만들어진지 오래되었다 보니 일부 문제는 실행이 잘 안되네요ㅠㅠLena 5는 나중에 풀겠습니다. Lena 6 이번에는 앱이 창을 하나 띄우고 작동하지 않는다.근데 이건 내 윈도우와 프로그램 간 호환성의 문제였다.따라서 XP로 호환성을 변경해서 열어 실행했다.또한 ollydbg에서 예외처리를 무시하게 해 중간에 멈추지 않고 실행하게 했다.이번에도 실행하자마자 unregistered version이라고 뜬다.또한 5일동안 밖에 못 쓰게 되어있다.여기저기 눌러보다 보니 reg key를 사용해 register할 수 있다는 것을 알 수 있었다. 문자열 찾기로 register key를 검사하는 곳을 찾을 수 있다.위에서 올바른 버전에 엑세스 하는지 검사하고, 올바른 버전이라면 key를 검사하고 regist..

리버싱 입문 2025.03.13

[리버싱 입문](18)[Lena 4]

Lena 4 파일을 켜서 시키는대로 설치하면 몇몇 기능이 제한된 UNREGISTERED 버전이 설치된다. 이것을 REGISTERED 버전으로 우회해야한다일단 설치 관리자를 뜯어봤다.여기서 REGISTERED인지 검사해서 다른 파일을 설치해주나 라고 추측했으나, astrum installer로 설치 파일을 만들었다는 것 빼고는 별다를 건 없다. 처음부터 그냥 UNREGISTERED버전으로 깔리는 듯 하다. 설치된 프로그램을 살펴본다.register이라는 문자열로 찾아본 결과, register를 하지 않으면 새 그룹 만들기가 3개로 제한이 걸리고, 인원 제한 4명이 걸리는 것을 알 수 있다.- 그룹 만들기 제한 해제CMP EAX, 3과 JL로 3명 이하인지 판단한다. 따라서 이 부분은 그냥 JMP로 바꿔주면..

리버싱 입문 2025.03.12

[리버싱 입문](17)[Lena 3]

Lena 3 이번에는 Nag창을 없애면 register할 수 있다고 한다.처음에 GetModuleHandleA로 핸들을 받고 0과 비교해서 맞다면 분기가 나눠진다.https://learn.microsoft.com/ko-kr/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlea에 따르면, 매개변수가 Null일 경우에는 이 함수를 부른 파일의 핸들을 반환한다고 한다. 따라서파일 헤더의 주소인 400000을 반환한다. 따라서 항상 Nag창이 뜰 수밖에 없다.EAX가 0이어야 첫번째 Nag창을 건너뛸 수 있으나, EAX엔 언제나 00400000이 저장된다. 따라서 그냥 점프하는 부분을 바꿔주겠다.첫번째 Nag창은 점프로 해결하였다.두번째 Nag창은 아..

리버싱 입문 2025.03.11

[리버싱 입문](16)[Lena 2]

Lena 2 이번 문제는 Lena 1과 동일하지만 다른 방식으로 풀어보라고 한다.이번에는 아예 파일을 패치해서 풀어보겠다. 먼저 CreateFileA로 파일이 있는지 검사하는 부분부터 손보겠다.JNE를 JMP로 바꿔주면 키파일이 있던 없던 항상 다음 단계로 진행한다. 이후 ReadFile 밑에 있는 조건들도 각각- 파일을 못 읽었을때도 무조건 다음으로 점프하기- 파일의 크기가 16미만이어도 아무런 행동 하지 않기- G가 8개 미만이어도 wrong으로 점프 안하게 만들기를 해주고 저장하면 언제나 correct가 뜬다.

리버싱 입문 2025.03.10

[리버싱 입문](15)[Lena 1]

Lena 1 이번 문제는 실행하면 파일을 구매하지 않았다는 창만 뜬다. 이 구매 여부를 우회해야 한다  조건문 위를 보면 CreateFileA가 보인다. (리버싱 입문 5 참고)매개변수를 보면 Keyfile.dat가 있다면 열고 없으면 오류로 EAX에 2가 저장되어 구매 창이 뜬다.따라서 Keyfile.dat파일을 해당 문제와 같은 디렉터리에 생성한 후 다음으로 넘어가겠다.  키파일이 있는지 검사한 후에는 ReadFile로 파일을 읽는다. 그냥 빈 키파일이면 vaild keyfile이 아니라고 한다.not valid가 뜨는 이유- https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-readfile 를 보면 실패하면 0을 반환한다...

리버싱 입문 2025.03.07
728x90