본문 바로가기

System & Reversing/실습

ReadInt 함수 분석 3 <test.second>

ReadInt 함수 분석 3 <test.second> 


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


14. call <test.second> 들어가기




15. cmp ecx, 0


->  ecx 0을 비교해서 0이 아니면 점프

-> 점프



**

je: jump equal - 비교 결과가 같을 때 점프

jne: jump not equal - 비교 결과가 다를 때 점프 

**



16. cmp al, 20

-> al(eax)  20(‘ ‘)을 비교,  eax=31  “1”

->  20과 다르므로 점프하지 않음



17. cmp al, 9

-> 밑에 cmp al(eax) , 9(\t) 도 비교

-> 9과 다르므로 점프하지 않음



18.  loop

-> 그 다음 점프해서 글자 자릿수 만큼 loop




19.  cmp al, 2D / cmp al, 2B

-> '-' 연산자와 비교 후 값이 다르면 점프

-> 다름

-> 점프


-> 왼쪽으로 넘어와 '+' 연산자와 비교

-> 다름

-> 점프


**

'+' : 2B / '-' : 2D

**


20. Enter 값 지우기 (추측)

-> 이 밑에 식들은 cmd 에서 숫자 입력 후 엔터를 치기 때문에 

  같이 입력 된 Enter (10) 을 없애는 과정으로 추측



21. imul

그리고 입력 받은 첫번째 수 숫자부터 뽑아와

 imul 로 숫자 계산


-> 이 부분에서 각 자리수가 무엇인지 알아내어 edx 레지스터에 저장




22. cmd 에 1234 입력

-> cmd  1234 를 입력한후 edx 에 들어온 값 확인


-> loop 를 돌고 있기 때문에 계속 확인

-> loop 를 돌면서 3도 뽑아냄을 알 수 있음


-> 따라서

second 함수는 loop 돌면서 입력 받은 숫자 반환


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

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