본문 바로가기

Reversing/CodeEngn

CodeEngn Basic 09




멀쩡한 프로그램인데 

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