[모각코] 6주차 보고서(Lena Tutorial 3, 4)

semon·2023년 2월 11일
0

22-23_동계 모각코

목록 보기
7/7

Lena tutorial의 3,4번 문제의 목표는 다음과 같습니다.

1) Basic nag removal + header problems

  • 파일 구성은 다음과 같이 되어있습니다.

  • 이번 문제는 registerMe.exe 파일을 patch 하여 Nag를 제거 하는 것입니다. 실행을 하면 다음과 같이

  • 3가지 창이 나옵니다. 이중 처음과 마지막 창을 patch를 통해 제거하면 됩니다.

  • 해당 어셈코드를 보면 위에 창을 나타내는 부분들이 하나씩 보입니다. 이제 entry point의 코드를 보면

  • 다음과 같이 GetModuleHandleA라는 함수를 실행하고 함수의 결과 값이 0인지 비교합니다. 하지만 GetModuleHandleA는 해당 프로세스가 메모리에 매핑된 주소를 찾는것으로 이는 항상 0x00400000이므로 그 아래의 JE는 항상 jmp가 되지 않습니다. 따라서 이부분을 jmp로 바꾸어주어 첫번째 Nag를 우회하거나 entry point 자체를 바꾸어 해결 할 수 있습니다.

  • JE가 실행되지 않는다면 다음과 같이 첫번째 창이 뜨게 됩니다. 따라서 entry point를 olly를 통해 바꾸어 주겠습니다.

  • 다음과 같이 memory를 확인해보면 RegisterMe.exe의 PE 구조를 볼 수 있고 여기에서 entry point와 entry point가 memory에 어디에 위치해 있는지 알 수 있습니다. 이제 이를 토대로 entry point의 정보가 있는 memory를 수정해야합니다.

  • entry point를 messageBox가 실행되는 다음으로 설정하면 될 것 같습니다.

  • 이제 address를 찾아가서 entry point의 정보를 수정해줍니다.

  • 0x00001000 -> 0x00001024

  • 그 이후 마지막 창을 제거하려고 보니 jmp문이 없으므로 전부 Nop으로 채웠습니다.

  • 이제 이 파일을 저장하여 crack을 만들었고

  • 디음 창만 뜨게 만들었습니다. 이제 다음으로 같이 있던 파일인 RegisterMe.Oops.exe만 해결하면 됩니다.

  • ollydbg에서 파일을 확인하려하니 다음과 같이 PE파일이 아니라는 에러메시지가 나오고 알 수 없는 위치에서 디버깅을 하게 됩니다. 하지만 실행 결과는 RegisterME.exe와 다를게 없습니다.

  • 이는 PE파일이 손상된 것으로 RegisterMe.exe와 같은 동작을 하므로 hxd로 RegisterMe.exe와 같아지도록 hex를 수정해주면 됩니다.

  • 다음과 같이 HxD를 사용하여 두 파일을 비교하여 수정을 해주면 됩니다. 수정을 한 부분은 다음과 같습니다.

     Size of Code(0xDC) : 0x40000400 -> 0x00000400
      Size of Initialized Data(0xE0) : 0x40000A00 -> 0x00000A00
      Address of Entry Point(0xE8) : 0x00001000 -> 0x00001052
      Base of Code(0xEC) : 0x40001000 -> 0x00001000
      Base of Data(0xF0) : 0x40002000 -> 0x00002000
      Number of Data Directories(0x134) : 0x40000004 -> 0x00000010
      EXPORT Table RVA(0x138) : 0x00500000 -> 0x00000000
      EXPORT Table Size(0x13C) : 0x00500000 -> 0x00000000
  • 해당 부분들을 수정하여 다시 ollydbg로 확인하니 정상 실행되었고 이후 위와 같은 방식으로 해결하였습니다.

        

2) Basic + aesthetic patching

  • 다음으로 4번 문제는 다운로드를 할 수 있고 다운로드를 완료하면 다음과 같은 파일 구성을 확인 할 수 있습니다.
  • 하지만 프로그램을 실행 시키면 다음과 같이 Unregistered Version이라는 문구를 마주 칠 수 있고 제한이 걸린 부분들이 보입니다.




  • 해당 부분을 수정하여 정품과 같게 만들면 됩니다. 우선 기능 부분부터 수정 하겠습니다. 먼저 group 추가 제한부터 해결 해보겠습니다. 문자열에서 limit을 검색하여 해당 코드 부분을 찾았습니다.
  • SendMessageA를 통해 그룹 수가 증가되어 eax가 3보다 크거나 같으면 위에서와 같이 MessageBox가 나타납니다. 이 부분을 우회하기 위해 JL을 JMP로 patch하였습니다.
  • 다음과 같이 patch한 내용을 저장하여 group이 4개 이상 생성되는 것을 확인 할 수 있습니다.
  • group내 사람을 추가하는 부분도 같은 방식으로 해결하면 됩니다.

  • patch한 내용을 저장하여 다음과 같이 사람이 5명 이상 저장되는 것을 확인할 수 있습니다.
  • 다음으로 프로그램의 문자열을 수정하면 됩니다. 우선 memory에서 문자열을 검색하여 찾아줍니다.
  • 해당 부분의 내용을 바꿔 주겠습니다.
  • 이 부분은 프로그램의 이름을 나타내는 부분으로 patch를 저장한 후 실행을 하면 다음과 같이 PixtopianBook 뒤에 (UNREGISTERD VERSION)이라는 글자가 사라진것을 확인할 수 있습니다.
  • 나머지 문자열 부분도 같은 방식으로 검색하여 수정하고 저장하면 다음과 같이 나오게 됩니다.

  • 이렇게 Lena tutorial 3, 4번 문제도 해결했습니다.
profile
보안을 공부합니다

0개의 댓글