본문 바로가기

History/Tales

VxLang 개발 기록(1)

VxLang 개발과 운영을 하면서 느낀 부분을 기록해보려 한다(이건 이거대로 자산인 느낌). 먼저 VxLang이 무엇이고, 시작한 계기가 무엇인지 남겨본다.



VxLang
소프트웨어 리버스 엔지니어링이라는 분야에서 코드-난독화실행-압축이라 불리는 기법(?)을 활용한 프로젝트이다.

실행-압축은 간단하게 Zip과 같이 파일을 압축하지만  시스템에서 동작 가능 한 실행 파일(ELF/PE/Etc.)을 재조립하여 런-타임에 파일을 메모리에 복원하는 기법이다.(단독 실행이 불가능한 일반적인 단순 데이터 압축과는 많이 다르다는 정도로 인식하면 된다.)

위와 같은 실행-압축을 응용하여 소프트웨어의 동작 이전에 안티-디버깅과 같은 특정 보호 동작을 수행하는 도구들을 소프트웨어 프로텍터라고도 부른다. 이제부터는 이러한 실행-압축 기법을 사용한 도구들을 패커로 부르겠다.

내가 일하고 있는 분야를 선도하는 기업들은 대부분 위와 같은 실행 압축/소프트웨어 프로텍터 기술을 각자의 방식으로 개발하고 적용하고 있다. 과거에는 몇 가지 도구들을 공용으로 사용하였지만, 최근에는 좀 달라졌다. (물론 이걸 다 해봐야 수도 얼마 안 되고, 제작자도 같은 경우가 많다.)

패커는 구현이 어렵고, 애초에 쉘-코드 구성 및 동작 방법부터 찾아야 하기에 난감한 분야지만, 코드 및 데이터의 원본을 알 수 있고, 압축 해제의 권한과 시스템에서 동작할 권한을 가지고 있다는 등의 많은 이점이 있다.

나는 위와 같은 이유로 패커 개발을 시작하게 되었다. 단순하게 좋은 솔루션을 만들고 싶어 시작했고, 우리 팀의 기술력을 높여 같은 분야의 기술자들에게 알리고 싶었다.



여담 1.
내가 이 분야를 시작하며 목표로 했던 기술과 프로젝트기도 하다. 내 첫 번째 포트폴리오는 압축률 0%의 패커였다. 압축 알고리즘부터 쉘 코드 구성까지 모두 개발하였지만, 낮은 압축률과 실패한 쉘 코드 구성으로 0%의 압축률이 나왔다. 지금 와서 생각하면 나름 대단한 것 같다.

여담 2.
과거에는 공용 패커가 마구 생기면서 대-패커 시대라는 표현이 돌았지만, 솔직히 지금만 할까 싶다.


I think, therefore I am.


'History > Tales' 카테고리의 다른 글

퇴사를 생각하며..(1)  (0) 2025.03.09
잡담(2)  (0) 2024.12.29
잡담(1)  (0) 2024.12.24
VxLang 개발 기록(3)  (0) 2024.12.23
VxLang 개발 기록(2)  (0) 2024.12.22