압축파일을풀고 실행하면, 숫자만 입력할 수 있다.
근데 입력하면 종료된다.
EXE32이니까 올리로 분석해보자
입력값 갖고와서 4084D0 에 넣는다.
그리고 0x40466F 호출후 0x404690 으로점프
[ 0x40466F ]
0x40467A 호출, 4084D0 += 0x601605C7
0x404689 호출, 4084D0 + 1
RETN, 408xD0 + 2
[ 0x40467A ]
4084D0 + 3, RETN 후 다시 4084D0 + 4
[ 0x404690 ]
4084D0 ( 0x601605C7 + 4 + 입력값 ) 을 eax 에 옮기고,
0x404689 호출 ( 4084D0 + 1 )
그리고 0x40466F 함수에 C39000C6 덮어씀
↓
함수가 변했다. eax 값에 90 ( NOP ) 을 넣어버리고 리턴.
0x40466F 함수 호출 후, EAX +1 , 다시호출.
6E8 을다시넣어서 함수복구,
0x401071 로 점프
하지만, 임의의 주소에 NOP 을 쓰니 오류가 발생하는 것 같다.
[ 0x401071 ]
0x401084 로 점프한다. (EndDialog)
함수분석을 통해, 0x601605C7 + 4 + X , 0x601605C7 + 5 + X 에
각각 90 (NOP) 을 쓸 수 있다는 것을 알았다.
401071 에 EB 11 (JMP SHORT 00401084) 을 90 90 으로 만들면
JMP 문 밑에있는 Correct 세팅함수가 실행될것이다.
0x601605C7 + 4 + X = 0x401071 이 되어야한다.
X=0x401071 - 4 - 0x601605C7
X 의 값이다. 주소값은 8byte 이기때문에
A02A0AA6 만 있으면 된다.
10진수로 변환 -> 2687109798
한번 입력해보자
정상적으로 NOP 으로 패치되어, Correct 로 세팅이 된다.
Auth 에 2687109798 을 입력하면되겠다.