jar파일 디컴파일로 코드 분석(Bytecode-Viewer.jar)

2025. 8. 26. 18:45·BACKEND/Spring
test

# 디컴파일러 사용 이유 

 SI 업체 특성상 다른 소스를 분석하는 일은 있다. 현재 유지보수를 하는 일을 하고 있는데, 다른 회사에서 했던 프로젝트를 우리 회사에서 다시 유지보수를 하게 되었다. 여기서 문제는 거대한 프로젝트 절반 이상의 코드를 전달받지 못하고, 현재 구동되고 있는 서버에서 Spring으로 빌드된 jar파일만 받았다는 점이다.

 

# 문제점

  처음에는 선임께서 추천해주신 JD-GUI를 사용해서 디컴파일을 했다. 총 10개 이상의 jar파일이 있었고, 그 중 몇개의 프로젝트는 원활하게 분석이 잘 되었다. 하지만, 길이가 긴 코드(메서드 하나에 600줄) 코드를 분석했는데, 전달받은 역할에 따른 핵심 비즈니스로직이 없었던 점이었다. 다시 자세히 보니, 코드 줄이 생략이 되어 보이는 걸 확인했고, Bytecode-Viewer.jar로 디컴파일러 툴을 변경했다.

383에서 갑자기 896줄

# Bytecode-Viewer 사용 방법

아래 github사이트에서 최신 jar 파일을 다운받는다.

https://github.com/konloch/bytecode-viewer/releases

 

Releases · Konloch/bytecode-viewer

A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More) - Konloch/bytecode-viewer

github.com

그 jar 파일을 java로 실행시키면 된다.

java -jar Byte~~.jar

 

그러면 아래 화면이 뜨는데 아래에 사용할 jar파일을 drag on drop 하면 된다.

드디어 제대로 된 모든 코드를 볼 수 있다.

 

  • 장점으로는 jd-gui보다 안전하게 코드를 볼 수 있다. intellij 형식으로 보여 코드 보기 편하다.
  • 단점은 심볼 네비게이션 같은 기능이 안된다.

 

### 비고

메서드 하나에 600줄 그리고, 주석과 if, else depth가 5개 이상 깊어져 코드의 가독성이 떨어지는 코드를 보니. 반면교사로 이렇게 하면 안된다고 배우는 거 같다. 직접 이런 레거시 코드와 유지보수성 없는 코드를 보니 당황스럽다.

원래 SI 신입이 이런 일을 하는 건가 싶다. 모든 SI 신입들 화이팅..!

'BACKEND > Spring' 카테고리의 다른 글

RSA-256에 salt를 추가하면 어떤 게 좋을까?  (0) 2025.03.13
[Spring boot] Service class에 @Transactional(readOnly = true)를 붙인 이유  (0) 2024.08.10
[Spring boot] 초기 데이터 설정  (0) 2024.08.08
[Spring boot] 비관락, 낙관락, 분산락 구현  (0) 2024.08.08
[Spring] 스프링 AOP란?  (0) 2024.05.29
'BACKEND/Spring' 카테고리의 다른 글
  • RSA-256에 salt를 추가하면 어떤 게 좋을까?
  • [Spring boot] Service class에 @Transactional(readOnly = true)를 붙인 이유
  • [Spring boot] 초기 데이터 설정
  • [Spring boot] 비관락, 낙관락, 분산락 구현
ckm7907
ckm7907
  • ckm7907
    백엔드 잘하고 싶어요!
    ckm7907
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • BACKEND (13)
        • Spring (13)
      • FRONTEND (1)
        • React (1)
      • Infra (11)
        • CICD (1)
        • 네트워크 (5)
        • Docker (3)
      • DBMS (2)
        • MySQL (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 글관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    github Actions
    단방향암호화
    sha-256
    Docker
    tibero
    spring boot
    servlet
    docker-compose
    tibero studio
    runners
    self-hosted
    CICD
    Salt
    비밀번호
    github
    DockerHub
    SVC
    Technitium #nginx #DNS 서버
    EC2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ckm7907
jar파일 디컴파일로 코드 분석(Bytecode-Viewer.jar)
상단으로

티스토리툴바