한국어

Tip&Tech

class 파일 디컴파일

JAVA 조회 수 3196 추천 수 103 2007.03.09 15:19:08
http://jadclipse.sourceforge.net/wiki/index.php/Main_Pagehttp://www.kpdus.com/jad.html#downloadJAVA 프로그래밍을 두고 api 싸움이라고도 하죠.

JAVA 코딩을 하다보면 상당량의 이미 제공되는 api를 많이 사용하게 됩니다.

또, 기본적인 api 사용법은 eclipse 같은 툴에서 인스턴스명.(쩜)을 찍고 나면 자동으로 메소드명이나 참조 변수명이 설명과 함께 나와 편합니다.

그러나, 제공되는 메소드명만으로 확연한 결과값을 예상할 수 없을 경우, 호출해야 할 메소드의 실 내용을 보고 싶고, 검증하고 싶기도 합니다.

이때, 이미 컴파일된 .class 파일을 다시 .java 파일로 변환해주는 decompile 과정이 필요합니다.

JAVA는 일반적으로 바이너리 파일을 만들어 내는 컴파일러 언어와 달리, .class파일 구동시 JVM을 통해 번역하게(인터프리터) 되는데, 이 과정이 있기 때문에 소스로 돌이킬 수 있습니다.

이때 사용하는 디컴파일러입니다.

JAD 입니다. JAVA 개발자들이 가장 보편적으로 많이 쓰는 디컴파일러라 생각됩니다.

그렇다고 원본소스 그대로를 돌려주진 않습니다. 변수명이나 메소명과 같은 경우, 상이한 부분이 나올 수 있고, 또 어디까지나 jvm 입장에서 해석할 수 있는 코드로 환원됩니다.

어떻게 보면 JVM입장을 헤아릴 수 있다고 해야하나요? ㅋ

JAD는 javac처럼 명령프롬프트에서 실행하게 되는데, 이런 불편함을 개선하고자 윈도우 사용자 인터페이스 부분만 따로 만들어진 프로그램들이 여럿 있습니다.

이 윈도우가 있는 UI 프로그램에서 JAD를 호출하는 방식인 거죠.

전 개인적으로 단순한 DJ Java Decompiler를 씁니다.

더 편하고 기능이 좋은 UI 프로그램이 있을까요?

한편, 현시점에서는 JAVA개발자들이 개발툴로 eclipse를 많이 애용하는데, 이와 더불어 쓸 수 있는 jad 플러그인이 좀더 간단하고 편하다고 봅니다.

특정 메소드나 클래스명에 커서를 맞추고 F3키를 누르면 바로 실시간으로 디컴파일하여 소스를 새창에 띄워줍니다. 한방인 거죠. ^^-

jad와 jadclipse의 설치 및 사용법은 해당 링크를 따라 가세요.




List of Articles
번호 제목 글쓴이 날짜 조회 수
83 IPTV 디지털 방송 환경에서의 대화형 프로그램을 제작하기 위한 저작도구 소프트웨어개발 결과보고서 눈소리 2007-03-30 3035
82 IPTV MPEG transport stream 눈소리 2007-03-23 3058
81 Unix [security]퍼미션(permission)에 정복하기 눈소리 2007-03-23 3090
80 Unix cron 해부 눈소리 2007-03-23 3090
79 IPTV HDTV 뉴스 전문 블로그 눈소리 2007-03-22 2632
78 소스관리 unix 쉘 상에서 SVN 명령어 사용법 눈소리 2007-03-22 3113
77 Windows ClearType 폰트 튜닝 - 맑은고딕 눈소리 2007-03-22 2438
76 소스관리 eclipse에서 SVN 설정법(subclipse) 눈소리 2007-03-22 2460
75 소스관리 SVN 설치 및 기본 사용법 눈소리 2007-03-22 2513
74 IPTV Xlet 눈소리 2007-03-22 2457
73 IPTV 코덱의 정의와 종류(MPEG-1/2/4, Divx, Xvid, OGG, AC3, H.263, Video Codec) 눈소리 2007-03-22 2451
72 IPTV ATSC 눈소리 2007-03-22 2369
71 IPTV MPEG4와 h.264 요약 눈소리 2007-03-15 2897
» JAVA class 파일 디컴파일 눈소리 2007-03-09 3196
69 JAVA ANT 기본 눈소리 2007-03-08 2515
68 JAVA java.net.SocketException: Too many open files 에 대한 대처 눈소리 2007-01-16 2722
67 JAVA 뉴라인(newlines)에 대한 이해 눈소리 2007-01-16 2667
66 PHP 솔라리스 / PHP + Apache 설치(DSO) 제대로 하기. 눈소리 2006-12-05 3213
65 JAVA Java 성능개선을 위한 Programming 기법 눈소리 2006-12-05 3679
64 JAVA JVM GC(가비지컬렉션) 로그 확인 눈소리 2006-10-20 3779
63 Unix [terminal]텔넷에서 한글 입력이 안되는 경우 눈소리 2006-09-08 3293
62 utility base64 인코딩/디코딩 눈소리 2006-08-11 2952
61 Unix [file]현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기 눈소리 2006-08-11 3177
60 Unix [terminal]UNIX상에서 한글 출력이 깨져 나올 경우 눈소리 2006-08-11 3313
59 Unix [date]어제 날짜 구하기 눈소리 2006-08-11 3359
58 Unix [file]특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기 눈소리 2006-08-11 2562
57 Unix [string]화일내의 포함된 특정문자열로 찾아서 내용만 출력하기 눈소리 2006-08-11 2620
56 Unix [string]개행을 제외한 화면내의 보이지 않는 문자 출력 눈소리 2006-08-11 2465
55 Unix [file]파일의 암호 눈소리 2006-08-11 2468
54 Unix [editor]vi - 모든문자를 대문자로 치환 눈소리 2006-08-11 2694
53 Unix [process]killall 명령 시뮬레이션 (프로세스명으로 죽이기) 눈소리 2006-08-11 3090
52 Unix [string]특정디렉토리의 모든 파일 안의 특정 문자열 치환 눈소리 2006-08-11 3102
51 Unix [directory]하위 디렉토리 한꺼번에 만들기 눈소리 2006-08-11 2509
50 Unix [network]텔넷 화면 수정 눈소리 2006-08-11 2477
49 Unix [user]사용자가 어디에서 무엇을 하는지 알아내기 눈소리 2006-08-11 2461
48 Unix [security]열려있는 파일을 보여주는 lsof 눈소리 2006-08-11 3315
47 Unix [network]텔넷 모든 접속자에게 메세지 보내기 눈소리 2006-08-11 2454
46 Unix [network]열려있는 포트 알아내기 눈소리 2006-08-11 2390
45 Unix [info]유닉스의 현재 버젼/종류/라이센스 정보 눈소리 2006-08-11 2449
44 Unix [exec]틀린명령어 틀린글자만 바꿔서 실행 눈소리 2006-08-11 2431