전체 글168 hackme reach lvl 9000 https://crackmes.one/crackme/63c34e6833c5d43ab4ecf45b Crackmes How would you rate the difficulty of this crackme ? crackmes.one 의 크랙미파일입니다. 파일을 실행시켜보면 레벨 9000을 달성하고 깃발을 얻으라고 합니다. 그리고 행운도 빌어줍니다.(감사합니다) 엔터를 눌러서 진행을 해봅니다. 간단한 수학 문제가 나옵니다. 140 + 584는 724이니까 724를 입력하고 엔터를 입력해봅니다. 레벨이 +1 되고 다음문제가 나오는것을 확인 할 수 있습니다. 그럼 한번 틀려보겠습니다. 에러라는 메시지와 함께 또다시 2레벨 문제를 냈습니다. 총 9000문제를 풀고 깃발을 얻는 프로그램인것 같습니다. 문제를 맞추면 .. 2023. 3. 14. Easy CrackMe http://reversing.kr/ 사이트의 Easy CrackMe 입니다. Easy_CrackMe.exe 프로그램을 실행시켜 어떠한 동작을 하는지 살펴본다. abcde를 입력하고 확인을 눌렀다. "Incorrect Password" 라는 메시지가 출력된다. x64dbg로 "Incorrect Password" 문자열을 검색해본다. 성공시에는 "Congratulation !!" 이란 메시지가 출력되고 실패시에는 "Incorrect Password" 라는 메시지가 출력되는 것을 확인 할수 있다. 입력 값을 받는 다이얼로그 상자 API 검색을 찾아가 본다. GetDlgItemTextA() API가 다이얼로그 상자에 입력한 내용을 가져오는 함수이다. 이곳에 중단점을 설정하고 실행한다. 첫 번째 비교는 다이얼 .. 2023. 3. 13. 어셈블리어 명령어 (2) 분기 명령어 조건부 코드 (CC) 설명 플래그 값 E / Z 같은 / 0인 ZF = 1 NE / NZ 다른 / 0이 아닌 ZF = 0 L / NGE 작은 (부호있는 연산) (SF^OF) = 1 (SF ≠ OF) G / NLE 큰 (부호있는 연산) ((SF^OF) | ZF) = 0 GE / NL 크거나 같은 (부호있는 연산) (SF^OF) = 0 LE / NG 작거나 같은 (부호있는 연산) ((SF^) | ZF) = 1 B / NAE 작은 (부호없는 연산) CF = 1 AE / NB 크거나 같은 (부호없는 연산) CF = 0 P / PE PF가 1이면 (짝수 ) PF = 1 NP / P0 PE가 0이면 (홀수) PF = 0 O OF가 1이면 OF = 1 S SF가 1이면 SF = 1 ECXZ ECX가 0이.. 2023. 3. 12. Easy KeygenMe http://reversing.kr/ 사이트의 Easy KeygenMe 입니다. 파일을 실행하기전에 ReadME.txt 파일을 읽어보면 시리얼이 5B134977135E7D13 일 경우 이름을 찾아 보라네요 그럼 이제 프로그램을 실행 시켜봅시다. 프로그램을 실행시켜보면 Name과 Serial을 입력받습니다. 그후에 Wrong 문자열을 출력하고 프로그램이 종료되었습니다. 예상하기에 이름과 시리얼이 틀렸고, Wrong이란 문자열을 출력하고 프로그램이 종료 된것 같습니다. x64dbg를 이용하여 자세히 확인해보겠습니다. x64dbg 를 켜고 Wrong이란 문자열을 찾아봅니다. 401130 주소에 wrong이 보입니다. 찾아서 따라가봅시다. 401118 주소에서 조건 분기를 하는 것을 확인 할 수 있습니다. 특정.. 2023. 3. 8. 제어 흐름 방법 4가지 1. 플래그(flag) 직접수정 디버거의 레지스터 창에 관계된 플래그 값을 클릭하여 플래그 값을 변경한다. 2. 레지스터 값을 직접 변경 EAX의 경우 함수 리턴 값을 저장하므로, EAX 값을 수정하면 함수 결과에 따른 분기 루틴을 변경할 수 있다. 3. Jmp 문 변경 jmp의 조건이나 주소를 직접 변경한다. 4. Nop 처리 기존의 jmp문이나 실행시키지 않을 코드를 nop코드로 만든다. 2023. 3. 7. 함수의 사용 함수 시작 위치에서 스택을 확인하면, 스택에 매개변수가 입력된 후에 복귀주소(returnaddress)가 저장되어있다. 함수 시작 코드에는 이후에 EBP값을 저장하고 스택 크기를 변경하는 코드가 이싿. 이 부분을 함수의 프롤로그(prologue)라 한다. 함수 구조는 함수가 시작할 때 수행되는 프롤로그와 함수가 끝날 때 수행되는 에필로그(epilogue)가 있다. 함수 프롤로그와 에필로그는 다음과 같다. 코드 설명 함수 프롤로그 push ebp 이전 함수의 EBP 레지스터 값을 스택에 보관 mov ebp, esp 현재 함수의 EBP 레지스터 값을 새롭게 설정 sub esp, 10 ESP 값을 변경하여 지역변수 공간을 확보 함수 에필로그 leave (mov esp, ebp) ESP 값을 복원하고, (pop.. 2023. 3. 6. 이전 1 ··· 7 8 9 10 11 12 13 ··· 28 다음 반응형