보안/리버싱
[리버싱] 드림핵 rev-basic-5 풀이
jiiihye
2021. 10. 2. 20:52
이번 문제 역시 값을 입력받고 맞으면 correct 틀리면 wrong을 출력하는 문제이다.
이번 역시 값을 결정해주는 부분같은 call부분을 들어가 보았다.
inc eax부분을 통해 eax에 입력된 값 중 가장 첫번째 값을 넣는것을 알수 있따.
ecx에 +1을 수행해준다
add eax,ecx를 통해 eax+ecx값을 eax에 넣는다는 것을 알 수 있다.
lea rdx,qword ptr ds:[7FF655AC3000]부분을 통해 주소에 있는 값을 ecx에 넣고 eax와 비교하는 것을 알 수 있다.
주소에 해당하는 덤프를 따라갔다.
이문제의 계산되는 방식을 정리하면 밑에 식처럼 반복하는 것을 볼 수있다.
str[0] + str[1] = src[0]
str[1] + str[2] = src[1]
...
str[0x16] + str[0x18] = src[0x16]
str[0x17] + str[0x18] = src[0x17]
str[0x17] + str[0x18] = 0이고 str[0x17] = str[0x18]=0인 결론이 나온다.
str[0x16] + 0 = 4C니까 str[0x16] = 4c라는 것을 알 수 있다.
계산방법으로 코드를 짜면 밑과 같다.(코드부분은 블로그를 참고하여 해결하였다.)