역컴파일을 방지하자!!

Programming/JAVA 2008/07/02 14:52
2009-02-26 수정 : retriver.pe.kr  호스팅 기간 만료로. 이미지가 사라져버렸다...-_-;  
                             그리하야...링크걸린 내용을...백업 받은 넘으로 다시 작성을 한다.
                             내용은 당시 작성 내용 그대로~.



4년(이나 흘렀네..--;) 전  '나'를 위해 작성된 문서이며..동시에 직원 교육을 위한 공개용이다.

디컴파일러 사용법(Eclipse On JAD ( Java Decompiler ))에 대한 글을 작성하면서 
디컴파일을 방지하기 위한 방법에 대해선 빼놓은것 같아서  설명하고자 한다.
( 4년전 작성된 문서임다...이후 많은 발전이 있었을테니...최신 버젼으로 학습하세용)

[보기] Obfucastor 사전의미

Obfucastor Tool을 이용하여 역컴파일을 방지하는 목적은 '보안상의 이유' 때문이다.  
하지만 사전 설명대로 '보안'이 아닌 클래스-함수-변수명들을 바꿔줌으로서 분석하기 어렵게 만들어 줄 뿐이다.
( 물론 디컴파일도 완벽하게 디컴파일 되는 건 아니다. Exception 처리 부분의 경우는 아직도 불안하더라..--)

[보기] 회상..



역컴파일 방지툴은 여러가지가 있으며,  무료(RetroGuard), 유료(DashO)의 대표적인 2개를 소개합니다.
        대표적인 것(내가 알고 있는것..ㅋㅋ)은 다음과 같다.
            -RetroGuard(무료), ProGuard(무료) , DashO(유료)

접기

RetroGuard 사용법 _DownTown LGT_
2004.07.22 retriver.pe.kr

1. 해당 프로젝트의 class 폴더로 이동해서 class파일만을 jar로 묶는다.
    >jar cvf Wooja.jar *.*

      


2. jar로 묶었으면 script 작성툴을 실행시킨다.
    >java RGgui
      


3. 그러면 gui창이 뜨고 Borwse..를 눌러서 해당 jar파일을 불러온다. 
    이 작업은 보호해야할 코드명을 지정해주는 작업이다 
    아래의 어쩌구 저쩌구는 신경끄고 넘어가자 next >     
 


4. 음.. 3번 항목에 뭔가 떠야 하는데.안 뜬다..그냥 next >


5. [Package]를 선택하면 해당 클래스 들이 뜬다..이 중에서 보호해야 할 클래스를 선택한다.
    물론Midlet을 상속한 Midlet class겠지..? 선택했으면 'Preserve the class....'를 선택해주고 next >


6. 헉..이번엔 더욱 섬세하게 함수..변수들 까지 나와주네..
    이곳에서도 보호가 필요한 이름들을 체크해 주자..
    선택하고 Preserve를 선택해주면 개별적으로 적용이 된다. next >


7. 그외에 보호가 필요한 것을 선택해주고(선택은 마음대로..) next >


8.오호,이거 봐라..화면에 script,rgs가 떴네..그래..완성된 거다.. 
  이넘이 obfucas..할때 참고할 제어문서(?)가 되는 것이다.
  이 툴이 없었다면..날코딩이 될것이다.
  


9. 여기까지 했으면 이제..RetroGuard를 사용하여 변환을 시켜 보자.
      > java RetroGuard Wooja.jar WoojaOb.jar script.rgs log.txt
      > java RetroGuard 원본.jar 변환될.jar 스크립트파일 결과정보
    끝난거다..이제 남은건 lgt의 preverify 과정과 jar묶는 과정..



10. WoojaOb.jar 압출을 풀면 바뀌어 잇는 파일들을 만나게 될 것이다.
     class파일들을 밖으로 꺼내고 나머지 것들을 지워주자..
      그리고 기존의 bat파일(없는가? -_-; ) 에서 compile과정을 지워주고
      preverify과정과 jar과정을 수행한다.그럼 끝이다.

     


성공하길 바란다...^^

접기



접기

How To DahoO 
2004.07.22 retriver.pe.kr

1. classes 폴더와 preverify폴더를 생성하고
    classes 폴더에 관련 class들을 복사해둔다(oem단 포함)
    preverify 폴더는 DashO결과 파일이 담길 output폴더(lgt습관이..^^;;)

   


2.DashOEE.exe를 실행 시키고 Create New Project >OK 선택


3. classes 폴더를 선택후 add


4. 결과 파일이 담길 폴더(preverify) 선택, add


5. 다음과 같은 그림이라면 Ok,,, next >


6. Midlet 파일선택(보호 해야할..)


7. 신경쓰지 말고 next >>


8. Exclude Package 항목에 classes 폴더내의 package들 포함시키기


9.Rename tab에서 Rename Classes-Prefix(optional)을 선택


10. Optimize 항목에서 speed혹은 size중 원하는 항목 선택.


11. Package를 선택하면 프로젝트가 바뀌느니.뭐니 하는데.신경끄고 '예' 선택


12. DahoO 폴더에서 Zaper.dop폴더를 복사해두고 dop를 불러 온다.


13.자...다 끝났다...변환될 클래스 명과 함수.변수들의 목록이다.


14.Build를 하려고 tab을 선택하니..어라..또 뭐가 뜬다...,
   결과 파일들이 존재할 폴더를 선택하라는 이야기다..선택해주자.. next >


15. 또 뭐라구 지껄인다..신경 쓰지 말자..'예' 선택하면 힘든 과정의 끝이다..


16. 잘 했다고 칭찬해 준다..^^


17. 이제 jar파일로 묶어 주면 된다..필자의 경우, java파일들을 폴더 없이 저장했기 때문에
다음과 같은 과정을 감수해야 하나..이 글을 보는 분들은 그리하지 말길 바란다ㅡㅡ;
 

jar -Mcvf Race.jar *.class *.mmf *.dat

접기

Posted by 커널제로

본 블로그는 페이스북 댓글을 지원합니다.

,