2015년 11월 9일 월요일

사인코드 분석2


이전글에 이어 마저 써 보마.

 

핵심 기능

매뉴얼매핑


매뉴얼 매핑이 핵심 보안기능이라고 하면, 사실 개발자는 좀 부끄러워해야 한다. 부끄러우라고 쓴 거다. 매뉴얼 매핑이 뭔지 모르는 중생들에게 스피드왜건이 설명해주자면, 운영체제한테 보고하지 않고 몰래 dll을 로드하는걸 말한다.
즉 기능은 완전히 똑같이 작동하는데,








모듈 리스트
dll 리스트. x3.xem 한 개 밖에 안 보인다.

위 처럼 모듈 리스트에서는 숨겨지는 게 다다. 짝짝.
매뉴얼매핑이 뭔지도 모르는 핵쟁이들에겐 이걸 보면 "와 ㅅㅂ 코드가 분신술을 써 미쳤나봐!!"라고 감탄하게 만드는 부가 효과가 있다.




멋진 로딩 스플래시

 
스플래시 이미지
이런 멋진 스플래시 로딩 이미지를 띄워준다.


별 거 아닌거같지만 역할이 크다.
솔루션 이름 홍보와 게임사로 하여금 아 내 게임이 안전하게 보호받고 있구나 라는 인상을 받게 하는 마케팅적 효과, 툴키디 일부와 나같은 대다수의 선량한 일반사용자들을 부들부들 떨게 만드는 효과가 있다.
부가 기능으로 "아 왜 게임이 이렇게 안켜져"라고 짜증내는 유저들에게 "우리 보안솔루션이 한창 로딩 중이라 그래요. 좀 느리니 참아주세요."라고 알려주는 UI/UX적 효과, 게임사에게는 게임이 뚫려도 "우리 큰 돈 주고 싸인코드 썼는데요? 유저들한테 물어보세요"라는 면피성 보안 효과도 강하다.
잘 살펴보면 2~3픽셀 정도 프로그레스 바가 깨알같이 차오르는데, 그 때 매뉴얼매핑을 사용해 각종 감지 등에 관련된 잡다한 모듈을 로드하고 있는거다.


 

리버싱 방지(Anti reversing) 기능




void 어_어_ 왜_이런짓을()




void 참신하긴_하다()

나름 보안솔루션이기에, 리버싱당할 것을 염두에 두고 개발했는지 리버싱을 방지하는 차원의 함정코드가 꽤나 많이 보인다. 내 기억에 남아있는 것들은 한 가지도 빠짐 없이 구글에 Antireversing techniques 뭐 이런식으로 치면 나오는 예제코드 수준이다. 무력화하고 싶다면 너도 검색해서 좀 찾아봐라. 또, 좀만 수틀리면 이상한짓을 해서 프로세스를 죽이려는 참신한 코드들이 여기저기서 실행되는데, 그 중 가장 바보같은 것 들 몇가지를 첨부했다. 이해하는 사람만 크게 웃을 수 있다.
개 ㅄ같은데 왜 이딴걸 핵심기능이라고 적었냐고 물을 사람이 있을거다. 하지만 명백히 핵심기능이다. 리버서들로 하여금 깨알 웃음과 사인코드의 개발자들이 리버싱에는 재능이 전혀없다는 확신, 함께 무력화가 쉬울 것이라는 자신감을 주는 효과가 있다.



3편은 나중에. 귀찮다..
그리고 내가 쓰고싶어서 근질근질한 것들 많은데 썼다가 다 고칠까봐 그런건 공개표시로 쓰질 못하겠다. 궁금하면 개인적으로 물어봐.

댓글 6개:

  1. 작성자가 댓글을 삭제했습니다.

    답글삭제
  2. for문이 왜 2개가 있을까요. 개발자가 호구인 것인가? 아니면 IDA가 호구인 것인가? 정말 미스테리 합니다.

    답글삭제
  3. 분신술이 어레이서치 대책으로 일부러 한 모듈 여러번 매뉴얼맵핑 해놓고 하나에서만 실행시키는 수법이군요. 앞으로는 싸인코드 자체를 건드리는건 이제 트렌드가 아닌 듯 합니다. 분신술에 CRC도 돌아가니깐요. API후킹을 통해 무력화시키거나, 깡통 싸인코드를 다시 만드는 하트비트 구현이 대세일 것 같네요.

    답글삭제
  4. 매뉴얼매핑이 무슨뜻인지 궁금해서 구글링 하고 있었는데, 본문에 있어어..!ㅠㅠ ㅂㄷㅂㄷ

    답글삭제