일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DebugBlocker
- Visual Studio
- ImageSwitching
- dotPeek
- Exe2Aut
- Dynamic안티디버깅
- JIT
- 분석 보고서
- OllyDbg
- PEImageSwitching
- Self-Creation
- UTF-32
- hxd
- Static안티디버깅
- 리버싱
- Advanced안티디버깅
- PEImage
- Python
- UTF-16
- .net
- 서비스프로세스
- 리버싱핵심원리
- RedLine Stealer
- 디버깅
- CodeEngn
- x32dbg
- 서비스디버깅
- CP949
- IL코드
- 안티디버깅
- Today
- Total
목록OllyDbg (30)
-榮-
● CodeEngn Advance RCE L14 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L14 분석 및 풀이 문자열 검색에서 [그림 1] 실패 화면의 "Invalid Registration Code"문자열을 찾으면 성공 문자열과 함께 바로 보입니다. 실패 문자열 주소로 이동하면 성공 문자열과 함께 분기점(0047F448)을 확인할 수 있습니다. 분기 조건의 파라미터를 확인하면 입력된 Serial의 숫자 부분과 Name으로 생성된 Serial 숫자를 비교하는 것을 확인할 수 있습니다. 분기 조건 앞의 CALL 00404B2C와 CALL 0047F0B8은 각각 입력된 Serial과 입력된 Name을 파라미터로 가집니다. 즉, 앞의 CALL 0047F0..
● CodeEngn Advance RCE L11 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L11 분석 [그림 1]에서의 실패 문자열을 찾기 위해 [Search for > All referenced text strings]를 확인하면 성공 문자열과 실패 문자열을 확인할 수 있습니다. 실패 문자열의 주소로 이동하면 분기 조건과 분기점을 확인할 수 있습니다. 스크롤을 올려 [그림 5]에 보이는 함수의 프롤로그에서 호출하는 주소를 알아내 이동하면, GetDlgItemTextA 함수 2개를 볼 수 있습니다. 각각 Name과 Serial을 가져오는 것으로 보입니다. GetDlgItemTextA 함수까지 실행해보면 CALL 004010EF까지 Name과 Seri..
● CodeEngn Advance RCE L10 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L10 분석 및 풀이 [그림 1]에서 화면의 문자열을 [Search for > All referenced text strings]에서 찾습니다. "Enter Your Name : "으로 이동하여 Name과 Serial을 입력받는 함수를 알아내고, 입력 이후부터 분기 조건 사이에 Name과 Serial의 관계를 찾아보겠습니다. "Enter Your Name : "의 코드입니다. CALL 043EDD8이 문자열을 출력하는 함수로 추측됩니다. 스크롤을 내려 Serial을 입력받고 어떤 행위가 조건 분기로 이어지는지 확인해 보겠습니다. [그림 6]은 Serial을 입력..
● CodeEngn Advance RCE L09 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L09 풀이 [그림 2]를 보면 실패 시 "Sorry, but the username and/or password is incorrect!" 문자열이 출력되는 것을 볼 수 있습니다. [Search for > All referenced text strings]를 보면 성공 문자열과 실패 문자열을 확인할 수 있습니다. 성공 문자열이 더 낮은 주소에 있으므로 성공과 실패를 나누는 분기점은 성공 문자열 주변 주소에 있을 것으로 생각됩니다. 성공 문자열 주소로 이동하겠습니다. 성공 문자열 주소로 이동하면 005E12AD가 분기점이라는 것을 알 수 있습니다. 분기 조건으로..
● CodeEngn Advance RCE L08 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L08 풀이 우선, [그림 2]에서 찾은 패치 해야 되는 부분으로 이동합니다. [Search for > All referenced text string]에서 해당 문자열을 찾습니다. 0045BB29의 Please Enter More Chars... 문자열은 CMP EAX, 3의 결과로 출력됩니다. 이 부분을 패치하여 Name이 두 문자일 때, 해당 구문이 안나오도록 만듭니다. Name은 문제의 힌트에서 두 문자라 하였으니 3이 아닌 2와 비교하도록 패치하였습니다. [※참고] 패치파일 만드는 법은 CodeEngn Basic RCE L01의 "+α 패치파일 만드는 ..
● CodeEngn Advance RCE L06 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L06 풀이 디버거에서 실행 시 [그림 5]의 창이 뜹니다. 이를 통해 디버거를 탐지하는 함수가 있다는 것을 알 수 있습니다. 디버거를 탐지하는 함수 부분을 패치하기 위해 우선 언패킹을 해줍니다. 언패킹 한 파일을 디버거에 올리고 디버거 탐지 함수를 찾습니다. [Search for > All intermodular calls]에서 디버거를 탐지하는 함수에 BP[F2]를 걸고 실행[F9]합니다. 0040E961의 IsDebuggerPresent 함수에서 멈춥니다. 이 함수의 반환 값의 TEST 명령어를 기준으로 디버거에서 실행되었는지를 판단하는 겁니다. 이 부분을..
● CodeEngn Advance RCE L05 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L05 풀이 [그림 1]의 실패 화면에서 MessageBox가 있는 것으로 보고 [Search for > All intermodular calls]에서 메시지 MessageBox 관련 함수를 찾아 BP를 걸었습니다. [※참고] 같은 함수에 BP 거는 것은 CodeEngn Basic RCE L03의 "+α 함수를 알고 있다면..." 실행[F9]을 하고 멈추는 곳은 00402777입니다. 분기점이 안보이고, 주변 주소에는 LEA, PUSH, MOV, CALL만 있어서 화면을 내려(낮은 주소)보았습니다. 화면을 내리다 보면 BP를 설치한 rtxMsgBox 함수를 모두..
[※참고] 이 글은 CodeEngn Advance RCE L04의 Serial 생성 부분을 분석한 글로 CodeEngn Advance RCE L04 풀이의 일부분입니다. CodeEngn Advance RCE L04은 CodeEngn Advance RCE L04을 참고해 주세요. ● CodeEngn Advance RCE L04 풀이 中 Serial 생성 [Search for > All intermodular calls]에서 Serial 생성을 하기 위한 Name을 읽어오는 GetDlgItemTextA 함수에 BP를 걸고 실행[F9]합니다. 각각의 GetDlgItemTextA 함수에서 읽어오는 값을 확인합니다. 각각의 GetDlgItemTextA 함수 Buffer 주소 내용 확인 00401114는 CodeE..
● 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로..