Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다
이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.
문제 : Key값과 + 주소영역을 찾으시오
Ex) 7777777????????
PE 파일 정보 확인
패킹이 되어 있지 않다.
어셈블리 코드 분석
F9로 EntryPoint로 이동한다.
Congratulation을 내용으로 하는 메시지박스는, eax 값이 0x7A2896BF와 동일할 때 해당 branch로 이동해서 띄울 수 있다.
그리고 MessageBoxA 함수 호출 전 인자를 넣는데, 텍스트는 0x401086과 0x40108B 주소에서 문자열을 인자로 push한다.
실행 후 키 입력해도 eax 값이 key 값과 다르기 때문에 congratulation 출력하는 branch로 가지 않는다.
eax를 7A2896BF(2049480383)으로 바꾼다.
정상적으로 MessageBox 함수를 호출하는 branch로 흐름이 이동한다.
이후 MessageBox를 띄우는데, Congratulation, ~ 부분을 수정해야 한다.
HxD로 열었을 때 2049480383를 복사 후, Decoded text 부분에서 C로 시작하는 부분에 우클릭해서 붙여넣기 쓰기를 선택해서 텍스트를 수정한다. 83 뒤로는 t가 남아있는데, key만 출력되도록 00을 채운다. t 선택해서 우클릭 후 선택 채우기로 00을 넣으면 된다.
그럼 0x0D3B부터 0x0D45가 수정하는 부분이다.
수정한 파일을 다른이름으로 저장 후, 해당 파일로 다시 x32dbg로 열어봤다.
In the Bin 밑에 수정한 key 값이 정상적으로 들어가서 해당 텍스트를 인자로 가져오는 것을 확인할 수 있다.
원하는대로 key 값을 MessageBox에 출력했다!
따라서 Auth에 적을 key 값은 20494803830D3B0D45 이다.
[CodeEngn] Basic RCE L13 (0) | 2021.06.01 |
---|---|
[Reversing.kr] Easy Crack (0) | 2021.05.25 |
CodeEngn Basic RCE L11 (0) | 2021.05.23 |
CodeEngn Basic RCE L09 (0) | 2021.05.23 |
abex crackme #1 with code injection(코드 인젝션, 메모리 덤프) (0) | 2021.05.18 |