Obfucastor Tool을 이용하여 역컴파일을 방지하는 목적은 '보안상의 이유' 때문이다.
하지만 사전 설명대로 '보안'이 아닌 클래스-함수-변수명들을 바꿔줌으로서 분석하기 어렵게 만들어 줄 뿐이다.
( 물론 디컴파일도 완벽하게 디컴파일 되는 건 아니다. Exception 처리 부분의 경우는 아직도 불안하더라..--)
6년전 이넘을 처음 접했을 당시에는 '이정도면 보안에 완벽하겠지..' 하는 마음에
아니..솔직히 공들여 작성된 코드(지금처럼 프레임웍 개념이 자리잡기전..노가다 코드)들을
남에게 보여주기 싫었기 때문에 사용을 했었다.
시간이 지나면서 '참 불필요한 짓거리를 했었군..' 하는 생각을 가지게 되었지만..ㅡ,.ㅡ;;
여튼..다시 2년후 모바일 게임 업계로 이직을 하면서 heap memory, 파일 사이즈 의 압박하에서
퀄리티 있는 게임을 보다 낮은 사양의 폰에서도 돌아가게 해야 하는 것이 당면 과제 였다.
( 수익이 더 나고..더 많은 인센티브를 받을수 있는게 아닌가..? )
[#M_[보기] 인센티브의 함정|[닫기]|사장님을 믿어 달라는 말에..찝찝했지만..구두 계약만으로 약속을 했다.
운이 좋게도 만든 게임마다 일정 수준 이상의 돈을 벌어 들였고. 난 당연하게 요구했다..
하지만 결과는... '내가 언제?' 라는 말로 돌아왔고..나는 그 즉시 회사를 그만 뒀다. 진행하던 것은 마무리를 짓고 그만뒀는데...이거 잘못한거지? 니미럴..--a
이때 생각난 것이 바로 이넘..Obfucastor 였다.
_M#]
역컴파일 방지툴은 여러가지가 있으며, 무료(RetroGuard), 유료(DashO)의 대표적인 2개를 소개합니다. 대표적인 것(내가 알고 있는것..ㅋㅋ)은 다음과 같다. -RetroGuard(무료), ProGuard(무료) , DashO(유료)
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과정을 수행한다.그럼 끝이다.