
EXEINFO

Logic

- a[i+1] + a[i] 를 저장된 값과 비교하고 있다.
- 입력 값을 1 2 3 4로 가정하면
- a[1] + a[0] = 3
- a[2] + a[1] = 5
- a[3] + a[2] = 7
- a[4] + a[3] = 4
- 마지막 값은 연산과정을 따로 거칠 필요가 없다.
- 역연산을 하려면,
- 맨 뒷 자리값을 a[i]라고 할 경우,
- a[i-1] - a[i] = b
- b - a[i-2] = c
- c - a[i-3] = d
- 대충 이렇게 연산이 진행된다.

- 즉, byte_140003000에 저장된 값을 위의 방식으로 연산해주면 된다.
Code
array = [0xAD, 0xD8, 0xCB, 0xCB, 0x9D, 0x97, 0xCB, 0xC4, 0x92, 0xA1, 0xD2, 0xD7, 0xD2, 0xD6, 0xA8, 0xA5, 0xDC, 0xC7, 0xAD, 0xA3, 0xA1, 0x98, 0x4C, 0x00]
array.reverse()
res = [0x00,]
for i in range(1, len(array)):
tmp = array[i] - res[i-1]
res.append(tmp)
res.reverse()
for i in range(len(array)):
print(chr(res[i]),end='')
- 역으로 돌려야하기에 reverse()로 역전시켜준다.
- 맨 뒤값과, 그 앞값을 연산해서 res에 추가해준다.
- flag가 역전되어 res에 추가되었기 때문에 다시 돌려준다.
- 출력!
