본문 바로가기

전체 글

- Reversing.kr Challenge (1) Easy Crack # Reversing.kr 에 있는 워게임 문제 풀이입니다. Easy Crack 100점 짜리 문제이구요. 사람들이 가장 많이 푼 문제이기도 해요.ㅎ 앞으로 꾸준히 문제를 풀어보려구요. 그럼 Easy Crack 문제 풀이 시작할게요. 1. 문제 의도 파악- 처음 Easy Crack 파일을 실행시키면 아래와 같은 윈도우 창이 하나 뜹니다. - 윈도우 창이 하나뜨고 그 안에 아무 값이나 넣고 확인 버튼을 누르니, 패스워드가 틀렸다고 나오네요.- 이 문제는 패스워드를 찾는 문제인것같네요. 2. Ollydbg를 이용하여 디버깅- 키 값을 찾기 위해서, 사용자가 입력한 값과 비교하는 부분을 찾아봐야겠네요.- 우선, Search for - All referenced strings 기능을 이용해서 이 프로그램에서 사.. 더보기
- 실행 압축 # 이번에는 실행 압축이라는 내용입니다. # 실행 압축 - 실행 압축은 말 그대로 실행 파일을 압축하는 것을 의미합니다. 실행 파일 압축을 줄여 실행 압축이라고도 부릅니다. 시중에 수많은 실행 파일 압축 프로그램이 존재하며, 이러한 프로그램들은 MS-DOS 시절부터 존재했다고 합니다. 그리고 실행 압축으로 압축된 실행 파일은 일반 압축 파일과는 다르게 압축을 직접 풀어주지 않고, 압축이 된 상태로 실행이 가능합니다. [ 일반 압축과 실행 압축의 비교 - 출처 : 리버싱핵심원리 ] # 실행 압축 목적- 원래 실행 압축은 옛날 DOS OS를 주로 사용하던 시절에 부족한 보조기억장치(HDD,FDD) 공간을 조금이나마 더 확보하기 위한 목적으로 사용되었다고 합니다. 그러나 현재는 하드디스크 및 장치들이 많이 좋.. 더보기
- 데이터 압축 (비손실 압축, 손실 압축) # 이번 포스팅 내용은 데이터 압축에 대해서 알아보겠습니다. # 데이터 압축 - 말 그대로, 데이터를 압축하는거에요. 어떤 형태의 파일이라도 내부는 바이너리 0 혹은 1로 구성되어 있습니다. 이 내부의 바이너리를 적절한 알고리즘을 이용하여 크기를 줄이는 것이 데이터 압축입니다. 데이터 압축에도 2가지 종류가 있는데요. 1. 비손실 압축 (Lossless Data Compression) 2. 손실 압축 (Loss Data Compression) 요렇게 2가지가 있습니다. 첫번째 비손실 압축은 말 그대로 손실이 없다는 것을 의미합니다. 어떤 파일을 압축을 하고(인코딩), 그 파일을 다시복원 시켰을 때(디코딩), 압축전과 100% 일치하는 파일로 복원이 가능하다면 비손실 압축이라고 합니다.흔히들 사용하시는 압.. 더보기
- Codegate 2013 예선 - Misc 200 # 문제 : 82d3fdd1f294d8397f1966a3a2f207f0.7z 압축파일 제공 압축을 풀어보니, 2가지 파일이 존재 ( encoded.key , source.php ) [ 그림 1 ] source.php- source.php 파일의 소스코드인데, 문자열을 해당 코드의 알고리즘을 이용하여 인코딩하는 내용이라는 것을 파악했다. [ 그림 2 ] encoded.key- encoded.key 파일을 열어봤더니, 엄청 많은 양의 문자가 인코딩되어 있었다. # 앞의 2개의 파일을 확인해 본 결과, 우선 인코딩 원리를 파악하고, 디코딩 코드를 작성하여 인코딩된 문자들을 디코딩하여 원래의 문자들을 확인해봐야 할 것 같다. # 인코딩 알고리즘 분석 - 우선 인코딩하는 부분의 코드를 살펴보면 인코딩할 문자열에서.. 더보기
- EAT (Export Address Table / PE File 관련) # 이번 포스팅은 "EAT(Export Address Table)" 입니다. 한동안 공부를 더럽게 안하다가 다시 책을 펼쳐 공부를 시작하기로 했습니다.ㅎ 마지막 포스팅이 PE File의 IAT(Import Address Table) 이였었죠. 라이브러리에서 사용할 함수등에 대한 정보를 기재하고 있는 테이블에 대한 내용이었습니다. 이번에는 라이브러리 파일에서 제공하는 함 수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 EAT에 대해서 알아보도록 하겠습니다. # EAT (Export Address Table) - Export는 라이브러리 자신이 가지고 있는 함수를 다른 PE 파일에게 제공하는 것을 의미합니다. 만약 다른 PE 파일에서 "kernel32.dll"이라는 라이브러리에 존재하는 함수를 사용하.. 더보기
- Docx File Steganography (Codegate 2013 예선 - Forensic 300) # 해킹 대회 문제 풀이 할 때, 문서화 해두었던 문제- 제공되었던 파일 더보기
- IAT (Import Address Table / PE File 관련) # 이번 포스팅 내용은 "IAT(Import Address Table)" 입니다. 이전에 "RVA to RAW" 라고, PE 파일이 메모리상에 로딩된 주소인 RVA(프로세스 가상 메모리의 절대주소)를 RAW(File Offset)으로 바꾸는 연습을 했습니다. 이번 포스팅 주제인 IAT 내용을 잘 이해하시기 위해서는 RVA를 RAW로 바꾸는데 어려움이 없으셔야 합니다. PE File Format에서 사용되는 구조체에서는 대부분이 RVA로 주소값들을 명시하기 때문입니다. # IAT (Import Address Table) - 우선 IAT가 무엇인지 알아야겠죠? IAT는 "Import Address Table"의 약어입니다. 영단어 그대로 해석해보면 [ Import : (컴퓨터) (다른 프로그램 에서 데이터를.. 더보기
- RVA to RAW (PE File 관련) # 이번에는 "RVA to RAW"에 대해서 포스팅하도록 하겠습니다. "RVA to RAW"를 간단하게 설명하자면, RVA to RAW 는 PE 파일이 메모리에 로딩되었을 때 각 섹션에서 메모리의 주소(RVA)와 File Offset(RAW)을 매핑하는 것을 말합니다. 이전 PE File Format 포스팅에서 언급했던 VA와 RVA에 대해서 간단하게 다시 얘기하고 시작하도록 하겠습니다. RVA ↔ RAW(File Offset) 변환 작업은 PE 헤더를 공부할 때 가장 기본이 되는 개념이므로 잘 숙지하도록 합시다. # RVA to RAW - RVA는 PE 파일이 메모리에 로딩되었을 때의 메모리 주소를 의미하고, RAW는 PE 파일이 로딩되기 전에 File Offset을 의미합니다. - RVA to RAW.. 더보기