주요 콘텐츠

난독 처리된 P 코드 파일 생성하기

P 코드 파일은 이 파일이 생성된 MATLAB® 소스와 동일하게 동작합니다. P 코드 파일은 또한 소스 파일과 동일한 속도로 실행됩니다. P 코드 파일은 의도적으로 난독 처리됩니다.

참고

보안 고려 사항: pcode 함수는 MATLAB 프로그램 파일을 난독 처리된 사유 코드 형식으로 생성합니다. 여러 방법을 함께 사용하여 민감한 코드나 데이터를 보호하는 방안을 고려해 보십시오. 자세한 내용은 소스 코드를 보호하기 위한 보안 고려 사항 항목을 참조하십시오.

P 코드 파일 만들기

P 코드 파일을 생성하려면 MATLAB 명령 창에 다음 명령을 입력하십시오.

pcode file1.m file2.m

이 명령을 실행하면 파일 file1.p, file2.p 등이 생성됩니다. 현재 폴더에 있는 모든 .m 소스 파일을 P 코드 파일로 변환하려면 다음 명령을 사용하십시오.

pcode *.m

P 코드 파일 생성을 위한 모든 구문에 대한 설명은 pcode 함수 도움말 페이지를 참조하십시오.

로컬 식별자 난독 처리하기

pcode -R2022a와 함께 matlab.lang.obfuscateNames를 사용해 지역 변수, 로컬 함수 및 중첩 함수의 이름을 일반 이름으로 바꾸어 소스 코드를 추가로 난독 처리합니다.

참고

난독 처리된 이름의 코드는 소스 코드와 다르게 동작할 수 있습니다. matlab.lang.obfuscateNamesx = 1, if x < 5, f(x+y)에 있는 x와 같이 코드에 이름이 직접 나타난 것만 난독 처리합니다. eval("f(x+y)") 또는 clear x와 같은 string형, 문자형 벡터 및 명령 구문 인수에 있는 항목은 난독 처리되지 않습니다.

예를 들어, 다음과 같은 함수 myfunc에 대한 소스 코드가 있다고 가정해 보겠습니다.

function outputArg = myfunc(inputArg1,inputArg2)
    sumVar = inputArg1 + inputArg2;
    prodVar = inputArg1*inputArg2;

    outputArg = sumVar/prodVar;
end

matlab.lang.obfuscateNames를 사용해 로컬 이름을 난독 처리하여 myfunc를 새 파일에 씁니다.

matlab.lang.obfuscateNames("SourceCode\myfunc.m","ObfuscatedCode\myfunc.m")

새 파일에서는 로컬 식별자 이름이 일반 이름으로 바뀝니다.

function outputArg = myfunc(inputArg1,inputArg2)
    id242487092 = inputArg1 + inputArg2;
    id40037619 = inputArg1*inputArg2;

    outputArg = id242487092/id40037619;
end

참고로, 입력 인수와 출력 인수의 이름은 변경되지 않습니다. 이름 ans, varargin, varargoutload 함수에 리터럴 인수로 사용된 이름은 난독 처리되지 않습니다.

철저한 테스트를 통해 난독 처리된 코드가 의도한 대로 기능하는지 확인하십시오. 난독 처리된 코드의 동작을 검증하려면, MATLAB 테스트 프레임워크를 사용하여 자동화된 테스트를 작성해 보십시오. 코드가 원하는 대로 동작하지 않으면, PreserveNames를 비롯한 여러 이름-값 인수를 사용하여 난독 처리 과정을 제어하십시오.

outputFile에 작성되는 소스 코드는 UTF-8을 사용하여 인코딩됩니다.

P 코드 파일 호출하기

결과로 생성된 P 코드 파일은 이 파일이 생성된 MATLAB .m 소스 파일을 호출할 때와 동일한 방식으로 호출할 수 있습니다. 예를 들어 파일 myfun.p를 호출하려면 다음을 입력하십시오.

[out1,out2] = myfun(in1,in2);

스크립트 myscript.p를 호출하려면 다음을 입력하십시오.

myscript;

P 코드 파일을 호출할 경우 MATLAB은 해당 .m 소스 파일보다 P 코드 파일에 실행 우선 순위를 부여합니다. 이는 P 코드 파일 생성 시에 소스 코드를 변경하더라도 마찬가지입니다. 코드를 배포하기 전에 반드시 .m 소스 파일을 제거하십시오.

이후 버전의 MATLAB에서 이전 버전의 P 코드 파일 실행하기

P 코드 파일은 파일이 생성된 릴리스와 파일이 사용되는 릴리스에 관계없이 실행되도록 설계되었습니다(이전 버전 및 이후 버전과의 호환성). MATLAB의 새로운 기능과 제거된 기능으로 인해 오류가 발생할 수 있지만, 그러한 오류는 원래 MATLAB 소스 파일을 사용할 때도 발생할 수 있습니다. P 코드 파일에서 이러한 종류의 오류를 수정하려면 해당 MATLAB 소스 파일을 수정하고 새 P 코드 파일을 만드십시오.

MATLAB 버전 7.4(R2007a)나 그 이전 버전에서 빌드한 P 코드 파일의 형식은 최신 MATLAB 버전에서 빌드한 것과 다릅니다. 이러한 이전 버전의 P 코드 파일은 MATLAB V8.6(R2015b)이나 그 이후 버전에서 실행되지 않습니다. MATLAB V7.4나 그 이전 버전에서 빌드한 P 코드 파일이 있으면 최신 MATLAB 버전을 사용하여 재빌드하고 필요하면 다시 배포하십시오.

참고 항목

도움말 항목