엑셀 파일 자체를 보호하는 것은 파일을 저장할 때 패스워드를 지정하면 된다.
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까지의 합을 구하는 프로시저가 있다. 이 프로시저에서 합을 저장하는 데 사용된 변수명을 알아내시오.
- 문제 파일
- problem_1 실행 화면
[문제 2]
문제 파일인 2.xlsm에는 problem_2라는 프로시저가 있다. problem_2 프로시저에서 호출하는 함수명을 알아내시오. (파일읽기 암호만 알려줌. 파일 쓰기 암호 및 VBA 프로젝트 암호는 안 알려 줌. 함수명 힌트:동물 이름)
- 파일 읽기(Read) 암호: 1234
- 문제 파일
- problem_2 실행 화면
[문제 3]
문제 파일인 3.xlsm에는 problem_3이라는 프로시저가 있다. problem_3에서 호출하는 함수명을 알아내시오. (함수명 힌트: 식물 이름)
- 문제 파일
- problem_3 실행 화면
[문제 4]
문제 파일인 4.xlam은 Unviewable+ 툴(엑셀 VBA 코드를 안보이게 하는 툴)에서 제공하는 'Unviewable'하게 가공된 샘플 파일이다. 이 파일에는 여러 프로시저와 함수가 들어 있는데 "GotoWebLink"라는 프로시저에서 첫 번째로 선언된 Variant형 변수의 이름을 알아내시오. (힌트: 변수명 길이는 6)
- 문제 파일:
- 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(어려움)
-끝-
'Programming > VBA(Excel, Powerpoint)' 카테고리의 다른 글
파워포인트에서 사용되지 않는 마스터 슬라이드 삭제하기 (0) | 2024.05.15 |
---|---|
엑셀 매크로 소스코드 비밀번호 없이 추출하는 방법 (0) | 2022.10.21 |
비밀번호에 의해 보호된 엑셀 파일 보호 해제 방법(Excel 97 - 2016) (0) | 2022.08.21 |
엑셀 파일 종류별(통합문서, 매크로, 추가기능) 파일 포맷 자료 (0) | 2022.08.21 |