안녕하세요, 헬마입니다.
오늘도 역시, 접수되었던 장애건과 관련된 디버깅 얘기입니다.
저희 회사에서는 MadCodeHook( http://madshi.net/ ) 이라는 API 후킹 라이브러리를 사용하고 있습니다. 무려 윈도 9X, NT, 2000 등 현존하는 OS 를 거의 모두 지원하는 대단한 라이브러리입니다. 최초로 개발되었을 때에는, 무료 버전도 존재했지만 역시나 악성코드 개발자들의 남용으로 무료 버전은 개발 및 공개가 중지되고 사용버전만 남았습니다.
이 라이브러리가 공개버전이었던 때는 버전 2 입니다. 그리고, 그후 3 버전과 현재는 4 버전이 나왔고요. 4버전 부터는 라이선스가 구독방식으로 바뀌어서 한편으로 안타까우면서 슬프네요. ( API 후킹자체가 이제 개발할 거리가 별로 없어서 이런식으로 바꾼게 아닐까 합니다 )
서론이 길었네요, 저희 제품은 madCodeHook 을 3 버전부터 사용하기 시작했습니다. 그리고, 여러 고객사에 제품이 나갔고, 테스트를 진행하고 있었지요. 그런데, 어느날 장애가 접수되었습니다. PC 를 시작하면, 탐색기도 실행되지 않고 그냥 부팅되면서의 검은색 화면이 유지된다고요. 심지어 이 상태에서는 작업관리자도 띄울 수 없다는 장애였지요.
한마디로, 너희 제품 설치하고 나니 PC 를 사용할 수 없다!! 라는 겁니다. 즉시, 고객사 연락하여 프로세스 덤프 등도 분석하고, 직접 방문하여 확인도 해보았지만, 참으로 특이한 증상이었습니다. 어쨌건 우리 제품을 제거하면 정상이었으니까요. 그러다가, 고객사의 해당 PC 에 보안제품이 무엇이 설치되어있는지 확인을 하다 발견한 사실이 있습니다.
삼성SDS 의 NASCA DRM 과 엘아이텍이란 회사의 SecuPrint 란 제품이 madCodeHook 을 사용하고 있다는 사실을 발견했지요. 그리고, 게다가 버전이 2였습니다. ( 이때가 고작 1-2년 전 이었습니다. 버전 2는 약 2007년경에 중단된 제품입니다 )
madCodeHook 의 포럼에도 글을 올리고, 제작자와도 의견을 나누었지만, 제작자는 "이제 중단된 2제품을 위해서 3 또는 4버전에 호환성 코드를 추가할 생각은 없다" 였습니다. 결국, 저는 제가 우회코드를 작성했고, 방법은 꼼수이며 간단한 거였습니다. 버전2 를 사용하는 제품이 모두 실행되고 인젝션이 끝날때까지 기다려주는 거였습니다.
방안 : madCodeHook 2 를 사용하는 제품이 있다면, 해당 제품이 실행이 완료되고 후킹이 완료될 때 까지 기다려주자. ^________^
저희는 초반부터 MS Detour 라이브러리를 사용했습니다. 10년전에는 64비트는 미국MS에서 직접 사야 해서 고생해서 2천만원인가 5천만원인가에 샀었죠~ㅎㅎ
그때 경쟁업체들 보니 메디쉬라는 걸 사용하더군요~
참고로 Hooking걸다보면 보안솔루션 많이 쓰는 대기업 PC에서는 마지막에 Hooking거는 프로그램은 Hooking이 안되는 현상이 있습니다.
이 증상을 MS본사에 문의하니 어쩔 수 없다는 답변이...ㅎㅎㅎ
선택의 여지없이 MadShi 를 사용하게댔죠 ㅎㅎ
ps. 말씀해주신 현상은 아마도, 한 녀석이 후킹하면서 다른 후킹을 고려하지 않았거나 일부러 무시하고 싹 날려버려서 그런게 아닐까 합니다. 대기업애들이 자기들꺼를 확실히 보장하기 위해 그런식으로 처리하는 경우가 있더라구요 ㅜㅜ