1. 디컴파일(Decompile)디컴파일이란 컴파일(사람이 읽을 수 있는 소스코드를 기계어로 변환하는 작업)의 반대 말로 APK 파일을 분해하는 과정을 통해 리소스, 소스코드, Smali 코드가 나오게 된다. 2. 리패키징 리패키징이란 디컴파일을 통해 사람이 읽을 수 있는 소스코드, Smali 코드를 변조 후 앱을 구동할 수 있도록 패키징 하는 것이다.3. apktool 다운로드앞서 설명한 디컴파일과 리패키징을 하기 위해서는 apktool이 필요하다.apktool이란 안드로이드 대상의 리버스 엔지니어링 도구이며 apk파일을 디컴파일 하거나, 코드를 수정하여 패키징 할 수 tool이다.https://apktool.org/ Apktool | ApktoolA tool for reverse engineerin..
1. DEX ?"Android"는 JVM(자바가상머신)이 아닌 DVM(달빅가상머신)을 사용하여 .dex파일을 실행한다.- JVM은 컴퓨터의 메모리를 사용하여 스택기반으로 작업코드를 읽어서 사용하고, DVM은 하나의 파일에 모든 소스가 있어서 DEX파일로 부터 작업코드를 읽어 사용한다. 메모리측면으로 봤을 경우 JVM이 뛰어나나 속도측면에서는 DVM이 뛰어남.- Dalvik이란 Android에서 앱을 실행하기 위해 설계된 경량의 가상머신이다. 특징은 각 앱은 독립적으로 실행되어 메모리와 프로세스를 공유한다."DEX"는 구글에서 "Dalvik Executable"의 약자로 모바일 디바이스에서 사용하기 위해 만들어졌으며, "Android"에서 사용되는 "DEX"라는 파일 포맷은 Java로 짜인 코드가 컴파일되..
1. 문제확인더보기7번 문제를 보면 브루트포스(무작위대입공격)를 check07 Pin에 사용하여 알맞은 값을 확인하여 chall07로 확인하라는 뜻으로 해석된다.2. 문제풀이더보기코드를 확인해 보니 challenge_07 클래스의 check07 Pin을 확인해야 할 것 같다.setChall07 함수에서는 1000~9999 까지의 랜덤 수를 생성해서 chall07 변수에 값을 넣는 것으로 해석되고check07Pin 은 전달받은 값이 chall07이랑 같은지를 구별하여 boolean형태로 값을 반환하는 것으로 해석된다.var chall_07 = Java.use("uk.rossmarks.fridalab.challenge_07");Java.choose("uk.rossmarks.fridalab.MainActivi..
1. 문제확인더보기6번 문제를 해석해보면 올바른값과 10초뒤에 chall06()을 실행하라는 문제이다.2. 문제풀이더보기chall06 함수를 challenge_06.confirmChall06을 만족해야 completeArr에 값을 넣는다.confirmChall06을 보니 boolean 형태, i는 'chall06값' and '메서드가 시작 후 10 초 후' 두 값이 참이여야 return i 가 참이 되는거 같다. addChall06은 chall06 값에 입력받은 i를 더하고 chall06 값이 9000을 넘으면 그 값을 i로 바꾸는 거 같다.setTimeout(function() { setImmediate(function(){ Java.perform(function(){ var chall_06 = ..
1. 문제확인더보기chall05 함수에 항상 "frida"를 보내라는 문제로 확인된다.2. 문제풀이더보기코드를 봤을 때 chall05 메서드가 String 형태의 문자로 "frida"를 받으면 completeArr 배열에 1을 반환하는 거 같다.그러므로 항상 chall05에 대해서 재정의를 하면 된다.chall05가 onCreate 함수에서 사용되기 때문에 MainActivity가 생성될 때 실행되어 메모리에 잡힌다.setImmediata(function() { Java.perform(function(){ var chall_05 = Java.use("uk.rossmarks.fridalab.MainActivity"); chall_05.chall05.overload("java.lang.S..
1. 문제확인더보기문제 4번은 chall04에 frida를 보내라는 것으로 해석된다.2. 문제풀이더보기chall04 함수를 확인해 본 결과 frida라는 문자를 받았을 시 completeArr이라는 배열에 값을 넣는 방식이다.그러므로 chall04함수에 frida라는 문자를 전송하라는 뜻이다.setImmediate(function(){ Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity",{ onMatch : function(chall_04){ chall_04.chall04("frida"); }, onComplete : function(){ ..
| 내 블로그 - 관리자 홈 전환 |
Q
Q
|
|---|---|
| 새 글 쓰기 |
W
W
|
| 글 수정 (권한 있는 경우) |
E
E
|
|---|---|
| 댓글 영역으로 이동 |
C
C
|
| 이 페이지의 URL 복사 |
S
S
|
|---|---|
| 맨 위로 이동 |
T
T
|
| 티스토리 홈 이동 |
H
H
|
| 단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.