IT/PHP

[PHP] PHP screw 사용법 PHP 소스 암호화

월공 2020. 11. 10. 11:26
728x90
300x250

PHP Screw 적용 방법에 대해서 포스팅합니다.

 

작업 환경은 Linux Centos8 , PHP 7.4 입니다.

 

sourceforge.net/projects/php-screw/

 

PHP Screw

Download PHP Screw for free. PHP Screw is a PHP script encryption tool. When you are developing a commercial package using PHP, the script can be distributed as encrypted up until just before execution, preserving your intellectual property.

sourceforge.net

 

우선 Screw 압축파일을 다운 받아와서 압축 풀고 진입

#해당 경로에서 작업
cd /usr/local/src

#Screw 파일 다운
wget http://sourceforge.net/projects/php-screw/files/latest/download?source=files

#압축 풀기
tar -zxvf  php_screw-1.5.tar.gz

#압축풀기가 성공적으로 진행되었다면 해당 파일 진입
cd php_screw-1.5

#혹시 모르니 원본 설정 파일 카피
cp my_screw.h my_screw.h_copy
cp php_screw.c php_screw.c_copy

#파일 내용 수정
vi my_screw.h

################################ 암복호화 사용키값 변경
short pm9screw_mycryptkey[] = {
 12311, 312, 4422, 534, 11, 849, 125
};

#파일 내용 수정
vi php_screw.c

################################ 맨 하단에 CG 있는 줄 주석처리

PHP_MINIT_FUNCTION(php_screw)
{
//      CG(extended_info) = 1;

        org_compile_file = zend_compile_file;
        zend_compile_file = pm9screw_compile_file;
        return SUCCESS;
}

PHP_MSHUTDOWN_FUNCTION(php_screw)
{
//      CG(extended_info) = 1;
        zend_compile_file = org_compile_file;
        return SUCCESS;
}


자 이제 컴파일을 진행해주셔야 하는데

phpize

  

저는 여기서 에러가 나더군요 찾아보니 저걸 실행하려면 php-devel 이란녀석을 설치해야하는데 아래와 같은 에러가 계속 뜹니다.

 

 #해당 구문 먼저 실행하고 나면 정상적으로 설치 됩니다.
 dnf config-manager --set-enabled PowerTools
 
 yum install php-devel

자 이렇게 하고나서 phpize 를 다시 실행 시켜주면

위와 같이 뜹니다.

#아래 명령어 실행하면 겁나 checking checking checking 거리면서 여러줄이 뜹니다
./configure

# make 를 입력했을때 에러가 뜨면 php_screw.c 파일이 정상적으로 수정이 되었는지 확인합니다.
make

#################make 가 성공적으로 진행되었다면###################

Libraries have been installed in :

    /usr/local/src/php_screw-.1.5/modules 

###################어쩌고 저쩌고 뜹니다#################

# 마지막으로 실행
make install

### make install 성공시 ###
Installing shared extensions:     /usr/lib64/php/modules/
### make install 성공시 ###

make install 성공시 /usr/lib64/php/modules 경로 안에 php_screw.so 파일이 성공적으로 생긴것을 알수있습니다.

자 이제 마지막으로 php.ini 파일에서 so 파일을 연결해줘야합니다.

우선 암호화 파일을 만드는 구문은 아래와 같습니다.

screw 를 치고 절대경로를 입력해주면 되는데, php.ini 파일에서 so 파일 연결 안해주면 암호화 파일이 성공적으로 생기긴하더라도 php 상에서 인식을 못해서 암호화된 파일이 그대로 노출되는것을 볼수 있으실겁니다.

screw /var/www/html/test.php

 

php.ini 파일 내용 수정

extension_dir = "/usr/lib64/php/modules"
extension = php_screw.so

해주고나서 아파치 재시작 하고나서 phpinfo.php 파일 확인했을때 아래와 같이 php_screw 부분이 enabled 되있으면

성공적으로 모듈을 불러온것입니다.

 

위에까지 진행이 완료되었다면 다시 screw 파일로 암호화 파일을 생성해봅니다.

screw /var/www/html/connect.php

보통 원본 connect.php 파일에 암호화가 들어가고 screw 라는 확장자 파일이 하나 더생기는데 원본은 저기로 들어가게됩니다. 암호화 파일로 생성된다해서 원본파일이 바로 삭제되는게 아니니 안심하셔도 좋을듯합니다.

암호화 완료된 connect.php 파일을 까보면 아래 처럼 생겼습니다.

이제 저 암호화된 DB 연결 부분을 include 시켜서 DB 를 연동 시켜보면

아래처럼 DB 연결이 성공됐다는것을 확인할수 있습니다 

728x90
300x250