간단한 유틸리티를 소개 드립니다.
Excel VBA학습 자료도 함께 소개 드립니다.

Excel VBA를 이용한 파일 복사루틴 입니다.
용도는 파일 복사 입니다. 활용은 개인의 용도에 따라 다를 수 있겠습니다.

Excel 실행 프로세스로 수행
되기 때문에 특수 용도의 test로 사용 가능 합니다.

Windows환경에서 File Create / Read / Write 함수 hijacking 을 이용한 Encryption, Decryption 을 이용한 일반적 I/O 안정성을 확인 가능 합니다.

특히 Excel(혹은 동등한 오피스 프로그램 포함) 실행 프로세스에 대해서 암호화 과정을 허락하고, 앞서 hijacking 함수를 이용하는 환경에서 제대로된 안정성 여부를 판단 할 수 있을 것입니다.

제대로된 솔루션이 아닌 경우 복사 결과 파일에 대해서 Decryption된 결과를 기대 할 수 있습니다.

갱신: 2010-04-26
다른 방법으로 DRM 원본 파일을 얻을 수 있는 내용을 정리 했습니다.
직접적인 내용은 제공 드리지 못하고 힌트만 알려 드립니다.

아래 글을 참고 하세요
2010/04/22 - [소프트웨어/역공 [리버스엔지니어링]] - DRM, 보안 솔루션! - API Hooking 을 맹신 말라!


갱신: 2010-03
-01

아래 방법으로는 더 이상 특정 DRM 솔루션에 대한 원복 기능이 동작 하지 않습니다.
혹시나 원복을 하시려고 아래 내용을 활용 하실 경우 오해 없으시길 바랍니다.

갱신: 2010-03-25
아래 리플로 언급한 Send to 기능도 달라졌더군요! ㅎ~
그들이 제 블로그에 출근 도장이라도 찍는 듯 합니다!
 - 감사패라도 받아야 할 것 같은데요. <진짜로!>

곧 흥미 진진한 소식을 하나 전달 하겠습니다. 다만 감사패 없이 다 알려 드릴 수는 없고 맛보기 만으로~ / 개봉 박두!


아래에 대한 기본 동작을 제공 합니다.
 1. Excel 에서 파일 읽기
 2. Excel 에서 파일 기록
 3. Excel 에서 읽고 쓰기를 해서 파일 내용 복사
 

Surface Tension by nickwheeleroz (on holiday) 저작자 표시비영리동일조건 변경허락




1. 파일 선택하기

아래 문장으로 파일명(Full path 포함)을 받아 오게 됩니다.
Dim fileName As String
fileName = Application.GetOpenFilename(fileFilter:="Any file (*.*), *.*", Title:="Set File path and name for read.")

위와 같은 명령이 실행 되면, File에 대한 full path를 fileName 변수로 받아오게 됩니다.



2. 원본 / 복사본 파일 열기

RandomFileIO는 제가 별도로 구성한 class 입니다.
상세 내용은 Microsoft Knowlege Base(http://support.microsoft.com/kb/189981)를 참고 바랍니다.
아! 추가로 다음 KB도 보셔야 겠네요 (http://support.microsoft.com/kb/165942)도 참고 바랍니다.
Dim SrcFile As RandomFileIO         ' 원본 파일
Dim DestFile As RandomFileIO        ' 복사 파일
......
Set SrcFile = New RandomFileIO
Set DestFile = New RandomFileIO
  
'━━ 원본은 읽기 전용으로
SrcFile.OpenFile fileName, False
......
'━━ 복사용의 쓰기 전용
fileName = fileName + "_Copy"
DestFile.OpenFile fileName, True
......



3. 원본에서 복사본으로 파일 복사

마지막 작업은 '걍' 읽고, 동일 내용을 쓰기 하는 것으로 끝입니다.
읽은 파일과 동일한 결과를 _Copy 확장자로 복사가 완료 됩니다.

Do
    fSuccess = SrcFile.Reads(fileData(0), BUFFER_SIZE, lBytesRead, 0)
    If fSuccess Then
        fSuccess = DestFile.Writes(fileData(0), lBytesRead, lBytesWritten, 0)
    End If
Loop While (fSuccess And lBytesRead > 0)



4. 공개한 Excel add-on 설치 방법

파일받기


Excel 2007 기준 입니다. 이전 버전에서는 도구에서 해당 옵션을 찾을 수 있을 겁니다 (아마도?!)


1. Excel 실행
2. File 메뉴 선택
3. 오른쪽 밑의 [Excel 옵션(I)] 버턴 선택
4. "추가 기능" 선택
5. 아래쪽의 관리: [Excel추가 기능] 상태에서 [이동(G)...] 선택
6. "추가 기능" 창에서 [찾아보기(B)...] 선택
7. 저장한 add-on 파일 선택


설치를 완료 했다면 Excel 2007  리본 메뉴 "추가 기능" 혹은 이전버전(Excel 2003)의 경우 ToolBar 로 메뉴가 추가 됩니다.
여러분이 하실 일은 단지 [Copy] 혹은 [Copy for all formats] 버턴을 누르고 복사 원본을 선택 하시면 됩니다.
그러면 해당 파일의 동일 위치에 복사된 파일이 [ 원본파일명 + _Copy ] 형태로 생성이 됩니다.

[Copy for all formats]는 내부적으로 확장자를 .xls로 바꾸고 복사 과정은 동일하게 수행합니다.
특수 목적으로 유용하게 사용 가능한 기능 입니다.
다만 .NET framework - Scripting.FileSystemObject 에 의존적이기에 사용자 환경에 따라 동작 안할 수도 있습니다.
해당 내용은 (http://msdn.microsoft.com/en-us/library/6kxy1a51(VS.85).aspx)에서 찾아 보실 수 있습니다.

Excel VBA 학습과,  파일 복사 test, 암호화 안정성 확인 용도로 유용하게 사용하세요.


+ Recent posts