8번 문제다. 키 값이 "5D88-53B4-52A87D27-1D0D-5B09"일 때
Name을 구하라고한다.
일단 실행시켜서 Name에 아무값이나 넣고
Key 값에 "5D88-53B4-52A87D27-1D0D-5B09"를 넣고 Check it!을 해보자
더 많이 치란다.. 저번에 그 문제처럼
그래서 올리디로 던져서 분석했다
일단 스트링 검색으로 살펴보면 Well Done! 이 보인다.
저 곳으로 이동해보자
이동해서 위로 올라가면서 살펴보면 이렇게 저번처럼
글자수 비교루틴이 있다. 저 글자수 비교 부분의 수를 좀 패치해주자
2글자라고 햇으니 2와 비교하게끔 패치했다.
이제 최소 2글자를 입력해야 프로그램이 정상적으로 동작할 것이다.
다음은 키 값을 만들어내는 루틴인데
저번이랑 그렇게 다르지않다.
하나 다르다면 이번에는 2글자를 받아오는 루틴이므로
처음 글자 + 두번째 글자 순이라는 것..?
처음글자와 두번째 글자의 조합에 맞춰서 키 값이 결정된다는 점이
저번 문제와 다르다면 다르다 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | edx = 0 number = 0 temp = 0 temp2 = 0 ecx = 0 eax = 0 for i in range(48,123): edx = 0 esi = i esi += edx esi = esi * 0x772 edx = esi edx *= esi esi = esi + edx esi |= esi esi = esi * 0x474 esi += esi edx = esi temp = edx for a in range(48,123): esi = a edx = temp esi += edx esi = esi * 0x772 edx = esi edx *= esi esi = esi + edx esi |= esi esi = esi * 0x474 esi += esi edx = esi print hex(edx)+" "+chr(i)+chr(a) for i in range(48,123): number = 0 edx = i edx = edx + 0x11 edx -= 0x05 edx = edx * 0x92 edx = edx + edx edx = edx * 0x819 number = edx + number temp2 = number for a in range(48,123): edx = a number = temp2 edx = edx + 0x11 edx -= 0x05 edx = edx * 0x92 edx = edx + edx edx = edx * 0x819 number = edx + number print hex(number)+" "+chr(i)+chr(a) |
키 값에 맞게 공통되는 문자+숫자가 있었다.
키 값에 맞게 공통되는 문자+숫자가 있었다.
그걸 인증하면 Well done!이 출력된다. 끝.
반응형
'Wargame > Reversing-W' 카테고리의 다른 글
wargame.kr easy_crackme (0) | 2017.08.01 |
---|---|
CodeEngn advance 9 (0) | 2017.07.20 |
CodeEngn advance 5 (0) | 2017.07.20 |
CodeEngn basic 20 (0) | 2017.07.19 |
CodeEngn basic 18 (0) | 2017.07.19 |