OEP를 구한 후 "등록성공" 으로 가는 분기점의 OPCODE를 구하시오.
정답인증은 OEP + OPCODE 라고한다.
프로그램 실행모습
이번 회차에선 프로그램 실행모습은 크게 의미가 없다
패킹을 확인하자
ASPack 으로 패킹되어 있다.
ASPack : UPX와 유사하지만 선호도가 낮다
언패킹 : PUSHAD -> 압축해제 코드 -> POPAD -> RETN 으로 동작한다.
UPX는 POPAD 이후 나오는 JMP 인스트럭션을 통해 OEP로 분기한것과 살짝 다르다
F9로 실행하니 PUSHAD 로 도착했다.
밑으로 내리다보면 POPAD를 만나게 된다.
POPAD 를 찾았고, 밑에 PUSH 0 과 RET에 브레이크포인트를 걸고 살펴보자
PUSH 0 이었던 부분이 PUSH 445834 로 바뀌었다.
445834가 OEP란 말이다.
덤프뜨기
타고 넘어오니 제대로 찾아왔다.
이제 덤프를 뜨자
EIP가 OEP ( 0045834 ) 를 가리키고 있을 때, 플러그인에서 Scylla를 선택해주자.
OEP엔 EIP가 가리키는 값이 자동으로 들어가 있고, IAT Autosearch를 눌러주자
IAT 란 ImportAddressTable로 Window 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술해둔 테이블이다.
후에 GetImprots를 눌러주고 Dump를 눌러 저장해주자.
덤프파일을 Windows에서 바이러스로 인식한다. 해결해주고 진행하자
그러면, 덤프파일이 생기는데 FixDump로 덤프파일을 Fix 해주면된다.
Dump를 눌렀을땐 간단하게 덤프뜬거라 IAT가 복구되지 않아 실행이 안된다.
그래서 FixDump를 하는 것.
10_dump_SCY.exe 가 만들어졌고 이 프로그램을 사용하면 된다.
언패킹 확인
ASPack으로 패킹되었던 녀석이 언패킹이 된 걸 볼 수 있다.
이제 분기점을 찾자
분기점은 jnz short loc_44552B 로 보여진다.
분기점의 OPCODE를 구하라고 했으니
HEX VIEW로 보면 75 55 가된다.
답은 00445834 + 7555 를 하면 된다.
즉 , 004458347555가 정답.
x32Dbg로도 이어서 보자
끝.
'Reverse Engineering > [CodeEngn] Basic RCE' 카테고리의 다른 글
[Reversing] CodeEngn - Basic RCE L12 (0) | 2024.07.02 |
---|---|
[Reversing] CodeEngn - Basic RCE L11 (0) | 2024.07.02 |
[Reversing] CodeEngn - Basic RCE L09 (0) | 2024.07.02 |
[Reversing] CodeEngn - Basic RCE L08 (0) | 2024.07.02 |
[Reversing] CodeEngn - Basic RCE L07 (0) | 2024.07.02 |