본문 바로가기

Reversing17

[CodeEngn] Basic RCE L04 보호되어 있는 글 입니다. 2024. 5. 31.
[CodeEngn] Basic RCE L03 보호되어 있는 글 입니다. 2024. 5. 25.
[CodeEngn] Basic RCE L02 보호되어 있는 글 입니다. 2024. 5. 25.
[CodeEngn] Basic RCE L01 보호되어 있는 글 입니다. 2024. 5. 19.
[Dreamhack] Reversing Basic Challenge #4 https://dreamhack.io/wargame/challenges/18/ rev-basic-4Reversing Basic Challenge #4 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 바이너리를 분석해서 correct를 출력하는 입력값을 알아내는 문제이다.  문제 파일을 실행해보면 rev-basic-3처럼 Input 입력을 받고틀린 값을 입력하면 Wrong을 출력한다. Correct를 출력해내기 위해서 문제 파일을 x64dbg로 열어봤다.  [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조]문자열 참조를 통해 Correct.. 2024. 4. 10.
[Dreamhack] Reversing Basic Challenge #3 https://dreamhack.io/wargame/challenges/17 rev-basic-3Reversing Basic Challenge #3 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 바이너리를 분석하여 correct를 출력하도록 리버싱 해야 되는 문제이다.  문제 파일을 실행해보면 입력 창이 뜬다.아무 값이나 입력을 해보면 Wrong이라고 한다.Correct를 출력해내기 위해서 문제 파일을 x64dbg로 열어봤다.   [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조] 문자열 참조를 통해 Correct 문자열을 찾았다.  .. 2024. 4. 6.
[Dreamhack] Reversing Basic Challenge #2 https://dreamhack.io/wargame/challenges/16 rev-basic-2Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 올바른 입력 값을 검증하는 프로그램을 리버싱 해야 한다. 문제 파일을 실행해보면 입력 창이 뜨고, 아무 값이나 입력이 가능하지만올바른 입력 값이 아닌 것을 입력하고 Enter를 클릭하면 창이 종료된다.  x64dbg에서 [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조]를 통해 이 exe 파일에서 사용하는 모든 문자열을 확인해봤다. Input,.. 2024. 3. 30.
[윈도우즈 보안과 악성코드 기초] 리버싱 이론 실습_crackme#1, #3 abex' crackme #1 abex' crackme #1은? 크랙 연습 공개 프로그램 - Error 메시지 창에서 OK 창이 나오게 해야 됨 디버깅 - EP 확인하기 주석 창을 보면 세 개의 메시지 창이 뜨는 프로그램이란 걸 알 수 있음 장점: 시작 주소와 EP가 동일 (시작하자마자 시작 주소가 나옴) 매우 간단하고 명확하게 작성됨 (stub code가 없음) 교육용 목적이라 그럼 사용 함수 분석 MessageBox: 메시지 창을 띄우는 함수 파라미터: Style → Title → Text → hOwner 총 4개 이 메시지 함수를 띄우기 위해선 위에 4개의 파라미터가 필요한 것 GetDriveTypeA: 드라이브 타입을 가져오는 API 함수 디스크 드라이브가 이동식, 고정식, CD-ROM, RAM .. 2024. 3. 30.
[abex' crackme] #5 문제 풀이 파일을 실행하면 시리얼 값을 입력하라는 알림 창이 뜬다. 아무 값이나 입력하고 Check 버튼을 클릭하면 에러 알림 창이 뜬다. 004010FC에서 EAX와 0을 비교하여 분기하므로 004010F7에서 IstrcmpiA가 비교를 한다고 생각해서 004010F7에 BP를 설정했다. BP 설정 후 실행을 하니 String1과 String 2에 메시지가 추가됐다. String1에 시리얼 번호가 있다. 해당 시리얼 키를 입력했더니 Well Done 팝업 창이 떴다. 2024. 3. 29.
[abex' crackme] #4 문제 풀이 파일을 실행하면 Serial을 입력하라는 입력 창이 뜬다. 입력은 되지만 Registered 버튼이 활성화되지 않는다. 이뮤니티 디버거로 열어서 주석을 봤을 때, 이 부분이 올바른 시리얼 값을 입력했을 때에 출력된 문자들로 추측된다. 여러 함수 중 vbaStrCmp 함수가 있는 것을 확인했다. 정해진 시리얼 값과 비교하는 함수라고 추측해서 해당 부분에 BP를 설정했다. F9로 해당 주소로 이동했더니 시리얼 입력 창이 떴다. 아무거나 입력했더니 레지스터 값들이 변경됐다. 특히 ECX 레지스터를 보면 유니코드 값이 보인다. 이 값을 시리얼 값이라고 추측해서 입력해봤더니 Registered 버튼이 활성화되어 문제를 풀 수 있었다. 2024. 3. 29.
[Lena] Lena Tutorial 20 뭐가 문제인 거지? 이거부터 혼란스럽다. 구글링 해서 뭘 해야 되는 지 찾았다. 앱을 클릭하면 언패킹 하고 싶으면 튜토리얼을 작성하라고 한다 :) 패킹(실행 압축)은 실행 파일의 코드를 압축하는 행위이고 그렇게 압축된 코드를 해제하는 것이 언패킹이다. 패킹은 일반적으로 흔히 알고 있는 압축과 달리 있는 그대로 일반 프로그램처럼 실행이 가능하다. 패킹은 데이터 압축의 목적 혹은 악성 코드에서 작은 용량으로도 빠르게 많이 퍼지게 하여, 분석이 불가능 하게끔 만드는 목적으로 사용된다. 패킹의 기본 원리는 패킹 프로그램이 실행되는 어느 시점에서는 압축되기 전 상태로 돌아가야 하며, 그때 메모리 상태를 Dump(메모리 내용을 그대로 파일로 저장)하고, EP를 압축하기 전 위치로 설정해주는 것이다.' EP(Entr.. 2023. 5. 16.
[Lena] Lena Tutorial 19 이건 이뮤니티 디버거를 써서 그런 지 아무 문제가 없다. 그래서 ReverseMe.A를 패치해 볼 것이다. 해당 앱을 클릭하면 내가 해냈다며 축하한다고 한다. 그런데 이뮤니티 디버거에서 실행하면 키 파일이 유효하지 않다는 알림 창이 뜬다. 디버거에서 실행해도 앱을 클릭해서 실행했을 때랑 같은 알림 창이 뜨도록 패치할 것이다. 문자열을 찾아서 해당 주소로 이동해봤다. 004010FB에 있는 IsDebuggerPresent 함수는 004010D3에서 004010FB를 호출하면서 호출된다. 이 함수가 디버거 프로그램이 실행되면 Keyfile이 맞더라도 올바르지 않다고 출력하고 있다. 해당 함수는 디버깅 중이라면 0을 리턴하고 아니라면 1을 반환한다. 따라서 디버깅 중이라면 분기하는 부분인 00401103을 N.. 2023. 5. 16.
[Lena] Lena Tutorial 18 프로그램을 실행하면 2byte 패치를 통해 nag 창을 없애라고 한다. 프로그램 실행 시 두 번째 창만 나오도록 패치해야 될 것 같다. 이뮤니티 디버거로 프로그램을 뜨면 바로 프로그램 실행 시에 뜨는 팝업창 메시지가 보인다. Messagebox로 생각되는 4012BD에 직접 BP를 걸고 실행해 봤더니 예상과 다르게 BP에 걸리지 않고 nag 창이 실행이 된다. 이 코드들은 실제로 동작하지 않고 분석을 방해할 목적으로 들어있는 코드로 추측된다. 해당 코드에서 조금 위로 올라갔더니 호출 함수가 두 개 있었다. 먼저 0040130F부터 살펴 봤다. 00401000번지를 EAX에 받아온 후, 이 값을 점차 증가시키면서 1byte씩 5A와 XOR 연산하고있다. USER32.BeginPaint의 값인 0040121.. 2023. 5. 10.
[Lena] Lena Tutorial 16 Movie Gear 프로그램을 설치한다. 프로그램을 실행하고 Help를 보면 Register Now...과 About GIF Movie Gear...이 있다. 이번에도 등록을 시켜야 되는 문제인가 보다. About GIF Movie Gear...을 클릭하면 평가판 소프트웨어라고 알려주는 팝업 창이 뜬다. Register Now...에서 Name과 Code에 임의의 값을 입력하면 유효하지 않은 값이라는 팝업 창이 뜬다. 이뮤니티 디버거에서 F9를 눌러 프로그램을 실행시키고, nag 창이 뜨면 F12로 중지시켰다. 그리고 Alt + K를 눌러 Call stack을 살펴봤다. call from에 해당하는 함수 이름이 movgear이므로 DialogBoxParamA 함수를 실행하는 곳이 nag 창을 실행하는 것.. 2023. 5. 10.
[Lena] Lena Tutorial 13 설치 파일을 다운로드 하고 실행하면 이런 화면이 뜬다. About을 클릭하면 라이센스가 등록되지 않았다고 한다. 임의의 값을 입력하면 역시나 유효하지 않은 코드라고 한다. 이뮤니티 디버거에서 register 관련 문자열을 찾았다. 등록에 성공하면 해당 문자열이 뜨는 것으로 추정된다. 해당 위치에 들어가보니 좀 위에 유효하지 않다는 문자열이 있다. 0041749C를 JMP로 바꿔서 여길 무조건 뛰어넘도록 해봤다. 그 후 사용자 등록을 하면 등록에 성공했다는 알림 창이 뜬다. 그러나 여전히 About에선 등록이 안 됐다고 한다. 따라서 이것도 패치해 줘야 한다. 등록이 안 됐다는 문자열이 있는 위치에 가보면 바로 위에 등록이 됐다는 문자열이 있다. 이게 나오도록 00401499를 JE에서 JNE로 변경했다... 2023. 5. 3.