SMALL
CodeEngn basic 9번 문제
StolenByte를 구하시오 Ex)75156A0068352040
실행을 하여보니 keyfile을 찾아야하는 것 같지만 CodeEngn 문제가 단순히 StolenByte를 구하는 것이므로 keyfile은 찾지않겠다. StoleByte를 구하는 것이기 때문에 패킹이 되어있을 것 이다.
Exeinfo PE 프로그램으로 보니 UPX로 패킹 되어있는 것을 알 수 있다.
StolenByte를 구하는 것이기 때문에 수동으로 UPX를 언패킹하면서 StolenByte를 찾아야한다.
일단 PUSHAD를 실행 시키고 모든 레지스터 값이 stack에 저장되고 나중에 디코딩 후 프로그램이 정상적으로 실행되기 위해stack에 저장된 레지스터 값에 접근 할 때가 브레이크포인트를 걸어 OEP를 찾아내겠다.
POPAD에서 브레이크 포인트가 걸렸다. 즉, stack에 저장된 값을 다시 레지스터에 저장하기 위해 POPAD를 하여 다 빼낸 것이다. OEP로 점프하는 구문 사이의 StolenByte는 하이라이트한 3줄인 것을 알 수 있다.
JMP문을 통해 40100c로 갔는데 위에 NOP으로 채워져 있어서 StolenByte를 입력해봤다.
실행이 잘된 것을 보니 StolenByte가 맞았다는 것을 알 수 있다.
Ex)75156A0068352040 이렇게 답을 입력하라고 하였으니 StolenByte의 OP코드가 답인 것을 알 수 있다.
답 : 6A0068002040006812204000
LIST
'리버싱 > CodeEngn 문제풀이' 카테고리의 다른 글
CodeEngn basic 11번 문제 풀이 (0) | 2020.08.16 |
---|---|
CodeEngn basic 10번 문제 풀이 (0) | 2020.08.16 |
CodeEngn basic 8번 문제 풀이 (0) | 2020.08.11 |
CodeEngn basic 7번 문제 풀이 (0) | 2020.08.10 |
CodeEngn basic 6번 문제 풀이 (0) | 2020.08.09 |