728x90

풀이

main 함수이다. sub_140001000 함수을 살펴보자.

함수를 살펴보면 byte_140003000에 위치한 배열과 a1의 상위 4비트, 하위 4비트의 위치를 바꾼 값과 비교해서 일치하면 되는 것을 확인할 수 있다. 

byte_140003000의 배열값을 복사하고, 파이썬 코드를 작성하자. 배열값의 상위 4비트, 하위4비트의 위치를 바꾸면 원하는 값을 얻을 수 있을 것이다. 

data = bytes.fromhex("24 27 13 C6 C6 13 16 E6 47 F5 26 96 47 F5 46 27 13 26 26 C6 56 F5 C3 C3 F5 E3 E3 00 00 00 00 00")

tmp = []

for i in range(28):
    a = (data[i]<<4|data[i]>>4)%256
    tmp.append(chr(a))
    
for i in range(28):
    print(tmp[i],end='')

여기서 ascii 코드 변환을 제대로 하기 위해서 %256도 해줘야한다.

결과는 이렇게 나왔다. 

파일을 실행하여 확인해보면 찾던 입력값인 것을 확인할 수 있다. 

'Write-up > Reversing' 카테고리의 다른 글

[Dreamhack] rev-basic-6  (0) 2024.05.14
[Dreamhack] rev-basic-5  (0) 2024.05.14
[Dreamhack] rev-basic-3  (0) 2024.05.13
[Dreamhack] rev-basic-2  (0) 2024.05.13
[Dreamhack] simple-operation  (0) 2024.05.13

+ Recent posts