rev-basic-4 풀이
·
Security/Reverse Engineering
문제 설명문제 풀이(x64dbg)문제에서 내려받은 파일을 x64dbg로 열었을 때의 모습이다. 먼저 문자열 참조 검색 기능을 사용하여 main 함수를 찾아보자.여기서 분기문을 찾아보자. 당연히 'Correct' 문자열을 출력하는 부분 위에 있지 않겠는가?노란 하이라이트 부분에 커서를 올려보며 cmp 명령어가 포함되었는지 확인해본다. 140001000에 커서를 두고 미리보기를 했을 때, cmp 명령어가 포함되어 있으니 클릭하여 들어가보자.함수의 시작 주소가 140001000이고 ret 주소가 14000106E까지라서 살짝 길지만,,, 모든 줄을 한번 분석해보자. 1. mov qword ptr ss:[rsp+8],rcx : rcx(첫번째 함수 인자)값을 rsp+8(스택)에 저장2. sub rsp,18 : r..
rev-basic-3 풀이
·
Security/Reverse Engineering
문제 설명 문제 풀이- 사용했던 툴 : x64dbg- 문제 접근 : 문자열 참조 검색을 통해 main 함수를 찾고, correct나 wrong을 출력하게 만드는 비교 연산 함수 찾기일단 다운받은 문제 파일을 x64dbg에서 열면 다음과 같은 창이 나온다.바로 문자열 참조 검색 기능을 통해 Main 메소드를 찾아준다. 첫번째로 뜬 "Input : " 문자열을 클릭하면 main 메소드를 찾을 수 있다. 조금만 밑으로 내려가면 "Correct"나 "Wrong"을 출력하는 부분을 볼 수 있는데, 140001000에서 flag 문자열과 사용자가 입력한 문자열을 비교한다는 것을 어렵지 않게 알 수 있다. 노란색으로 하이라이트 처리된 것들 중에 140001000을 클릭해보자.아마 첫번째 줄부터 ret 명령을 수행하는..
리버싱 기초 문제 풀이
·
Security/Reverse Engineering
문제 설명end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가?  문제 풀이라인별 코드 분석- 1번째 라인 : dl에 rsi + rcs(예: 0x400000 + 0) 값 넣기- 2번째 라인 : dl을 0x30과 xor 연산- 3번째 라인 : rsi + rcs에 dl 값 넣기- 4번째 라인 : rcx 값 1 증가- 5번째 라인 : rcx와 0x19 비교 연산- 6번째 라인 : rcx가 0x19보다 크면 종료- 7번째 라인 : rcx가 0x19보다 작거나 같으면 1번째 라인으로 돌아가기 -> 결국 18번 동안 반복문을 돌며 기존 메모리에 있는 값과 0x30을 가지고 xor 연산을 ..
리버싱 기초
·
Security/Reverse Engineering
0. 리버싱 엔지니어링(Reverse Engineering)리버싱 엔지니어링이란 완성된 시스템, 소프트웨어, 기계 또는 제품을 분석하여 구조, 기능, 동작 방식을 파악하고 이를 통해 설계나 구현방식을 이해하는 과정을 말한다. 용어 그대로 "거꾸로" 분석하여 어떻게 만들어졌는지 알아내는 작업이다. 소프트웨어를 리버싱한다고 했을 때, 이는 실행 파일(바이너리 파일)을 분석하여 원본 소스 코드, 로직, 데이터 구조, 프로토콜 등을 알아내는 것이다. 이 과정속에서 디컴파이얼러, 디버거, 패킷 분석기와 같은 도구들이 사용된다. 리버싱의 주요 용도는 다음과 같다. 1. 소프트웨어 디버깅 및 오류 수정 : 소스 코드가 없는 상황에서 소프트웨어의 문제를 파악하고 수정하는 데 사용되며 특히 오래된 소프트웨어나 소스 코드..