1. Smali 코드란???
An assembler/disassembler for Android's dex format의 약자로 DEX 바이너리를 읽을 수 있도록 표현한 언어이며 DEX파일 디컴파일 했을경우 나오는 어셈블리어와 같은 결과물이다. 안드로이드 앱을 대상으로 소스코드를 변조할 때 Smali 코드를 수정하는것을 리패키징이라고 한다.
DEX에 대해서는 이전의 글을 확인하면 된다.
2. Smali 어셈블리 지시자 , 데이터 타입 및 제어문
https://naro-security.tistory.com/41에서 정보를 얻음.
안드로이드 smali 코드 분석에 관한 기초 지식
개요smali 코드는 안드로이드 애플리케이션의 Dalvik 가상 머신 코드를 표현한 언어이다. Dalvik VM은 안드로이드 앱의 실행을 위한 가상 머신이며(지금은 ART를 사용한다.), smali는 이 VM에서 동작하는
naro-security.tistory.com
지시자
구문이름 | 설명 |
.class | 클래스이름 |
.super | 상속 관계의 상위 클래스 이름 |
.source | 소스 이름 |
.field | 멤버 변수 정의 |
.method | 함수 이름 및 시작 지점 |
.register | 함수에서 사용되는 임시 변수(레지스터 변수) |
.end method | 함수 종료 지점 |
public | 접근 제어자로 외부에서 접근 가능 |
protected | 접근 제어자로 상속 관계에 있는 하위 클래스에서만 접근 가능 |
private | 접근 제어자로 클래스 내부에서만 접근 가능 |
.parameter | 매개변수 지시어 |
.prologue | 함수 진입 부문을 나타내는 지시어 |
.line xxx | 소스 코드와 바이트 코드 간의 줄 번호 연결을 나타내는 지시어 |
데이터 타입
smali 코드 데이터 타입 | Java 코드 데이터 타입 |
V | void |
Z | boolean |
B | byte |
S | short |
C | char |
I | int |
J | long |
F | float |
D | double |
string | String |
Lxxx/xxx/xxx | object |
제어문
구문 이름 | 설명 |
const | 정수, 부동 소수점 등의 상수 값을 정의하는 지시어 |
const-string | 문자열 상수를 정의하는 지시어 |
const-wid | 64비트 부동 소수점 상수 값을 정의하는 지시어 |
return | 명령어 결과 값 반환 |
if-eq | 두 값이 서로 같을 경우에 지정된 레이블로 분기 (a=b)와 동일 |
if-ne | 두 값이 서로 다를 경우에 지정된 레이블로 분기 (a!=b)와 동일 |
if-nez | 레지스터의 값이 0일 경우에 지정된 레이블로 분기 (a==0)와 동일 |
if-eqz | 레지스터의 값이 0이 아닐 경우에 지정된 레이블로 분기 (a!=0)와 동일 |
if-ge | 첫 번쨰 값이 두 번째 값보다 크거나 같을 경우에 지정된 레이블로 분기 (a>=b)와 동일 |
if-le | 첫 번째 값이 두 번쨰 값보다 작거나 같을 경우에 지정된 레이블로 분기 (a<=b)와 동일 |
goto | 지정된 레이블로 무조건적으로 분기하는 명령어 |
switch | 조건 분기 구문 중 하나로, 주어진 값에 따라 분기 경로를 선택하는 명령어 switch-case문과 동일 |
iget | 객체의 인스턴스 변수에 저장된 값을 불러오는 명령어 |
3. 코드 분석방법
https://hyotwo.tistory.com/140
[Android] Smali 코드 분석 및 변조를 통한 루팅 탐지 우회 (심화)
Smali 파일 변조를 하려면 결국 코드가 어떻게 굴러가는건지 아는게 중요하다 그래야 원리 파악이 가능하다. 기초편 글에서 보았던 코드들 중 일부를 심화분석해보자 루팅 탐지하는 자바코드 먼
hyotwo.tistory.com
4. 참조 및 출처
https://naro-security.tistory.com/41
안드로이드 smali 코드 분석에 관한 기초 지식
개요smali 코드는 안드로이드 애플리케이션의 Dalvik 가상 머신 코드를 표현한 언어이다. Dalvik VM은 안드로이드 앱의 실행을 위한 가상 머신이며(지금은 ART를 사용한다.), smali는 이 VM에서 동작하는
naro-security.tistory.com
'앱 진단 > 안드로이드 진단' 카테고리의 다른 글
안드로이드 리패키징(인시큐어뱅크) (1) | 2025.04.01 |
---|---|
안드로이드 - 루팅 (0) | 2024.12.17 |
Apk - 디컴파일 및 리패키징 (0) | 2024.08.22 |
안드로이드 - DEX (0) | 2024.08.20 |