System & Reversing/실습 (3) 썸네일형 리스트형 ReadInt 함수 분석 3 <test.second> ReadInt 함수 분석 3 사용한 툴: x64/x32dbg , Visual Studio 2017 14. call 들어가기 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-> '-' 연산자와 비교 .. ReadInt 함수 분석 2 <test.first> ReadInt 함수 분석 2 사용한 툴: x64/x32dbg , Visual Studio 2017 6. call 에서 cmd 에 값 입력 (10 입력) -> cmp dword ptr ds :[],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. -> dec 로 문자열 앞자리로 .. ReadInt 함수 분석 1 <test.first> ReadInt 함수 분석 1 사용한 툴: x64/x32dbg , Visual Studio 2017 1. call 들어가기 2. call 들어가기 3. cmp byte ptr ds:[],0 => 0과 비교 -> jne 후 ZE=1 / 들어온 값이 0임을 알 수 있음.(jne : 0이 아니거나 같지 않을때 점프) ** 그래프로 보기 ** 4. jne후-> 점프하지 않고call 로 넘어감 5. call -> readconsole() 검색 -> 스택은 역순이므로, 거꾸로 한줄씩 대응 여기에서, inputhandle 이 hConsoleInputpush edx 가 lpbufferpush ecx 가 nNumberofchastoread 이므로 레이블로 알아보기 쉽게 lpNumberof CharsRead 지정 ~ 값 입.. 이전 1 다음