Main Content

pcode

난독 처리된 실행 파일 만들기

설명

예제

pcode(item)은 검색 경로에 있는 .m 파일 또는 폴더의 코드를 난독 처리하고 확장자가 .p인 P 코드 파일을 생성합니다. 예를 들어, item이 이름이 mytest.m.m 파일이면 결과 파일은 mytest.p입니다. item이 폴더인 경우 이 폴더에 있는 모든 스크립트나 함수 파일이 현재 폴더에서 난독 처리된 후 저장됩니다. P 코드 파일은 대응하는 .m 파일을 수정한 후에도 .m 파일보다 실행 우선 순위가 높습니다.

참고

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

예제

pcode(item,"-R2022a")는 더 복잡한 난독 처리 알고리즘을 사용하여 P 코드 파일을 만듭니다. 이 방법으로 난독 처리된 파일은 MATLAB R2022a 이상에서만 실행됩니다.

pcode(item,"-R2007b")는 디폴트 레거시 알고리즘을 사용하여 P 코드 파일을 만듭니다.

예제

pcode(item1,item2,...,itemN)은 쉼표로 구분된 목록에 지정된 각 .m 파일 또는 폴더에 대해 개별 P 코드 파일을 만듭니다.

예제

pcode(___,"-inplace")는 입력값과 동일한 폴더에 P 코드 파일을 만듭니다. 위에 열거된 구문의 입력 인수 조합 다음에 "-inplace"를 지정하십시오.

소스 파일이 네임스페이스 또는 클래스 폴더 내에 있으면 pcode는 동일한 네임스페이스 또는 클래스 구조체를 만들어 결과 P 코드 파일을 담습니다.

예제

모두 축소

현재 폴더에서 myfunc.m이라는 파일에 3차 다항식의 제곱근을 반환하는 함수를 정의합니다.

function y = myfunc(x)
y = sqrt(x.^3 + x.^2 + x + 1);
end

myfunc.m에서 P 코드 파일을 만듭니다.

pcode myfunc

myfunc를 호출할 때 MATLAB이 P 코드 파일을 사용하는지 확인합니다.

a = myfunc(3);
which myfunc
c:\myMATLABfiles\myfunc.p

현재 폴더에서 myfunc.m이라는 파일에 3차 다항식의 제곱근을 반환하는 함수를 정의합니다.

function y = myfunc(x)
y = sqrt(x.^3 + x.^2 + x + 1);
end

더 복잡한 난독 처리 알고리즘을 사용하여 myfunc.m에서 P 코드 파일을 만듭니다. 이 방법으로 난독 처리된 파일은 MATLAB R2022a 이상에서만 실행됩니다.

pcode myfunc -R2022a

myfunc를 호출할 때 MATLAB이 P 코드 파일을 사용하는지 확인합니다.

a = myfunc(3);
which myfunc
c:\myMATLABfiles\myfunc.p

sparfun 폴더에서 선택한 파일을 P 코드 파일로 변환합니다.

임시 폴더를 만들고 .m 파일의 기존 경로를 정의합니다.

tmp = tempname;
mkdir(tmp)
cd(tmp)
filename = fullfile(matlabroot,"toolbox","matlab","sparfun","spr*.m");

P 코드 파일을 만듭니다.

pcode(filename)
dir(tmp)
.            ..           sprand.p     sprandn.p    sprandsym.p  sprank.p     

이제 임시 폴더는 인코딩된 P 코드 파일을 포함합니다.

클래스의 일부인 입력 파일에서 P 코드 파일을 생성합니다. (네임스페이스의 일부인 파일에도 동일한 절차를 적용할 수 있습니다.)

classfolder를 .m 파일이 포함된 기존 클래스 폴더로 정의합니다.

classfolder = fullfile(cd,"@myClass")
classfolder = 
"/tmp/Bdoc24a_2511836_3464181/tp7ad01769/matlab-ex48377006/@myClass"
dir(classfolder)
.          ..         myClass.m  

임시 폴더를 만듭니다. 지금 이 폴더에는 클래스 구조체가 없습니다.

tmp = tempname;
mkdir(tmp)
cd(tmp)
dir(tmp)
.   ..  

경로 classfolder에 있는 모든 .m 파일에 대해 P 코드 파일을 만듭니다. 입력 파일은 클래스의 일부이므로, MATLAB은 출력 파일이 동일한 클래스에 속하도록 폴더 구조체를 만듭니다.

pcode(classfolder)
dir(tmp)
.         ..        @myClass  

P 코드 파일은 동일한 폴더 구조에 위치합니다.

dir("@myClass")  
.          ..         myClass.p  

입력 파일과 동일한 폴더에 P 코드 파일을 생성합니다.

여러 개의 .m 파일을 임시 폴더에 복사합니다.

filename = fullfile(matlabroot,"toolbox","matlab","sparfun","spr*.m");
tmp = tempname;
mkdir(tmp)
copyfile(filename,tmp)
dir(tmp) 
.            ..           sprand.m     sprandn.m    sprandsym.m  sprank.m     

원래 .m 파일과 동일한 폴더에 P 코드 파일을 만듭니다.

pcode(tmp,"-inplace")
dir(tmp)
.            ..           sprand.m     sprand.p     sprandn.m    sprandn.p    sprandsym.m  sprandsym.p  sprank.m     sprank.p     

입력 인수

모두 축소

난독 처리할 .m 파일 또는 폴더로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

  • 파일 확장자가 없거나 폴더 이름이 아닌 입력 인수는 MATLAB 경로나 현재 폴더에 있는 함수여야 합니다.

  • 와일드카드 문자 *를 사용하면 pcode.m 확장자가 없는 모든 파일을 무시합니다.

  • pcode 함수는 라이브 스크립트 또는 함수(.mlx)를 지원하지 않습니다.

  • item이 네임스페이스 또는 클래스 폴더 내에 있으면 pcode는 동일한 네임스페이스 또는 클래스 구조체를 만들어 결과 P 코드 파일을 담습니다.

난독 처리할 .m 파일 또는 폴더 목록으로, 문자형 벡터 또는 string형 스칼라의 쉼표로 구분된 목록으로 지정됩니다. 이 목록에는 파일과 폴더가 혼합되어 포함될 수 있습니다.

세부 정보

모두 축소

관련 파일에서 P 코드 파일 만들기

프로그램 외에도 프로그램이 종속된 다른 함수와 스크립트를 난독 처리할 수 있습니다. 프로그램을 실행하는 데 필요한 파일을 확인하려면 matlab.codetools.requiredFilesAndProducts 함수를 사용하십시오.

코드 난독 처리하기

P 코드 파일은 난독 처리된 실행 전용 형식의 MATLAB 코드입니다. P 코드 파일은 MATLAB 편집기 또는 라이브 편집기에서 열 수 없습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장