일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서비스디버깅
- Python
- 안티디버깅
- x32dbg
- OllyDbg
- ImageSwitching
- JIT
- 리버싱핵심원리
- Exe2Aut
- CP949
- IL코드
- CodeEngn
- Self-Creation
- PEImage
- Advanced안티디버깅
- 분석 보고서
- DebugBlocker
- Static안티디버깅
- UTF-16
- UTF-32
- dotPeek
- hxd
- RedLine Stealer
- PEImageSwitching
- Dynamic안티디버깅
- 서비스프로세스
- 디버깅
- 리버싱
- Visual Studio
- .net
- Today
- Total
목록분류 전체보기 (42)
-榮-
● 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 L07 문제 ◎ 파일 실행 화면 ◎ 패킹 및 난독화 여부 확인 ● CodeEngn Advance RCE L07 풀이 dotPeek에 Advance RCE L07 실행파일을 올리고 [그림 4]의 문자열을 찾았습니다. If문의 조건 3가지(this.vxzzz(this.yreee, this.ewrrr, 2415736773U, fsfsdf) / (int) this.yreee[2] == (int) hashCode / (int) this.yreee[3] == (int) num1)가 참이 되는 값이 Advance RCE L07의 답입니다. 세 번째 단락 Serial을 00000000부터 ffffffff까지 넣어 If문의 조건 3가지를 만족하는 값을 일 경우 출력하는 코드를 추..
● 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로..