N사 만화 스크린샷 뚫기
설명
N사의 만화뷰어는 스크린샷을 찍지 못하게 막아두었다.
나는 어떠한 원리로 막는지 궁금해서 여러가지 방법으로 시도를 했다.
어디까지나 호기심으로 한 것으로 코드는 공개하지 않는다.
여러가지 방법으로 시도 했으며, 역시 N사가 다른 곳에 비해 문제에 대해서 빨리 보완한다.
분석
-
print screenshot을 찍으면 clipboard에 저장되는데 저장되는 순간 clipboard에서 지운다.
-
print key 감지 한다.
-
다른 스크린샷 프로그램 사용 및 opengl 감지시 해당 영역을 사진을 찍을 수 없다고 표시된다.
-
결제는 웹(js, html)으로 처리한다.
-
만화 이미지는 openGL로 그린다.
-
뷰어가 켜질 경우, 2개의 자식 Thread가 생성 된다. Main, Thread1, Thread2
-
themida 패킹으로 되어있다.
- 패킹프로그램으로 최강으로 불린다.
- 보안프로그램과 대부분의 유명 프로그램들(themida, nexon 등)은 대부분 이것으로 패킹되어 있다.
- 디버깅 감지까지 있어서 메모리, 디버깅 접근을 막아준다.
- 일반적인 ollydbg로 접근을 못한다. 변형된 ollydbg를 이용해야해야한ㄷ.
- image를 불러올떄 암호화된 파일을 불러온다.
- image파일이 보통 100개이다.
- image파일은 이미 암호화된 파일이다.
- decode하기 위한 key는 통신시 받아온다.
- 리버싱으로 암호화 코드를 찾을려고 했지만 찾지 못함.
- error를 감지하면, 주기적으로 업데이트를 한다.
- 어떠한 1번 방법으로 뚫었는데 1주일만에 막았다.
- 어떠한 2번 방법으로 뚫었는데 1주일만에 막았다.
- 역시 로그가 남아서 비정상 로그를 분석하나보다…
방법
방법 1
- 화면 전체를 찍는 screenshot 코드를 작성한다.
- 그다음 ???를 하여 출력한다.
해당 방법은 기본 window api 만으로도 가능하다.
방법 2
dll injection 으로 간단하게 시도하였는데 잘 된다.
방법 3
openGL API hooking (injection) 위와 방법이 같지만 구현방식은 다르다. 이 방법은 3D 게임에서 핵을 만들때 주로 사용한다.