reversing
리버싱 레벨 1 문제를 다 풀어서 레벨 2 문제 중 최신문제를 풀었다
문제에서 제공된 코드를 디컴파일한 결과이다
코드의 순서를 살펴보면
0x7F
를 &연산한다이 순서로 코드가 진행되고 그 결과값을 하드코딩된 문자열에 비교하는걸 알 수 있다
그러면 그 반대로 진행을 한다면 원하는 입력값을 알아낼 수 있다
반대로 진행을 해보자
result = b"C@qpl==Bppl@<=pG<>@l>@Blsp<@l@AArqmGr=B@A>q@@B=GEsmC@ArBmAGlA=@q"
result = list(result)
result2 = ""
for i in result:
i = i ^ 3
result2 = result2 + chr(i)
print(result2)
result2 = b"@Crso>>AssoC?>sD?=Co=CAops?CoCBBqrnDq>ACB=rCCA>DFpn@CBqAnBDoB>Cr"
result2 = list(result2)
result3 = b'rC>BoDBnAqBC@npFD>ACCr=BCA>qDnrqBBCoC?spoAC=oC=?Ds>?CossA>>osrC@'
result2 = list(result3)
res = ''
for j in result3:
j = j & 0x7f
j = j - 13
res = res + chr(j)
print(res)
#e615b75a4d563ac971466e05641d7aed556b62fcb460b6027f126bff411bfe63
한번에 역연산하기는 아직 어려운거같아서 하나씩 연산을 진행하여 코드를 작성해 나갔다