reverseMe.exe 분석
프로그램 구성
1.
CreateFileA 함수로 dat 파일 읽음
2.
파일이 없을 시 “Evaluation period out of date. Purchase new license” 출력
3.
파일이 있으면 ReadFile 함수로 파일을 읽고, 데이터가 판별식 조건에 참이면 성공
문제 해결
1.
“Evaluation period out of date. Purchase new license” 가 출력되는 이유는 파일이 없기 때문이다
2.
reverseMe.exe 와 동일한 위치에 .bat 파일 생성 (값은 임의로 설정)
3.
생성하면 해당 조건식을 통과하는 것을 확인할 수 있다
통과하여 ReadFile 함수 실행 수 처음 만나는 판별식에서 16과 비교
402173의 데이터를 확인해보면 내가 입력한 단어의 갯수임을 알 수 있다
4.
그렇다면 16보다 크게 17개를 입력하여 해당 조건문 탈출, 그 다음 조건문에서는 반복하여 글자 하나씩 검사, 검사한 글자가 G(47) 이면 ESI 값을 1씩 증가시킨다
그리고 최종적으로 ESI가 8보다 크거나 같으면 “Congratulation” 이 출력되는 곳으로 점프할 수 있다
5.
ESI 는 8보다 크거나 같기만 하면 되고, 상한선은 없는 듯하다 그러면 16글자가 넘으면서 ESI를 8번 이상 증가시키기 위해 17글자 모두를 ‘G’로 작성하여 dat파일 재생성
6.
완료
‘G’는 8번만 들어가면 되니 1234566789GGGGGGGG 이런식으로 8번만 사용해서 dat 파일을 생성하더라도 결과는 같다
챌린지
1.
1번과 동일한 방법으로 첫번째 루프 해제
2.
난독화된 문자열을 변조해서 다시 돌려주는 코드에서, 변조 완료했을때 결과가 초기값과 똑같다. 이 부분이 해결돼야할 것 같다