서론 php 소스 개발 을 하 다 보 면 공개 하 기 가 꺼려 지 는 소스 가 있 기 마련 입니다 . 또한 디비 커넥트 설정 과 계정 정보 및 서버 설정 에 대한 php 소스 코드 들 은 암호화 가 해킹 에 대한 최소한 의 예방책 일 것 이 다 . 이러 한 소스 암호 화 툴 로 는 Zend , 이온 큐브 쪽 솔루션 이 잘 알려져 있 습니다 . 실제 여러 업체 에서 사용 중 이 며 안정 적 입니다 . 물론 유료 화 버 젼 입니다 . 하지만 무료 버전 의 암호 화 툴 도 있 습니다 . 오픈 소스 인 php _ screw 입니다 . 해당 솔루션 은 일본 의 ThePM 9 . com 이 라는 개발 업체 에서 만들 어 졌으며 , 현재 는 1 . 5 버전 까지 개발 되 어 졌 습니다 . php 소스 코드 를 암호 화 된 파일 로 생성 하 는 실행 파일 과 이 를 Zend - Compile 에 전달 되 기 전 에 해독 하 는 php 모듈 형태 로 이루 어 집니다 . 어떠 한 방법 으로 암호 화 하 는지 는 공개 하 지 않 을 sourceforge 를 통해 해당 소스 를 다운 받 아 php 동적 모듈 을 생성 추가 하 는 형태 입니다 . 아래 부터 는 해당 모듈 의 설치 법 에 대해서 알 아 보 고 겠 습니다 . 본론 1 . 설치 조건 다운 받 은 소스 상 README 파일 을 읽 어 보 시 면 알 수 있 겠 지만 php _ screw - 1 . 5 버 젼 은 PHP 5 . x 버 젼 에 zlib 이 설치 되 어 있 어야 하 며 , UNIX 계열 ( 리눅스 , FreeBSD 등 ) 에서 만 지원 합니다 . 그런데 php 4 버 젼 에서 도 설치 및 운영 이 잘 됩니다 . ( 당연 한 말씀 이 겠 지만 php 가 동적 으로 설치 되 어 있 어야 합니다 . ) 2 . sourceforge 를 통해 해당 파일 을 다운 받 습니다 . ( http : / / sourceforge . net / projects / php - screw / ) 3 . 저 는 해당 소스 를 / usr / local / src 디렉 토리 에 옮겨 놓 았 습니다 . [ root @ localhost src ] # pwd / usr / local / src [ root @ localhost src ] # ls php _ screw - 1 . 5 . tar . gz 4 . 소스 압축 해제 [ root @ localhost src ] # tar xvzf php _ screw - 1 . 5 . tar . gz php _ screw - 1 . 5 / php _ screw - 1 . 5 / zencode . c php _ screw - 1 . 5 / LICENSE php _ screw - 1 . 5 / tools / php _ screw - 1 . 5 / tools / zencode . c php _ screw - 1 . 5 / tools / Makefile php _ screw - 1 . 5 / tools / screw . c php _ screw - 1 . 5 / config . h php _ screw - 1 . 5 / README . en php _ screw - 1 . 5 / config . m 4 php _ screw - 1 . 5 / Makefile . in php _ screw - 1 . 5 / php _ screw . c php _ screw - 1 . 5 / php _ screw . h php _ screw - 1 . 5 / my _ screw . h php _ screw - 1 . 5 / README . jp 5 . phpize 명령어 를 이용 하 여 서버 정보 에 맞 는 configure 생성 [ root @ localhost src ] # cd php _ screw - 1 . 5 [ root @ localhost php _ screw - 1 . 5 ] # / usr / local / php / bin / phpize Configuring for : PHP Api Version : 20020918 Zend Module Api No : 20020429 Zend Extension Api No : 200506066 . 생성 된 소스 확인 [ root @ localhost php _ screw - 1 . 5 ] # ll 합계 800 - rw - rw - rw - 1 root root 1388 1 월 12 2004 LICENSE - rw - r -- r -- 1 root root 3151 4 월 4 00 : 10 Makefile . global - rw - rw - rw - 1 root root 245 8 월 1 2002 Makefile . in - rw - rw - rw - 1 root root 4052 10 월 14 2007 README . en - rw - rw - rw - 1 root root 3290 10 월 14 2007 README . jp - rw - r -- r -- 1 root root 52186 4 월 4 00 : 10 acinclude . m 4 - rw - r -- r -- 1 root root 174501 4 월 4 00 : 10 aclocal . m 4 drwxr - xr - x 2 root root 4096 4 월 4 00 : 10 autom 4 te . cache drwxr - xr - x 2 root root 4096 4 월 4 00 : 10 build - rwxr - xr - x 1 root root 41134 4 월 4 00 : 10 config . guess - rw - r -- r -- 1 root root 1644 10 월 13 2007 config . h - rw - r -- r -- 1 root root 1540 4 월 4 00 : 10 config . h . in - rw - rw - rw - 1 root root 593 4 월 17 2002 config . m 4 - rwxr - xr - x 1 root root 29708 4 월 4 00 : 10 config . sub - rwxr - xr - x 1 root root 279525 4 월 4 00 : 10 configure - rw - r -- r -- 1 root root 2226 4 월 4 00 : 10 configure . in - rw - r -- r -- 1 root root 0 4 월 4 00 : 10 install - sh - rw - r -- r -- 1 root root 143988 4 월 4 00 : 10 ltmain . sh - rw - r -- r -- 1 root root 0 4 월 4 00 : 10 missing - rw - r -- r -- 1 root root 0 4 월 4 00 : 10 mkinstalldirs - rw - rw - rw - 1 root root 63 8 월 1 2002 my _ screw . h - rw - rw - rw - 1 root root 3142 10 월 14 2007 php _ screw . c - rw - rw - rw - 1 root root 194 8 월 1 2002 php _ screw . h drwxrwxrwx 2 root root 4096 10 월 14 2007 tools - rw - rw - rw - 1 root root 1772 10 월 14 2007 zencode . c 7 . SEED key 변경 - README 를 잘 읽 어 보 시 면 알 겠 지만 암호 화 할 때 특정 키 값 에 따라 암 화 된 값 이 달라집니다 . 그러므로 각자 가 원 하 시 는 값 으로 변경 하 시 면 됩니다 . my _ screw . h 의 배열 의 값 을 변경 하 시 면 됩니다 . 값 의 크기 에 따른 속도 차이 는 없 다고 합니다 . [ root @ localhost php _ screw - 1 . 5 ] # cat my _ screw . h short pm 9 screw _ mycryptkey [ ] = { 11152 , 368 , 192 , 1281 , 62 }; 8 . 컴파일 환경 설정 [ root @ localhost php _ screw - 1 . 5 ] # . / configure -- with - php - config =/ usr / local / php / bin / php - config 9 . 컴파일 [ root @ localhost php _ screw - 1 . 5 ] # make 10 . 모듈 확인 [ root @ localhost php _ screw - 1 . 5 ] # ll modules / 합계 32 - rw - r -- r -- 1 root root 721 4 월 4 00 : 25 php _ screw . la - rwxr - xr - x 1 root root 26781 4 월 4 00 : 25 php _ screw . so 11 . 모듈 위치 지정 - 모듈 을 확인 하 고 make install 을 통해 자동 으로 모듈 을 특정 디렉 토리 를 이동 할 수 있 지만 경로 명 이 직관 적 이 지 않 아 자체 디렉 토리 를 만들 어 줍니다 . [ root @ localhost php _ screw - 1 . 5 ] # mkdir / usr / local / lib / php _ modules [ root @ localhost php _ screw - 1 . 5 ] # mv modules / php _ screw . so / usr / local / lib / php _ modules 12 . php . ini 설정 - php . ini 의 설정 을 통해 해당 모듈 을 로드 할 수 있 게 합니다 . 아래 와 같이 [ root @ localhost php _ screw - 1 . 5 ] # vi / usr / local / lib / php . ini . ..... extension _ dir = "./" 을 extension _ dir = "/ usr / local / lib / php _ modules " 로 수정 및 아래 내용 추가 extension = php _ screw . so . .... 13 . 모듈 확인 - 아파치 재 시작 후 모듈 확인 [ root @ localhost php _ screw - 1 . 5 ] # / usr / local / apache / bin / apachectl restart [ root @ localhost php _ screw - 1 . 5 ] # php - i | grep php _ screwphp _ screwphp _ screw support => enabledPWD => / usr / local / src / php _ screw - 1 . 5 _ SERVER [ " PWD "] => / usr / local / src / php _ screw - 1 . 5 _ ENV [ " PWD "] => / usr / local / src / php _ screw - 1 . 5 [ root @ localhost php _ screw - 1 . 5 ] # 14 . 암호 화 명령어 컴파일 - 모듈 추가 가 완료 되 면 소스 를 암호 화 하 는 툴 을 컴파일 해야 합니다 . 해당 소스트 tools 라는 디렉 토리 에 있 습니다 . [ root @ localhost php _ screw - 1 . 5 ] # cd tools / [ root @ localhost tools ] # pwd / usr / local / src / php _ screw - 1 . 5 / tools 15 . 컴파일 및 결과 확인 [ root @ localhost tools ] # make gcc - o screw screw . c zencode . c - lz [ root @ localhost tools ] # ll 합계 24 - rw - r -- r -- 1 root root 105 10 월 14 2007 Makefile - rwxr - xr - x 1 root root 8644 4 월 4 00 : 34 screw - rw - rw - rw - 1 root root 1541 10 월 14 2007 screw . c - rw - rw - rw - 1 root root 1772 10 월 14 2007 zencode . c 16 . screw 라는 명 려 어 를 이용 해서 암호 화 하 기 - 사용 하 기 쉽 게 path 가 잡혀 있 는 경로 이동 하 기 것 이 좋 을 듯 합니다 . - test . php 자연수 를 입력 받 아 구구단 을 출력 하 는 소스 입니다 . [ root @ localhost tools ] # mv screw / usr / local / bin [ root @ localhost tools ] # cd / home / test / public _ html / [ root @ localhost public _ html ] # ll 합계 4 - rw - r -- r -- 1 root root 1398 4 월 4 00 : 39 test . php [ root @ localhost public _ html ] # screw test . php Success Crypting ( test . php ) [ root @ localhost public _ html ] # ll 합계 8 - rw - r -- r -- 1 root root 768 4 월 4 00 : 44 test . php - rw - r -- r -- 1 root root 1398 4 월 4 00 : 44 test . php . screw 17 . 암호 화 파일 확인 및 원 소스 삭제 - 위 의 결과 와 같이 소스 이름 뒤 . screw 가 붙 은 파일 이 원 소스 이 다 . 백업 후 삭제 해 준다 . - 암호 화 파일 확인 [ root @ localhost public _ html ] # cat test . phpPM 9 SCREW � >  ; ㅤㅅㅟㅊ , � { � ! ` � s 첨 e = � I ㅤㅍㅐㅍ � YU . i * � +ⓘ ⅴ ㅤㄷㅘㄻㅤㄲㅑㄷㅤㄷㅜㅋ �� |  ( p � @~ B ㎎ 臾 ; Nx � {  u ㅤㄱㅢㄻ 1 ㅤㅈㅙㅅ $ ご  ㅤㅆㅢㄵ � Li � . b �� ㅤㅅㅞㅅ 厘  TH � * � [  c � LfRbZ � gr 統 � ㅤㅇㅡㄾ t  2  4 %# � ㅤㄹㅓㅀ � 8 � E  ㅤㅆㅒㅤ Z 緡 v � ㅤㅎㅞㄺㅤㄷㅘㅇ � #_ � M ㅤㄲㅘㅊㅤㄷㅙㅍ 4 n 펍 岱 ! � `  ㅤㄸㅙㅀ � h � ` � iZH ㅤㄱㅘㄾ : s � # � - LT ㅤㄲㅣㅍ H � 3 ㅤㄲㅔㄿ 狼 l ㅤㅅㅒㄳ � ㅤㄴㅔㅊㅤㅉㅡㅈ뼘 x 0 ㅤㄱㅏㄲ 1 � ㅤㄲㅘㅀ BE ㅤㅁㅣㅀ  ㅤㅆㅒㄼ �� t ㅤㅎㅣㅌ c 22 %  ㅤㅌㅔㅀ x � { ㅤㄷㅙㄳ ) 嗅 X 窺 ! st � ㅤㅆㅞㅆ섞ㅤㄲㅖㅂ 8 � E � [ m � * 陛 �� * w � g ㅤㅌㅛㄺ JU 1 ㅤㅈㅝㄵ � W � I � lT 商 P ' ㅤㄲㅔㄺ � + � |+ M � V � 76 �� Y  ㅤㄴㅑㄵㅤㅇㅡㄾ � ㅤㄲㅖㅁ 莩 � nr ��� 8 c 詐 yKR � }% A 僭 r � T � ` ㅤㅃㅓㄵ  " A � ㅤㄴㅘㅇ �� O � r $ L  Z 쇨 m ㅤㄹㅕㄻ _ � \ D 7 淨 ㅤㅋㅕㅊ  芟 鍋 $  侘  ㅤㄲㅒㄺ C � \ ��� % 驕 W  廈 ㅤㅍㅐㄶ e � Z 펫 Y � Ur ㅤㅇㅏㅄ ~ ㅤㅈㅜㄳ 鍋 � ㅤㅅㅝㄱ � 6 � ㅤㅎㅕㄼ � bS 沈 � J  ㅤㄱㅢㅈ � cb ㅤㅂㅒㄵ %  ㅤㅎㅝㅅ x 炡 � 8 ;? o 筒 V 1 ㅤㅍㅑㄻ Vy ( ( ㅤㄴㅠㅀㅤㅈㅜㄵ 0 . BbC ��� 6 崗 ≫? a -; 戾 + 倜 � m � F � 6 d | Tx / � ㅤㅉㅜㄻㅤㄲㅛㄲㅤㅊㅛㄴ � 2 ㅤㅈㅐㄻ � ㅤㄹㅠㅆ ! � ㅤㄱㅗㅋ  qRc >  匕 qo  @ 逋 [ root @ localhost public _ html ] # 결론 설치 및 운영 에 는 특별히 신경 쓴 부분 이 없 다 . 그러나 서버 이 전시 문제 되 는 부분 이 있 다 . my _ screw . h 에 설정 된 SEED key 값 을 모르 게 된다면 아무리 모듈 을 만들 어도 해당 소스 웹 출력 이 되 지 않 습니다 . 원 소스 백업 이 중요 하 며 해당 SEED key 값 도 백업 해 놓 는 것 도 중요 합니다 . - By linux . co . kr 슈퍼 짱 [ 원 글 링크 ] : https : / / www . linux . co . kr / home 2 / board / subbs / board . php ? bo _ table = lecture & wr _ id = 1727 사업자 정보 표시 | | | 사업자 등록 번호 : -- | TEL : -- | 사이버 몰의 이용 약관 바로 가 기