쓰레기 코드
프로텍터나 패커류는 안티디버깅을 위하여 쓰레기 코드를 많이 삽입하죠.
그리고 요즘엔 굳이 그런 부류가 아니더라도 안티 리버싱이 필요한 일반 프로그램에도
쓰레기 코드를 넣을 때가 종종 있습니다.
보통 쓰레기 코드는 이런 스타일이죠.
이 코드가 돌아가면, 결론적으로는 아무 짓도 안한게 되죠 ㅎㅎ
지금의 코드는 단순히 4줄이라 머 대충 띡 봐도 아 ㅅㅂ 더미 코드구나.. 하는 생각이 들지만
릴리즈 모듈에서 이런게 진짜 코드 사이사이에 와장창 끼어있다면 공격하는 해커 입장에선
참 짜증이 나죠 :p
즉, 이것이 바로 해커를 혼란스럽게 하기 위한 스레기 코드 삽입입니다.
그런데 실제로 상용 모듈을 만들다보면, 졸면서 코딩하든 일에 쫓겨서 급 코딩하든
위 목적과는 당연히 아무 상관없고 본의 아니게 추가된 쓰레기 코드가 들어가게 됩니다.
예를 들면요,
초딩이 짠 코드도 아니고.....겁나 욱기죠...ㅋ
한술 더떠서 이런 코드도 나옵니다.
설마 상용 소프트웨어에 저런 짓을 해놨겠습니까... 라고 반문하실 수 있겠지만
네.. 실제로 저런 코드가 릴리즈 버전에도 여기저기 널부러져 있는 경우가 많습니다...lol
코드가 수만 수십만줄이 넘고, 하루하루 전쟁같은 유지보수와 수정 작업에 시달리다 보면
저런 코드가 안나올 수가 없습니다 :)
또 현업 개발자들은 많은 경험과 높은 연륜으로 무장하신 분들인데 저러겠느냐 라고 생각되겠지만
실제로 업무를 해 보면 메이저급 회사가 아닌 경우 대부분의 개발 환경은 매우 열악하고
몇명의 개발자들의 1인 다역을 하며 수퍼맨처럼 일하고 있죠.
그래서 코딩 완료후 개발자들끼리 모여 코드 리뷰? 이런건 꿈에 불과한 이야기입니다
개발자를 우대하는 몇몇 회사에서는 그런 코드 리뷰 프로세스도 있다고 들었지만
대부분 고객들의 아우성에 똥줄 타면서 급박하게 모듈을 내놓느라 그런 시간을 가질래야
가지기가 힘든 실정입니다... :(
또 저런 코드가 발견되어도... "아 ㅅㅂ 저따위로 해놨냐... 머 잘돌아가고 있으니까 걍 냅둬"
라는 인식을 가진 사람들도 있어서 (괜히 건드렸다가 문제 생기는거 시러하는 사람들)
저런 사태는 알아차려도 잘 고치려 하지 않죠 ㅋ
또, 요즘 똑똑한 컴파일러들은 개발자들의 저런 ㅄ짓을 빌드 단에서 제외해 주기도 하니까요.
하지만 어쨌든 후임이나 동료 개발자가 저런 소스를 인계 받았을 때 눈이 뒤집히는건 사실입니다 ㅎ
어쨌든 스레기 코드는 해커들을 혼란스럽게 하기 위한 목적으로 추가되는 것들입니다.
하지만 이런 쓰레기 코드는 개발팀 동료들을 혼란스럽게 합니다 ;;
그러다보니 그런 생각도 들어요... 쓰레기 코드를 아주 습관적으로 만들어내는 개발자들은
차라리 프로텍터나 패커를 만들게 하자... 괜히 억지로 더미 코드 만들라고 강요 안해도
평소 코딩 스타일로도 아주 잘만들듯 :)
친구랑 스레기 코드에 대해 논하다가 생각난 이야기들입니다 :)
2008년 11월.
window31.
