본문 바로가기

System & Reversing/실습

ReadInt 함수 분석 2 <test.first>


ReadInt 함수 분석 2 <test.first> 


사용한 툴:  x64/x32dbg , Visual Studio 2017


6. call <test.ReadConsoleA> 에서 cmd 에 값 입력 

(10 입력)



-> cmp dword ptr ds :[<lpNumberof CharsRead>],0 에서 0과 비교 후 

ZE=0, 따라서 je(0과 같으면 점프) / 0이 아니므로 점프하지 않고 그대로 넘어감



7.  EAX  확인

-> al (eax)  A(10) 넣어짐

숫자 10 : cmd 에서 숫자 입력 후 쳤을 Enter 로 예상



8. repne scasb

: EDI가 가리키는 곳에 EAX에 저장되어 있는 값이 있는지 스캐닝



9. ECX 확인


-> ecx 4c 확인 가능(80) / ZE=1 이므로 0

(jne : 0이 아니거나 같지 않을때 점프이므로 점프하지 않음 




10. <lpNumberof CharsRead>

-> dec 로 문자열 앞자리로 이동했다고 추측



11. jae

sub edi,2 

cmp edi,edx

jae test.161c96

(jae : 0보다 크기가 같을 때 점프)

에서 점프.




12. mov byte ptr ds:[edi],0 후 ret 으로 함수(first) 리턴

-> 여기에서,

eax=2 가 된 것으로 보아입력한 수의 자릿수 임을 예측




13. 다시 재실행 해서 글자 100 입력한 후 eax=3 인지 확인


~위와 똑같은 과정 반복~


-> 따라서,

 first 함수는 입력받은 문자열의 길이를 반환줌을 알 수 있음



~ <test.second> 는 함수 분석 3에서 ~

'System & Reversing > 실습' 카테고리의 다른 글

ReadInt 함수 분석 3 <test.second>  (0) 2019.02.15
ReadInt 함수 분석 1 <test.first>  (0) 2019.02.15