[CodeEngn] Basic RCE L14
L14
문제
Name이 CodeEngn 일때 Serial을 구하시오
파일 실행
- Name
- Serial
올리디버거
- 패킹
ExeinFoPe
언패킹(수동)
분기점 찾기
- EAX와 ESI 비교 후 성공 문자열 실패 문자열
- EAX, ESI 중 Serial 값 있을거라 추측
- CMP에 BP(Break Point)
GetDigItemTextA 함수
- GetDigItemText : 컨트롤의 문자열을 얻는 함수
- BP 걸어줌
F9
- GetDigItemText를 통해 Name과 Serial 호출
- 받은 문자열 길이만큼 EAX에 반환
- 길이가 0인지 체크해서 메시지박스 유무 판단
알고리즘
- Name 값 길이 구함
- EAX(Name 길이) 만큼 알고리즘 반복
- 알고리즘(10진수 Seial 값) 결과값 ESI에 저장
- User 입력 Serial 값 CALL 14.00401383 으로 Serial 값 16진수로 변환후 EAX에 저장
- EAX와 ESI 비교 후 분기