| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- __vectorcall
- Python
- x64
- image section header
- ABI
- Image dos header
- __stdcall
- stack frame
- RVA
- CodeEngn
- Rich Header
- 프로그래머스
- Reversing
- __cdecl
- x32
- 리치헤더
- pe format
- Programmers
- 코드엔진
- Dos Stub
- 파이썬
- 리버싱
- 크랙미
- crackme
- 실행파일
- __fastcall
- Calling Convention
- 함수 호출 규약
- 32bit
- rev
- Today
- Total
목록Reversing (16)
kj0on
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (3)1. 파일 password : codeengn2. 프로그램 동작계산기 프로그램이 실행된다.3. Detect It Easy32비트 실행파일, UPX 패킹 된 것을 확인할 수 있다. Visual Studio .NET 2002~2003 링커로 추정된다.4. 분석UPX 언패킹을 해준다. OEP를 찾는 문제이기 때문에 상세 분석은 하지 않았다.5. 풀이언패킹 후 EP를 살펴보면 0x01012475 인 것을 알 수 있다.
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (2)1. 파일 password : codeengn2. 프로그램 동작실행 시 Serial을 입력하는 창과 Check 버튼을 볼 수 있다. Serial이 일치하지 않는 경우 에러 메시지가 출력된다.3. Detect It Easy32비트 실행파일, 델파이로 작성된 프로그램인 것을 알 수 있다.4. 분석실행하다 보면 간단한 반복문이 나타난다. dl에 0x02를 넣고 밑에서 dec로 값을 0x01감소한다. 이후 jne로 조건부 분기가 이루어 진다. 따라서 총 2번 반복된다. 연산을 해주는 위치를 보면 앞에서 lstrcat해준 문자열이다. 빨간색 네모칸의 값에 add 연산을 해주는 코드다. 반복문을 모두 실행하고 나면 최종적으로 값에 2가 더해진다. 해당 값은 C..
0. 참고사항이 글은 VA, RVA, RAW의 개념에 대한 설명이므로 스왑 메모리 방식이나 페이징 기법은 개념 설명과는 목적이 다르기 때문에 여기서는 다루지 않는다.1. 디스크와 메모리디스크는 비휘발성 저장장치로 전원이 꺼져도 데이터가 그대로 유지된다. HDD(하드디스크)나 SSD 같은 장치들이 여기에 해당하며 프로그램 파일이나 문서 등이 이곳에 저장된다. 반면 메모리는 휘발성 저장장치로 전원이 꺼지면 저장된 데이터가 모두 사라진다. RAM 같은 장치가 여기에 해당하며 실행 중인 프로그램이나 작업 데이터가 일시적으로 저장된다. 운영체제는 프로그램 실행 시 디스크에 있는 파일을 메모리로 불러와 실행한다. PE 파일은 디스크에 저장될 때와 메모리에 로드될 때 구조와 주소 체계가 달라진다. 디스크에서는 파일의..
0. 32비트 윈도우 실행 파일 구조 (PE Format) 32비트 윈도우 실행 파일 구조에 대한 자세한 설명은 https://kj0on.tistory.com/21 참고이 글은 32비트 Windows 실행 파일의 구조와 비교하여 그 차이점을 중심으로 설명한다.1. 기준 정의 동일 플랫폼 내에서도 일관성이 결여된 멤버는 32비트 구조와 64비트 구조를 비교하는 기준으로 적합하지 않으므로 제외해야 한다. 차이점을 보다 체계적으로 파악할 수 있도록 다음과 같은 기준을 정한다. 1-1. 값동일한 멤버라도 32비트와 64비트에서 기본값이 달라지는 경우가 있다. 이러한 차이는 로더의 해석 및 실행 동작에 직접적인 영향을 미치므로 각 플랫폼 고유의 기본값이 나타나는지를 살펴본다. 다만 양쪽 플랫폼 모두에 존재할 수 ..
0. COFFhttps://kj0on.tistory.com/20기존 UNIX계열 COFF(Common Object File Format) 구조를 뼈대로 삼아 실행에 필요한 정보를 덧붙여 확장한 형식이다.1. PE File(Portable Excutable File)PE File이란 들고 다닐 수 있는(Portable) 실행 가능한(Excutable) 파일이다. Window 운영체제 내에서 어디서든 실행 가능한 파일을 PE File이라고 한다. Portable의 원래 의도(다른 플랫폼에서도 실행 가능한)와는 다르게 실제로는 Window 계열의 운영체제에서만 사용되고 있다. 1993년 Windows NT 3.1에서 처음 도입된 뒤로 32bit(x86), 64bit(x86-64/AMD64), Itanium(I..
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (3)1. 파일 password : codeengn2. 프로그램 동작프로그램 실행 시 위의 GUI가 나타난다. Check Serial 버튼 클릭시 "Wrong serial!!!" 메시지를 출력한다.3. Detect It Easy32비트 실행파일, UPX 패킹 된 것을 확인할 수 있다. 언패킹 후 실행결과 Microsoft Visual C/C++로 작성된 프로그램 인 것을 확인할 수 있다.4. 분석upx 언패킹 후 분석을 진행했다. 문자열 참조 시 [이미지2]의 문자열을 확인할 수 있다. 비교적 간단한 코드를 확인할 수 있다. GetDlgItemTextA로 TextBox에 있는 문자열을 가져온다. 그 뒤 06.401320 함수를 통해 ESP오류를 체크한다(..
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (3) 1. 파일 password : codeengn2. 프로그램 동작프로그램 실행 시 위의 GUI가 나타난다. Register now ! 버튼 클릭시 "Wrong Serial,try again!" 메시지를 출력한다. Name 값을 입력하지 않았을 때는 "Enter a Name!" 메시지를 출력한다. Serial 값을 입력하지 않았을 때는 "Enter a Serial!" 메시지를 출력한다. Quit the Crackme 버튼 클릭시 "Mail Name/Serial to acidbytes@gmx.net" 메시지를 출력하고 종료된다.3. Detect It Easy32비트 실행파일, UPX 패킹 된 것을 확인할 수 있다. 언패킹 후 실행결과 델파이로 작성된 프..
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (2)1. 파일 password : codeengn2. 프로그램 동작프로그램 실행 시 "정상" 문자열을 반복해서 출력한다. x32dbg에서 실행 시 "디버깅 당함" 문자열을 반복해서 출력한다.3. Detect It Easy32비트 실행파일, Microsoft Visual C/C++로 작성된 콘솔 프로그램 인 것을 확인할 수 있다.4. 분석EntryPoint로 이동해서 우선 문자열이 출력되는 부분을 먼저 찾기로 했다. EntryPoint에서 문자열을 참조하면 프로그램 동작에서 출력된 문자열을 확인할 수 있다. 해당 문자열의 구분하는 분기지점을 파악해야한다. 더블클릭해서 해당지점으로 이동해 보면 코드를 확인할 수 있다. Sleep 함수 호출 이후 _chke..
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (2)1. 파일 password : codeengn2. 프로그램 동작실행 시 가장 처음 나타나는 메시지다. 취소를 누를 경우 종료된다. 문자가 깨져보인다. 확인버튼을 눌렀을 때 나타나는 GUI다. Regcode : 에 일치하지 않는 값 입력 시 나타나는 메시지 창이다. ?er 클릭 시 나타나는 메시지 창이다.3. Detect It Easy32비트 실행파일, Visual Basic 5로 작성된 프로그램 인 것을 알 수 있다.4. 분석EntryPoint로 이동 시 ThunRTMain으로 전형적인 Visual Basic의 EP형태가 보인다. 문자열 참조 시 값이 일치하지 않을 경우 메시지 창에 나타나는 문자열을 볼 수 있다. 해당 위치로 이동한다. 메시지를 출..
0. 실행환경 0-1. 운영체제 (1)0-2. 툴 (4)1. 파일 password : codeengn2. 프로그램 동작실행 시 보이는 화면은 위와 같다. 해당 오류 메시지를 보여주면서 프로그램을 실행할 수 없다.3. Detect It EasyDIE에서 실행 파일을 읽을 수 없다. PE 구조가 훼손되서 제대로 읽지 못하는 듯 하다.4. 분석PE구조를 읽을 수 없기 때문에 Hex Editor로 값을 확인해 봐야한다. 먼저 나타나는 DOS Header 부분을 보면 e_magic의 시그니처 MZ (0x4D5A)가 나타나는 것을 확인할 수 있다. 그 다음 e_lfanew의 값을 참조해 0x00000200번지의 값을 확인한다. NT Header 부분이 0x00으로 채워져 있다. Signature(0x50450000..