정뾰안 - 정보보안 블로그
JEB (+Frida/Nox) 본문
JEB
JEB Decompiler는 바이너리 파일을 분석(리버스 엔지니어링)하는 전문 도구이다. 쉽게 말해 사람이 읽기 힘든 프로그램을 사람이 읽을 수 있는 코드로 최대한 되돌려주는 기능을 한다.
◇ 사전 준비
Frida / Nox 설치
JEB와 Frida를 이용해서 앱 Hooking을 해보려고 한다. 여기서는 JEB 관련된 내용 위주로 진행하기 때문에 만약 Nox 설치 및 루팅, Frida 설치 및 세팅이 되어있지 않다면 본 블로그의 'Frida 설치(+Nox)' 게시물을 먼저 참고해주길 바란다.
Frida 설치(+Nox)
Frida 설치(+Nox)Frida를 설치하여 Nox에서 사용하려고 한다. Nox에 Frida Server를 설치하고 PC에 Frida Client를 설치할 예정이다. 여기서는 Nox 설치 및 루팅 이후 과정부터 진행하기 때문에 만약 Nox 설치 및
yeongiee.tistory.com
◇ JEB 설치 및 세팅(Jeb4frida)
JEB 설치
◎ JEB 설치파일을 다운로드한다. 여기서는 JEB Demo v5.33 를 사용했다. (https://www.pnfsoftware.com/)
- DEMO : jeb4frida 사용 가능, 복사 기능 사용 불가(잘라내기 사용하면 됨)
- CE : 복사 기능 사용 가능, jeb4frida 사용 불가
JEB Decompiler by PNF Software
www.pnfsoftware.com

◎ JEB 설치파일을 실행해서 설치한다.

JEB 실행
◎ JEB 배치파일(jeb_wincon.bat)을 실행한다.

Jeb4frida 추가
◎ Jeb4frida 파일을 다운로드한다. (https://github.com/Hamz-a/jeb4frida)
GitHub - Hamz-a/jeb4frida: Generate Frida hooks directly from JEB!
Generate Frida hooks directly from JEB! Contribute to Hamz-a/jeb4frida development by creating an account on GitHub.
github.com

◎ JEB에 Jeb4frida를 추가하기 위해, JEB 폴더 하위의 script 폴더에 Jeb4frida.py 파일을 이동한다.

◇ JEB 실습
Nox 실행
◎ Nox를 실행한다. 이때 Nox는 루팅된 상태로 준비한다.
Frida 실행
◎ adb shell 접속 후 Frida Server를 실행한다.
# adb shell 실행
adb shell
# Frida Server 파일 경로로 이동
cd /data/local/tmp
# Frida Server 실행
./frida-server-17.5.1-android-x86 &

◎ Frida 클라이언트를 실행한다.
# 아나콘다 가상환경 py3 실행
conda activate py3
# Frida 명령어 사용 Frida 준비 확인
frida-ps -Uai

루팅 및 Frida 탐지 우회
◎ 우회 대상 앱을 설치한 후 실행한다.

◎ 실행되자마자 앱이 바로 종료되고 루팅 및 프리다 탐지 알림이 발생한다.

◎ Nox에서 대상 앱을 꾹 누르면 앱을 추출할 수 있다. 앱을 추출하면 PC(C:\Users\User\Nox_share\ImageShare 폴더)에 앱이 추출된다.
◎ JEB에서 대상 앱을 연다. (파일 > 열기)


◎ 찾기 (CTRL+F) 기능으로 루팅 탐지 경고메시지를 검색해서 탐지 코드를 찾은 후 결과를 더블클릭한다.

◎ 루팅 탐지 경고메시지로 이동된 것을 확인 후 해당되는 함수를 더블클릭한다.

◎ 루팅 탐지 코드에 커서 위치 후 파일 > 스크립트 > 스크립트 선택기 > Jeb4frida 실행

◎ 후킹 코드가 로거에 찍히는 것을 확인한다. 이 코드는 정확하지 않지만 참고할만 하다. Frida 탐지 코드도 동일하게 진행한다. 그리고 나온 결과 코드를 수정하여 루팅 및 Frida 탐지 우회 코드를 제작한다.

◎ 루팅 탐지 우회 후킹 코드
Java.perform(function() {
var RootUtil = Java.use('com.app.damnvulnerablebank.RootUtil');
var RootUtil_isDeviceRooted_0 = RootUtil.isDeviceRooted.overload();
RootUtil_isDeviceRooted_0.implementation = function() {
console.log('[+] Hooked com.app.damnvulnerablebank.RootUtil.isDeviceRooted() -> forcing false');
return false; // 강제값
};
});
◎ Frida 탐지 우회 후킹 코드
Java.perform(function() {
var FridaCheckJNI = Java.use('com.app.damnvulnerablebank.FridaCheckJNI');
var FridaCheckJNI_fridaCheck_0 = FridaCheckJNI.fridaCheck.overload();
FridaCheckJNI_fridaCheck_0.implementation = function() {
console.log(`[+] Hooked com.app.damnvulnerablebank.FridaCheckJNI.fridaCheck() - returning 0`);
return 0; // int 타입 반환을 위해 false 대신 0 리턴
};
});
◎ 제작한 후킹 코드를 실행한다. frida -U -f com.app.damnvulnerablebank -l hook.js
루팅 및 Frida 탐지가 우회되어 앱이 정상 실행되는 것을 확인할 수 있다.

'Mobile' 카테고리의 다른 글
| Nox 설치 및 루팅 (0) | 2025.12.25 |
|---|---|
| Frida 기초 (0) | 2025.12.24 |
| Dopamine 탈옥(아이폰SE + iOS 15.8.3) (0) | 2025.12.24 |
| LDPlayer 설치 및 ADB Shell 접속 (0) | 2025.12.17 |
| Appium(Windows) (1) | 2025.12.15 |