역시 실행부는 앞의 문제와 동일하다.
메인함수도 거의 동일하다.
7FF794AE1000함수로 들어가보자.
[cmp rax,18]를 보아 문자열의 길이가 0x18 = 24임을 알 수 있다.
rev-basic-2문제와 유사해 보이지만 덤프를 따라가보면
아스키 변환한 값이 이상한 것을 보니 헥스 코드를 사용하는 것 같다.
어셈블리어 해석을 할 수 있어야 되는데 어색하니 IDA를 통해 비교함수부분을 디컴파일 해보면
조건식이 나온다. a1에 헥스코드가 들어가고 이를 파이썬을 통해 역산식으로 대입해보면
str = '49 60 67 74 63 67 42 66 80 78 69 69 7B 99 6D 88 68 94 9F 8D 4D A5 9D 45'
str = tuple(str.split(" "))
res = ''
for i in range(24):
res += chr((int(str[i],16) - (2*i)) ^ i)
print(res)
어떠한 문자열이 나온다. 이를 chall3.exe에 입력하면
이제 어셈블리어를 해석해야되는 수준까지 왔다. 아직 어셈블리어가 익숙하지 않기 때문에 스터디 기간동안 어셈블리어를 공부해야될 필요성을 느끼게됐다
'Security > Reversing' 카테고리의 다른 글
Dreamhack rev-basic-5 (0) | 2022.05.28 |
---|---|
Dreamhack rev-basic-4 (0) | 2022.05.25 |
Dreamhack rev-basic-2 (0) | 2022.05.23 |
Dreamhack rev-basic-1 (0) | 2022.05.23 |
Dreamhack rev-basic-0 (0) | 2022.05.23 |