이번 문제 역시 값을 입력받고 맞으면 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라는 것을 알 수 있다.

 

계산방법으로 코드를 짜면 밑과 같다.(코드부분은 블로그를 참고하여 해결하였다.)

'보안 > 리버싱' 카테고리의 다른 글

IAT, EAT 로딩 과정  (0) 2021.10.02
[리버싱] 드림핵 rev-basic-6 풀이  (0) 2021.10.02
[리버싱] 드림핵 rev-basic-4 풀이  (0) 2021.10.02
[리버싱]pe 헤더 정리  (0) 2021.09.25
[리버싱]패킷 & UPX 문서화  (0) 2021.09.25

+ Recent posts