설명

N사의 만화뷰어는 스크린샷을 찍지 못하게 막아두었다.

나는 어떠한 원리로 막는지 궁금해서 여러가지 방법으로 시도를 했다.

어디까지나 호기심으로 한 것으로 코드는 공개하지 않는다.

여러가지 방법으로 시도 했으며, 역시 N사가 다른 곳에 비해 문제에 대해서 빨리 보완한다.

분석

  1. print screenshot을 찍으면 clipboard에 저장되는데 저장되는 순간 clipboard에서 지운다.

  2. print key 감지 한다.

  3. 다른 스크린샷 프로그램 사용 및 opengl 감지시 해당 영역을 사진을 찍을 수 없다고 표시된다.

  4. 결제는 웹(js, html)으로 처리한다.

  5. 만화 이미지는 openGL로 그린다.

  6. 뷰어가 켜질 경우, 2개의 자식 Thread가 생성 된다. Main, Thread1, Thread2

  7. themida 패킹으로 되어있다.

  • 패킹프로그램으로 최강으로 불린다.
  • 보안프로그램과 대부분의 유명 프로그램들(themida, nexon 등)은 대부분 이것으로 패킹되어 있다.
  • 디버깅 감지까지 있어서 메모리, 디버깅 접근을 막아준다.
  • 일반적인 ollydbg로 접근을 못한다. 변형된 ollydbg를 이용해야해야한ㄷ.
  1. image를 불러올떄 암호화된 파일을 불러온다.
  • image파일이 보통 100개이다.
  • image파일은 이미 암호화된 파일이다.
  • decode하기 위한 key는 통신시 받아온다.
  • 리버싱으로 암호화 코드를 찾을려고 했지만 찾지 못함.
  1. error를 감지하면, 주기적으로 업데이트를 한다.
  • 어떠한 1번 방법으로 뚫었는데 1주일만에 막았다.
  • 어떠한 2번 방법으로 뚫었는데 1주일만에 막았다.
  • 역시 로그가 남아서 비정상 로그를 분석하나보다…

방법

방법 1

  1. 화면 전체를 찍는 screenshot 코드를 작성한다.
  2. 그다음 ???를 하여 출력한다.

해당 방법은 기본 window api 만으로도 가능하다.

방법 2

dll injection 으로 간단하게 시도하였는데 잘 된다.

방법 3

openGL API hooking (injection) 위와 방법이 같지만 구현방식은 다르다. 이 방법은 3D 게임에서 핵을 만들때 주로 사용한다.