인시큐어뱅크 애플리케이션의 apk파일을 추출 후 apk tool 파일을 이용해서 디컴파일을 한다.apktool d "apk파일명" 디컴파일을 했을 경우 위의 사진과 같이 디컴파일 된 것을 확인변경하고 싶은 smali 코드를 수정 후 리패키징apktool b "디컴파일 했던 폴더" -o "저장할 apk 파일 이름" 이후 인증서를 생성keytool -genkey -v -keystore "keystore이름" -alias "별칭" -keyalg "키 알고리즘" -keysize "키사이즈" 이후 서명을 해준다. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "keystore이름" "리패키징할 앱" "별칭" 후 생성되는 apk 파일을 안드로이드..
문제의 제목을 확인했을 경우 Insecure Logging(안전하지 않은 로깅)이다. 아마도 로그를 확인하는 실습이다.그렇기 때문에 logcat을 이용한다. logcat 실행 전 logcat -c 명령어를 사용하여 초기화 후 adb shell logcat 명령어를 입력하여 로그를 받는다. 실습은 다음과 같아서 임의의 수를 넣어 CHECK OUT 버튼 클릭adb환경에서 logcat -f /data/local/tmp/[로그파일 저장이름]으로 저장로그 파일을 PC로 전송로그에 입력한 값이 남아있는것을 확인
1. 문제확인더보기이 전의 Jailbreak Detection 1번 문제를 해결하고 2번 문제를 풀어보겠다.2번 문제는 1번 문제에서 푼 후킹코드로 해결된다. 아마 내 추측으로는 같은 문제지만 다른 방식으로 해결해 보라는 것 같다. 2. 문제 풀이더보기그래서 다른 방법이 뭐 있을까 검색하다가 보니 다른 사람들은 메서드를 탐색해서 후킹 하는 방식으로 해결하던 것을 확인하고 시도해 보기로 했다.if(ObjC.available){ for(var classlist in ObjC.classes) console.log(classlist)}해당 코드를 작성하여 frida로 실행해 본 결과 무수히 많은 클래스들이 발견되었다. 그러므로 뒤에 frida -U -l exam2.js DVIA-v2 | find "Jail"위..
1. 문제확인 및 풀이Jailbreak Detection 이라는 문제를 풀어보기 위해 접근접근 후 1번 문제인 Jailbreak Test1을 눌러보니 "Device is Jailbroken"이라는 명령어와 함께 탈옥 탐지가 된 것을 확인할 수 있다.해당 내용을 찾기 위해 search - for strings 에서 device is jailbroken을 검색하여 접근해당 부분(함수 및 데이터 영역의 참조원)을 클릭하여 접근 후 windows - function graph 를 사용 해당 부분을 확인하면 tbz(특정 비트가 0이면 분기) 연산을 이용한다. 위를 봤을 때는 w0의 레지스터 값을 확인하는것 같다. 그래서 frida를 이용해서 확인해보기로 하였음if(ObjC.available){ var realba..
어셈블리어 연산자1.데이터 처리add : 값을 더한다 . ex) ADD R1, R2, R3 (R1=R2+R3)sub : 두 값을 뺀다. ex) SUB R1, R2, R3 (R1=R2-R3)orr : 비트 단위 OR 연산. ex) ORR R1, R2, R3 (R1=R2 OR R3)lsl : 첫 번째 값의 비트를 왼쪽으로 이동 ex) LSL R1, R2, #2 (R1=R2 lsr : 첫 번째 값의 비트를 오른쪽으로 이동 ex) LSR R1, R2, #2 (R1=R2>>2)2. 메모리 연산ldr : 메모리에서 값을 읽어 레지스터에 저장 ex) LDR R1, [R2] (R1 = R2에 저장된 메모리 값)str : 레지스터 값을 메모리에 저장 ex) STR R1, [R2] (R2에 R1의 값 저장)ldp : 두 ..
1. ObjCObjC.available : 현재 프로세스에 Objective-C 런타임이 로드되어 있는지 여부를 지정하는 Boolean이다. ObjC.classes : 현재 등록된 각 클래스에 대한 JavaScript 바인딩에 클래스 이름을 매핑하는 객체2. InterceptorInterceptor.attach(target. callbacks[, data]) : target의 함수로의 호출을 가로챔, callbacks 인수는 하나 이상을 포함하는 객체onEnter(args) :인수 하나를 받는 콜백 함수로 args, NativePointer객체 배열로 인수를 읽거나 쓰는데 사용할 수 있다.onLeave(retval) : 함수 리턴 시 호출되는데 retval을 이용하여 리턴값을 조작할 수 있습니다. (r..