분류 전체보기 108

CodeEngn.com Basic RCE L10

1) OEP를 구하고 '등록성공'으로 가는 분기점의 OPCODE를 구하는 문제 더보기 ※ OPCODE : 연산코드, 프로세서가 수행할 연산과 실행할 동작을 정의하는 코드 - 올리디버거로 열었을 경우 Hex dump에 해당되는 코드들이 OPCODE 2) 실행 시 Name, Serial 값 입력 불가능 3) PEiD - ASPack 패킹 되어있는 것 확인 4) 올리디버거를 통해 직접 ASPack 언패킹 진행 5) Find command 를 통해 retn 0c 검색 6) RETN 0c 아래 있는 두 줄에 BP를 걸어주고 실행(F9) 7) 실행 시키면 PUSH 뒤에 OEP 주소로 변경, RETN을 통해 OEP로 이동 8) OEP 부분으로 이동 후 Ctrl + A - 원래 코드 확인 9) 언패킹 완료 10) 언패..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L09

1) StolenByte를 구하는 문제 더보기 ※ StolenByte : 패커가 위치를 이동시킨 코드로써 보호된 프로그램 코드의 윗부분 - 이동된 코드들은 OEP 주소로 점프하기 전에 PUSH가 된다. UPX패킹이 되어있는 프로그램에서는 마지막 JMP를 하기 전 POPAD 이후의 PUSH를 해주는 코드이다. StolenByte를 복구하지 못하면 위와 같이 정상적으로 작동하지 못한다. 2) 09.exe 실행 화면 3) PEiD를 통해 UPX로 패킹되어 있는 것 확인 4) upx.exe로 언패킹 진행 5) 언패킹 후 실행 화면 - 글씨 깨짐 6) 올리디버거(언패킹 09.exe 실행) - OEP 주소 쪽이 NOP로 채워진 것을 확인 - StolenByte가 있어야 하는 부분으로 유추 7) UPX 패킹 되어 있..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L08

1) OEP 구하는 문제 2) 08.exe 파일 실행 시 나오는 화면 3) PEiD를 통해 정보 확인 시 UPX 패킹이 되어 있는 것 확인 더보기 ※ UPX 패킹 파일 1. UPX 패킹 파일 구조 [SECTION UPX0] : 메모리가 로드 된 후 압축 코드가 해제 될 공간 [SECTION UPX1] : 압축코드가 저장되어 있는 공간 2. 올리디버거를 통해 OEP 확인 [PUSHAD] - 코드 - [POPAD] - [JMP] [PUSHAD] : Stack에 레지스터에 있는 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI 총 8개 값을 넣어주는 명령어 [POPAD] : stack안에 있는 8개의 레지스터를 거꾸로 빼오는 명령어 4) PUSHAD와 POPAD 사이에 있는 코드 중 루프문..

CodeEngn 2023.12.22

CodeEngn.com Basic RCE L06

1) Unpack 후 Serial 값 구하는 문제 2) 06.exe을 실행시켜서 임의의 값인 abc를 입력했더니 에러 창 3) PEiD로 정보 확인 시 UPX로 패킹 되어있는 것 확인 4) upx.exe로 언패킹 진행 5) 올리디버거로 실행 - 00401360에서 시작하는 것 확인 - OEP : 00401360 6) 문자열 확인 - 성공했을 때 나오는 듯한 Good Job! 문자열 확인 - 해당 위치로 이동 7) 이동 후 재실행된 06.exe에 abc 입력 8) 00401069에 ASCII abc 생성 - PUSH를 통해 해당 stack에 abc 저장 9) 0040106E에 있는 AD46FS547도 해당 stack에 저장 10) 00401290 CALL을 통해 호출 11) ESP+4(사용자 입력 값) 와..

CodeEngn 2023.12.21

CodeEngn.com Basic RCE L05

1) 프로그램의 등록키 구하는 문제 2) 05.exe 실행 후 Register now! 클릭 시 Wront Serial... 문자열 출력 3) PEiD - UPX 패킹 확인 4) UPX 언패킹 진행 5) 올리디버거 - 문자열 확인 6) 성공을 나타내는 듯한 Congrats! ... 확인 - 해당 위치로 이동 7) 이동한 윗 부분 : 어떤 값을 EAX에 넣음 + Registered User 문자열 EAX에 넣음 8) CALL을 통해 00403BC2 호출 9) 00403B2C 호출 부분에 break - 실행 - aaaa와 1234 입력 10) 입력 시 EAX가 aaaa로 변경 11) 00403B2C 확인 시 00403B33에서 [CMP EAX, EDX] 해주는 것 확인 12) 직접 변경한 aaaa와 Regi..

CodeEngn 2023.12.21