멀쩡한 프로그램인데
StolenByte????? 를? 구하라고? 한다
이전에 풀때에도 엥??하면서 얼렁뚱땅 넘어갔던 문제다.
StolenByte 에 대해 알아보도록 하자
[Ask.fm ICEWALL] 참고
쉽게말해
Unpack -> OEP -> [Some Code] -> Code 였던 프로그램을 조작해
Unpack -> [Some Code] -> OEP -> Code 가 되도록 바꿔놓았다는 것이다.
우선 언패킹을 진행해보자
언패킹 수작업 -
언패킹 툴 - https://upx.github.io/
*참고 : upx -d asdf.exe (언패킹)
upx asdf.exe (패킹)
언패킹 후 실행하니 글자가 깨져버렸다
아까 설명했듯이 StolenByte가 String 들을 훔쳐간거같다
다 뺏기고 NOP 만 남은 OEP 의 상황이다 ㅠㅠ
MessageBox 함수는 있는데 인자값이 사라졌다
(Nop 1바이트 * 12 = 12바이트)
다시 찾아주기 위해서
출력값이 멀쩡했던 언패킹 전의 프로그램에서
String 을 찾아주자
UPX 패킹의 끝부분인 Popad 를 찾아보자
(Ctrl + F) -> popad
바로 아래에 있는 PUSH 3개가
우리가 잃어버린 텍스트와 일치한다
(4바이트 * 3 = 12바이트)
따라서 답은 기계어 코드로
6A0068002040006812204000
이다.
/////
코드엔진 9번
'Reversing > CodeEngn' 카테고리의 다른 글
CodeEngn Basic 08 (0) | 2018.04.12 |
---|---|
CodeEngn Basic 07 (0) | 2018.04.12 |
CodeEngn Basic 06 (0) | 2018.04.12 |
CodeEngn Basic 05 (0) | 2018.04.01 |
CodeEngn Basic 04 (0) | 2018.04.01 |