본문 바로가기

Wargame/Reversing-W

CodeEngn basic 20

20번 문제다. CodeEngn! 이 출력되도록 할 때

crackme3.key 파일의 값이 무엇이 되야하는가? 가 문제이다.



일단 올리디에 던져보면 crackme3.key 파일이 필요한 것과

그 파일에서 18의 크기만큼을 가져온다는 것을 알 수 있다.



일단 crackme3.key 파일을 만들어주고 진행하자.



복호화? 음.. 여튼 그런 루틴이다.

간단하게 설명하면 bl에 0x41('A')값을 저장하고

bl이 0x4F가 될 때까지 bl의 값을 하나씩 늘려가면서 가져온 18개의 파일의 값과

xor 연산을 진행하고 그 값을 저장한다.



1
2
3
4
5
6
7
8
9
num_arr = [67,111,100,101,69,110,103,11033323232323232323232]
 
bl = 65
 
for i in range(0,18):
    num_arr[i] = num_arr[i] ^ bl
    bl = bl + 1
    print hex(num_arr[i]),
 
cs
그래서 그걸 가지고 코드를 짰다. 위 num_arr에 들어 있는 값은 CodeEngn!의 아스키 값이다 더 벗어나는 수는 신경쓰지 않아도 된다. 이런 파이썬 코드를 돌려보면

이런 값이 나온다. 이걸 crackme3.key 파일에 입력하면 안에서 루틴을 돌고

점프문 패치를 조금 해주면



이런 문구가 뜨게된다. 그럼 CodeEngn! 이 뜨게 하려면

crackme3.key 파일이 가져야 하는 값이 이미 나왔다. 끝


반응형

'Wargame > Reversing-W' 카테고리의 다른 글

CodeEngn advance 8  (0) 2017.07.20
CodeEngn advance 5  (0) 2017.07.20
CodeEngn basic 18  (0) 2017.07.19
CodeEngn basic 17  (0) 2017.07.19
CodeEngn basic 16  (0) 2017.07.18