본문 바로가기

Programming/VBA(Excel, Powerpoint)

엑셀 VBA 코드 보호 및 크랙 방법

반응형

엑셀 파일 자체를 보호하는 것은 파일을 저장할 때 패스워드를 지정하면 된다. 

Excel 2016까지는 패스워드를 무력화 시키는 쉬운 방법들이 있는데( 앞 글 참조), Excel 2019부터는 쉽지 않다. 

 

엑셀 파일 자체를 보호하는 것과 별개로, VBA(Visual Basic for Application) 코드를 보호하는 것은 또 다른 일이다.

  • 일반적으로 VBA코드에 암호화를 하는 이유는, 엑셀 파일 자체는 이용할 수 있게 배포하면서, VBA 코드는 자신의 노하우가 들어 있기에, 사용자가 볼 수 없게 하려는 것이 대부분의 이유
  • 따라서, 엑셀 파일 암호화를 해도, 그 암호는 알려줘야하고, 단 VBA 코드에 대한 패스워드는 알려주지 않아서 사용자가 VBA 코드를 보지 못하게 해야 한다.

 


주식 거래용 기능을 엑셀 VBA를 이용해서 코딩을 하고 그 엑셀 파일을 유료화해서 판매하는 경우 등, VAB 코드에 대한 기밀성(사용자가 볼 수 없게)을 보장하고 싶은 요구는 많은데, 실상 그것을 만족하게 하는 방법은 마땅치 않다. VBA 코드에 대해 password 지정 및 protection을 걸어도 쉽게 깨는 방법들이 인터넷에 너무 많이 알려져 있다.

 

 그러나, 몇 가지 방법은 아직 깨기 힘든 것도 있어서, 그 방법들을 소개하고자 한다.

 

번호 VBA 코드 보호 방법 Crack 방법
방법 1 - Excel에 있는 기본 방법인 VBA 코드에 대한 암호 설정 - 인터넷에 Crack방법 널리 알려져 있음    Crack 방법
방법 2 - 방법1에다가, 엑셀 파일 자체 password를 걸어버린다.(read 암호)
- read 암호 걸렸기에 zip 파일로 확장자 바꿔서 열 수 없기에, 단순하게 방법1의 Crack방법으로는 Crack할 수 없다.
- VBA코드가 있는 파일을 배포할 때는 read 암호는 알려주는게 일반적
- read 암호를 이용해서 파일을 연 후, 다시 암호없는 파일로 저장한 후, 위 방법1의 crack 방법 사용하면 됨
방법 3 - 엑셀파일 구조 이용 (password 지정 없음) (아직 이 방법에 대해 인터넷에 잘 알려지지 않았고, 이 방법으로 VBA코드를 보호하고 있는 사례들이 있어서, Crack 방법을 여기서 설명하지 않겠음)
방법 4 - UnviewablePlus.exe 이용하여 파일 변환 ($100~$300 정도에 판매하고 있는 제품이라서, Crack 방법을 여기에 소개하지 않겠음)

* 당초, 각 방법별 코드 및 Crack 방법을 소개 했다가, 방법3과 방법4에 대해서는 당분간 공개하지 않기로 함.

* 대신, Crack에 관심있는 분은, 문제를 통해서 직접 시도해볼 수 있게, 각 방법 별로 VBA 코드가 보호된 파일을 제공 함   

* 코드에 대한 난독화 처리도 좋은 방법이고, 위 방법과 병행해서 사용하면 좋으나, 여기서는 소개하지 않음. 다른 차원의 방법이기 때문.

* 엑셀 파일 포맷 자체를 바꾸는(DLL이나 EXE) 방법은 고려하지 않음 --> 사용성 떨어짐


퀴즈: 여러가지 방법으로 VAB 코드를 볼 수 없게 막아놨다. 동원할 수 있는 모든 방법 및 도구를 이용해서 VAB 코드 내용을 파악해 보세요. (정답을 찾으면 댓글에. 선착순)

 

[문제 1]

문제 파일인 1.xlsm에는 problem_1 이라는 1~100까지의 합을 구하는 프로시저가 있다. 이 프로시저에서 합을 저장하는 데 사용된 변수명을 알아내시오.

  • 문제 파일

1.xlsm
0.01MB

  • problem_1 실행 화면

 

 

[문제 2]

문제 파일인 2.xlsm에는 problem_2라는 프로시저가 있다. problem_2 프로시저에서 호출하는 함수명을 알아내시오. (파일읽기 암호만 알려줌. 파일 쓰기 암호 및 VBA 프로젝트 암호는 안 알려 줌. 함수명 힌트:동물 이름)

  • 파일 읽기(Read) 암호: 1234
  • 문제 파일

2.xlsm
0.02MB

 

 

  • problem_2 실행 화면

 

[문제 3] 

문제 파일인 3.xlsm에는 problem_3이라는 프로시저가 있다. problem_3에서 호출하는 함수명을 알아내시오. (함수명 힌트: 식물 이름)

  • 문제 파일

3.xlsm
0.01MB

  • problem_3 실행 화면

 

[문제 4]

문제 파일인 4.xlam은 Unviewable+ 툴(엑셀 VBA 코드를 안보이게 하는 툴)에서 제공하는 'Unviewable'하게 가공된 샘플 파일이다. 이 파일에는 여러 프로시저와 함수가 들어 있는데 "GotoWebLink"라는 프로시저에서 첫 번째로 선언된 Variant형 변수의 이름을 알아내시오. (힌트: 변수명 길이는 6)  

 

  • 문제 파일:

 

4.xlam
0.93MB

  • 4.xlam의 원래 파일명은 "VBA Tools-Demo-Ultimate locked.xlam" 임

 

 


위 문제들의 난이도는 다음과 같다. (주관적인 견해임)

문제 번호 문제 유형 Crack 난이도* 비고
1 VBA 암호 설정 1 자체 제작(수동)
2 VBA 암호 + 파일 암호 1.5 자체 제작(수동)
3 - 3 자체 제작 툴
4 Unviewable+ 3.5 Unviewable+ 사이트에서 제공되는 샘플

* Crack 난이도: 1(쉬움)  ---> 5(어려움)

 

-끝-

 

반응형