하 이문제는 역대급을 뻘짓을 많이했다
우선 name은 Root-Me라고 알려주었다
하지만 난 개뻘짓을 하였고 다른걸 입력하고있었다
시리얼도 마찬가지다 문자를 입력하면 안되고 숫자를 찾는거다
ㅂㄷㅂㄷ 다 써있는걸 못읽었다
우선 열면 프로그램상의 환영메시지를 볼 수 있다
하지만 문자를 비교하는 값이 안나와있는데
위로 올리다보면 이런 값이 있는데 단축키 c를 눌러준다
그럼 밑에 처럼 안보이던 80491D1함수가 나타나는데 딱봐도 그렇다
이 프로그램은 안티디버깅이 걸려있는데
이름은 3글자 이상이고
시리얼은 숫자다
여기가 바로 중요한 부분인데 딱봐도 음...
처음에 많이 헷갈렸지만 몇번 해보니깐 다 알 수 있다
그리고 중간중간 총 3번 rdtsc 명령어가 보인다
이건 시간을 비교하는거니깐
바로 분기에 브포를 걸고
실행하면된다
프로그램에 입력한 시리얼은 문자형이니깐
strtoull함수로 숫자형으로 바꿔준다
그리고 위에 분기를 다시 설명하자면
ecx에 내가 입력한 시리얼이 16진수로 들어가있고
ebx에는 name 즉! Root-Me가 들어있다
그리고 안티디버깅하나더 있고
이제 중요한 핵심이 있다
edx와 edi를 XOR한다
몇번 실행해보면 알겠지만 EDX는 고정값으로 0x00268725로 되어있다
EAX도 또한 고정되어있다
마지막으로 or EDX, EAX를 통해 분기가 결정되는데 둘다 0이여야 통과를 할 수 있다
즉 edi를 edx랑 같게해야하고 ecx도 같게해야한다
이제부터 슈퍼 게싱을 해야한다
우선 시리얼이 10자리 미만이면 edi가 0으로 되어있다
그래서 1을 15개 너었더니
650E로 되었다
처음엔 감이 안잡혀서 막 헤맸는데
저걸 계산기에 입력해봤다
이렇다는걸 엄청난 노동끝에 알게되었다
그럼 조건대로 0x00268725 이걸 맞춰줘야한다
10844642098544640
이렇게 입력하면 맞출 수 있다
근데 이렇게 입력하니깐
ECX가 0인걸 볼 수 있다
???
좀 신기했지만 그럼 느낌상 16진수로 뒤에 0이니깐 ecx에 0이 아닐까 생각되어진다
0xAF51B153 그래서 더하면
되었다 이게 입력해보자
10844645039911251
참 뻘짓을 많이했다
뻘짓만 안했어도 한 30번이면될 껄 180번했다
사실 어제까지 합치면 300이 넘을 것이다..
'WARGAME > Root-Me' 카테고리의 다른 글
PE - RunPE (0) | 2017.01.13 |
---|---|
PDF - Javascript (0) | 2016.12.05 |
ELF - Random Crackme (0) | 2016.11.29 |
ELF - Anti-debug (0) | 2016.11.28 |
ELF - ExploitMe (0) | 2016.11.28 |