-
CodeEngn Basic RCE 11$ 리버싱 $/CodeEngn Basic RCE 2019. 5. 6. 13:50
파일의 OEP와 Stolenbyte를 찾는것이 문제 입니다.
OEP는 main함수가 시작되는 가장 맨처음의 주소를 의미하고, Stolenbyte는 원래 있어야 하는 코드가 없을때 그부분의 시그니처를 이야기 합니다.
파일을 한번 보면 UPX 파일 입니다.
UPX -d 파일명 명령어를 쳐서 언팩을 하면 언팩된 파일이 나옵니다.
먼저 언팩 하지 않은 파일을 먼저 확인해 보겠습니다.
역시 PUSHAD가 있는 것으로 보아 팩 되어 있는 파일입니다.
F8을 한번 눌러서 넘어가시면 다음과 같이 ESP가 수정 되어있습니다.
우클릭후 Follow in Dump를 클릭하시면 해당 주소의 hex값의 Dump로 가게 됩니다.
위의 사진 같이 해당 hex가 가르키는 곳으로 bp가 걸리게 되고 F9를 눌러서 이동합니다.
이동하게 되면 위와 같은 문자열이 있는 곳으로 이동하게 됩니다.
여기 까지 진행후 팩한 파일을 멈춰둔후에 언팩한 파일을 한번 살펴 보면 다음과 같습니다.
총 00401000부터 12바이트 만큼의 값이 NOP가 되어 있고 그다음부터 PUSH 0 를 시작으로 프로그램이 구동하기 시작합니다.
프로그램을 실행해 보면 시작 화면이 깨져 있는것을 확인해 볼수 있습니다.
그렇다면 이 앞부분 코드는 Stolenbyte 부분이 되는데 이부분은 아까 팩되어있는 파일의 아래부분에 있었습니다.
바이트 수를 확인해 보니
6A 00 68 00 20 40 00 68 12 20 40 00 으로 총 12바이트 였습니다.
그렇다는 것은 OEP는 00401000이고 StolenByte는 6A0068002040006812204000이 됩니다.
'$ 리버싱 $ > CodeEngn Basic RCE' 카테고리의 다른 글
CodeEngn Basic RCE 13 (0) 2019.05.06 CodeEngn Basic RCE 12 (0) 2019.05.06 CodeEngn Basic RCE 10 (0) 2019.05.06 CodeEngn Basic RCE 9 (0) 2019.03.27 CodeEngn Basic RCE 8 (0) 2019.03.27