Print
카테고리: [ Miscellaneous ]
조회수: 3214

1. 개념

특정 기계를 분석하고 동작을 관찰하여 제조 방법, 동작 원리, 설계도 등을 파악하는 방법이다. 

소프트웨어 공학에서는 주로 역어셈블한 코드를 해독하거나 디버거를 통해 소프트웨어 동작을 분석하는 것을 뜻한다.

흔히 역공학(逆工學)이라고 부른다.

* 역어셈블 : 기계어 코드를 어셈블러 코드로 변환


2. 취지

소프트웨어 프로그래머라면 프로세서가 기계어를 해석하고 실행하는 것이 프로그램의 기본 동작 방식이라는 것을 알고 있다. 하지만 실제 그 기계어를 역어셈블하고 동작을 따라가는 행위는 일반적인 프로그래머에게 필요한 능력은 아니다.


3. 언어별 역공학

3-1. 자바

자바는 디컴파일하여 소스를 취득하기 쉽다.

가장 널리 사용되는 툴은 JD이다. (https://github.com/java-decompiler/jd-gui/releases)


4. Ghidra

다운로드 : https://ghidra-sre.org/