Tiny Bunny

Codeengn 30

Basic RCE L06

Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD CodeEngn Basic RCE L06 파일을 실행 시키면 입력 후 시리얼을 체크하는 것 같은 버튼이 나온다 아무 값이나 입력해보면 Wrong serial!!! 문구가 뜬다 UPX 패킹 확인 언패킹 언패킹 완료 문제에서 요구한 OEP(시작 지점) : 00401360 Serial을 찾기 위해 이전 실행 시 확인했던 Wrong serial 문자열을 찾아가봤다 점프 구문 위 test eax, eax 이 눈에 띈다 시리얼 값을 비교하는 부분으로 예상하고 위로 올려보면 입력한 문자열과 AD46DFS547와 비교한다 Serial 값을 AD46DFS547로 예상하고, 값을 넣어 비교해보면 맞다 정답..

Wargame/CodeEngn 2023.12.19

Basic RCE L04

이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 CodeEngn Basic RCE L04 프로그램을 실행시키면 정상이라는 문구가 뜬다 아까 확인한 문자열을 찾아보면 점프하는 부분 이전에 있는 IsDebuggerPresent 함수를 발견할 수 있다 디버거로 실행시켜 bp를 걸어주면 디버깅 당함 이라고 뜨는 것도 확인 가능 IsDebuggerPresent

Wargame/CodeEngn 2023.12.19

Basic RCE L01

HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 CodeEngn Basic RCE L01 (abex' 1st crackme) *GetDriveTypeA 타입에 따라 반환 값이 다르다 CD-ROM의 경우 5인 것을 그냥 확인 가능. . 하지만 다른 방법으로 확인해보기로 한다 처음 실행시키면 해당 창이 뜬다 CD-Rom으로 인식시키라고 한다 1. ZF값을 변조 시켜 점프 시킨다. 00401000 | 6A 00 | push 0 | 00401002 | 68 00204000 | push 01.402000 | 402000:"abex' 1st crackme" 00401007 | 68 12204000 | push 01.402012 | 402012:"Make me t..

Wargame/CodeEngn 2023.11.22

[8기 기초] 리버싱 팀 06

Section header : 각 섹션의 속성(Property)을 정의한 것 code/data/rsrc 3가지로 나누어 섹션을 저장하는 이유? 프로그램 복잡함 감소 / 프로그램 안전성 → 각 분류마다 권한이 주어져 있다 code: 실행, 읽기 권한 data: 비실행, 읽기 권한 rsrc: 비실행, 읽기 권한 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocation..

[8기 기초] 리버싱 팀 04

함수 호출 규악(Calling Convention) : 함수 호출 시 매개변수를 어떤 식으로 전달하는 지에 대한 약속 Caller(호출자) / Callee(피호출자) 크게 3가지로 분류 cdecl: c언어에서 사용되는 방식, Caller가 스택을 정리 stdcall: Win32 API에서 사용, Callee가 정리 fastcall: x64 아키텍쳐에서 사용, stdcall과 동일하나 매개변수 중 최대 2개까지 레지스터를 이용하여 스택으로 보낸다 → 호출이 빠르다는 장점 PE File Format PE(Portable Executable) File: Windows 운영체제에서 사용되는 실행 파일 형식 실행 계열: EXE, SCR 드라이브 계열: SYS, VXD Library 계열: DLL, OCX, CPL..

[8기 기초] 리버싱 팀 03

활용 강의 유튜브 - Fin 스택(Stack) FILO 구조 ESP (Extended Stack Pointer): 현재 스택의 최상단을 가리키는 포인터 EBP (Extended Base Pointer): 현재 스택 프레임의 시작 주소를 가리킴(ESP값을 저장) 스택 프레임(Stack Frame) EBP를 통하여 스택 내 변수 파라미터 복귀 주소에 접근하는 기법 EX. PUSH EBP ; 함수 시작 -> 스택에 EBP 백업 MOV EBP, ESP ; ESP값을 EBP에 저장 . . . MOV ESP, EBP ; ESP값을 복원 POP EBP ; EBP 복원 RETN 함수 내에서 ESP값이 변해도 EBP를 기준으로 안전하게 해당 변수나 파라미터, 복귀주소에 접근이 가능하다. CodeEngn Basic RCE..

728x90