일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Static안티디버깅
- Advanced안티디버깅
- Self-Creation
- Python
- 리버싱
- 서비스프로세스
- 서비스디버깅
- PEImage
- DebugBlocker
- 안티디버깅
- RedLine Stealer
- .net
- UTF-16
- PEImageSwitching
- OllyDbg
- dotPeek
- Exe2Aut
- UTF-32
- CodeEngn
- Dynamic안티디버깅
- x32dbg
- ImageSwitching
- IL코드
- CP949
- Visual Studio
- hxd
- 분석 보고서
- JIT
- 리버싱핵심원리
- 디버깅
- Today
- Total
목록CodeEngn (34)
-榮-
● CodeEngn Advance RCE L04 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L04 풀이 [그림 1]에서 본 실패 문자열("Error!")을 찾기 위해 [Search for > All referenced text strings]를 확인했습니다. All referenced text strings에는 문자열이 보이지 않았고, [Search for > All intermodular calls]도 같았습니다. 패커가 없으며, 문자열도 모듈도 안 보이는 것을 보면 암호화되어있다고 추측할 수 있습니다. Step Over[F8]로 진행하다 보면 반복문이 나옵니다. 이 반복문은 [00401006]부터 [004011A7]까지 25h를 XOR 하는 코드입..
[※참고] 이 글은 CodeEngn Advance RCE L03의 Serial 생성 부분을 분석한 글로 CodeEngn Advance RCE L03 풀이의 일부분입니다. CodeEngn Advance RCE L03은 CodeEngn Advance RCE L03 을 참고해 주세요. ● CodeEngn Advance RCE L03 풀이 中 Serial 생성 Serial 생성 함수(00401277)는 함수 3개를 반복하면서 입력받은 Name을 사용하여 Serial을 생성합니다. ① [403258]에 입력받은 Name("CodeEngn")을 옮기고, stack에 0을 넣고 00401142 CALL 00401277 함수 내부로 들어갑니다. [그림 3]은 CALL 00401277 내부입니다. 처음 00401277로..
● CodeEngn Advance RCE L03 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L03 풀이 [Search for > All referenced text strings]에서 [그림 1]의 실패 문자열을 찾으면 실패 문자열 2개와 성공 문자열을 확인할 수 있습니다. 성공 문자열로 이동하면 성공 문자열을 출력하는 MessageBoxW 함수가 따로 떨어져 나와있어 성공과 실패의 분기점과 분기 조건을 확인할 수 없습니다. 따라서 실패 문자열로 이동하는데 두 개의 실패 문자열 중 가장 낮은 주소의 문자열 주소로 이동합니다. 실패 문자열 주소로 이동하면 MessageBoxA 함수 아래로(주소 기준) GetDlgItemTextA 함수가 보입니다. 위에서..
● CodeEngn Advance RCE L01 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 [※참고] Advance RCE L01 실행파일은 Basic RCE L19와 매우 유사한 파일입니다. 파일의 자세한 흐름은 CodeEngn Basic RCE L19를 참고해 주세요. ● CodeEngn Advance RCE L01 풀이 언패킹 한 파일을 디버거에 올리고 실행[F9]하면 [그림 5]가 뜹니다. MessageBox는 AutoIt로 컴파일되었다는 것을 알려줍니다. AutoIt 전용 디컴파일러인 Exe2Aut을 사용하여 문제를 풀 수 있지만, 파일을 분석해서 문제를 풀어보도록 하겠습니다. [Seach for > All intermodular calls]에서 디버거 탐지 함수인 IsDebugge..
● CodeEngn Basic RCE L02 문제 ◎ 파일 실행 화면 ● CodeEngn Basic RCE L02 확인 화면을 내리면서 Decoded text 부분을 보면, 실패 문자열과 성공 문자열로 추측되는 text가 보입니다. 그 뒤로 패스워드로 예상되는 text가 보입니다. CodeEngn Basic RCE L02 답 : JK3FJZh
● CodeEngn Basic RCE L20 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Basic RCE 20 분석 및 풀이 OllyDbg에 파일을 올리고, Step Over[F8]로 진행하다 보면 CreateFileA 함수가 호출됩니다. CreateFileA 함수는 파일 또는 입/출력 장치를 생성하거나 여는 함수입니다. (출처:MSDN) [그림 4]에서 CreateFileA 함수 실행 결과 "CRACKME3.KEY" 파일을 생성하지 못했으니 "CRACKME3.KEY" 파일을 만들어서 실행하도록 합니다. CreateFileA 함수 아래에는 FileRead 함수가 있습니다. FileRead 함수는 CreateFileA 함수에서 연 파일의 내용을 읽어오는 역할을 합니다. Fi..
● CodeEngn Basic RCE L19 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Basic RCE L19 풀이 [※참고] UPX 패킹에서 OEP를 찾는 법은 CodeEngn Basic RCE L05의 "+α UPX 패킹 상태에서 OEP 찾는 법" [Search for > All intermodular calls]에서 MessageBox 관련 함수를 찾아 BP를 걸고 실행[F9]하여 "CodeEngn.com by Lee Kang-Seok"를 띄우는 MessageBox 함수를 찾아봅시다. [※참고] Found intermodular calls에 BP 관련은 CodeEngn Basic RCE L03의 "+α 함수를 알고 있다면..." 실행을 돌리면 AutoIt scrip..
● CodeEngn Basic RCE L18 문제 ◎ 파일 실행 화면 [Search for > All referenced text strings]에서 "Bad"와 "You serial is Wrong, tru again"을 찾고, 분기점과 분기 조건을 찾아 serial을 찾으면 될 것 같습니다. ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Basic RCE L18 분석 및 풀이 문자열 검색으로 "Bad"와 "You serial is Wrong, tru again"을 찾아봅니다. "Bad" 문자열 주소로 이동하면 분기점(004011F6)이 보입니다. 분기 조건은 lstrcmpiA 함수를 사용하여 Name으로 생성된 Serial과 입력받은 Serial을 비교하는 것으로 보입니다. 이때, 004011EF..
● CodeEngn Basic RCE L17 문제 ◎ 파일 실행 화면 문제의 힌트에서 Name은 한 자리라 했지만 Name에 한 문자를 넣으면 "Please Enter More Chars..."이 나옵니다. 패치가 필요해 보입니다. ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Basic RCE L17 분석 및 풀이 문자열 검색으로 성공 문자열을 찾아봅니다. 성공 문자열 주소로 이동하면 분기점(0045BBA9)이 보입니다. 성공 문자열에서 더 내려가면(주소 기준) "Please Enter More Chars..."문자열과 함께 문자열 길이를 3과 비교하는 코드(0045BB24)가 보인다. 이 부분이 패치할 부분입니다. 문제의 힌트에서 Name은 한 자리라 했으니 CMP EAX, 3 --> CMP EA..
● CodeEngn Basic RCE L16 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Basic RCE L16 분석 및 풀이 [Search for> All referenced text strings]에서 성공 문자열과 실패 문자열을 찾을 수 있습니다. 성공 문자열 부분으로 이동하면, 분기 조건(0040159F)과 분기점(004015A2)으로 추정되는 부분을 볼 수 있습니다. [그림 5]의 분기점에서 답을 찾았지만 프로그램을 분석해봅시다. 분기점으로 추정되는 곳에서 더 내려가면(주소 기준) Password를 받는 부분을 찾을 수 있습니다. Password를 입력 받는 부분보다 더 내려가면 Name을 입력받는 부분이 있습니다. Name(CodeEngn)을 입력받고, "Ent..