본문 바로가기

WARGAME/Root-Me

ELF - KeygenMe

하 이문제는 역대급을 뻘짓을 많이했다


우선 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