리버싱기초 (3) 썸네일형 리스트형 리버싱 repne ,scas을 사용한 문자열 컨트롤 CTF 문제를 푸는 도중 재미난 문자열컨트롤을 발견하였다. 단순한 시리얼값을 찾아내는 문제였는데 시리얼값을 'ABCDEFG' 로 입력한후 비교하는 루팅을 찾는과정중에 이러한 repne scasb 명령을 보았다. 캡쳐에서는 안보이지만 바로위에 xor ecx,FFFF FFFF 과 xor eax, eax 가 있다. 즉 ecx를 FFFFFFFF로 , eax 를 0 으로 세팅해두는 부분인것. 실행하기전에 레지스터를 확인해보니 앞에서 말했던거처럼 ECX에 FFFF FFFF 이 세팅되어있고 EAX에는 0 EDI에는 내가 시리얼로 입력해둔 'ABCDEFG' 가있는 모습인데. repne의 명령어 즉 rep 계열의 명령어는 문자열컨트롤에 자주쓰이는 어셈블리 명령어 중 하나이다. 주로 ecx레지스터와 함께 자.. [코드엔진] basic 5 풀이 5번 문제 일단 실행. 일단 입력. 당연하게 디버거로 올려봅시다. ????? 아까본 문자열이 없다?? 혹시 패킹되어있는지 확인해봅시다. 짜잔 UPX로 패킹되어있다. 풀어봅시다. 언패킹 언패킹하여 풀어낸 모습. 이제 디버거에 올려서 메시지로 보았던 문자열을 찾아서 이동해보자. 어우야.. 찾은 문자열에서 조금더 위로 올라가면 분기하는 부분들이나오는데 천천히 진행해본결과 문자열을 받아가는 함수 , 문자열을 입력했는지 확인하는 함수 , 1번시리얼과 2번시리얼을 비교하는 함수들이나오길래 시리얼을 위에칸만 입력하는게아니라 아래도 입력을 해야하는걸 알았다. 결과적으로 직접입력한 시리얼값 aaaa1111와 Registered User 을 비교하는데 안에 자세히 들어가면 4개씩 비.. [코드엔진] basic 4 풀이 4번 문제 역시 일단 실행. 정상 일정 시간마다 정상이라는 문자열이 출력된다. 디버거에 올리고 실행시켜보자. 오 오. 디버거를 천천히 실행시켜 저 문자가 나오는부분을 찾아봤다. 이 함수 안에서 나오고있다 F7을 이용해서 들어 가본다 . sleep 라는 함수때문에 일정간격으로 문자가 나오고있던거같다. 그다음 함수 Isdebuggerpresent 이름 부터 디버거라는 말이 들어가는 저함수가 정답이다. 끝 이전 1 다음