반응형


전체적인 설치는 아래 링크를 통해 진행하였다.

중간중간 이슈나 필요한 정보를 정리한다.

- 링크 : https://techsviewer.com/how-to-install-mac-os-x-el-capitan-on-vmware-on-pc/



1. OS X 10.11 Image 다운로드


- 제시된 링크에서 이미지 파일을 받을 수 있다.

- 어떤 것을 받아도 상관없겠지만 일단 나는 두번째 것으로 다운로드 받았다.




2. VMware 12 설치

 - 기존에 설치되어 있던 것은 VMware 11이였는데 이는 호환되는 버전이 Mac OS의 10.10 까지만이어서 VMware 12 설치가 필요하다.


3. unlocker로 vmware 패치

 - 기존 VMware에서 새로운 가상머신을 등록하기 위해 [New Virtual Machine Wizard] 을 눌렀을 때 [Apple Mac OS X]가 보이지 않는다.

 - 이를 해결하기 위해 unlocker를 이용하는 것이다.

 - 이는 구글에 검색하면 많이 나오므로 따로 링크를 올리진 않겠다.


4. vmware의 config.ini 파일 업데이트



 - 처음에 올린 링크대로 진행 후 실행시키면 위와 같은 에러가 뜰 것이다. 링크에서는 macOS가 있는 곳의 VMX 파일에서 smc.version = "0" 를 추가하라고 하였지만 VMware에서 진행해주어야 한다.


윈도우(windows): %PROGRAMDATA%\VMware\VMware Workstation\config.ini

리눅스(Linux): /etc/vmware/config

맥(OS X): /Library/Preferences/VMware\ Fusion/config


위의 경로에 가서 해당 파일에 smc.version = "0"을 추가해주면 잘 진행된다.

반응형

'Hacking > Mobile' 카테고리의 다른 글

[IOS] gdb와 cycript를 이용한 탈옥 탐지 우회  (0) 2019.01.04
VMware의 MacOS상에서의 IOS 인식  (0) 2019.01.03
IOS Memory Dump  (0) 2018.10.11
디버깅 탐지기능 확인  (0) 2018.05.25
[IOS] anti-debugging protection bypass  (0) 2018.05.04
블로그 이미지

rootable

,

IOS Memory Dump

Hacking/Mobile 2018. 10. 11. 14:02
반응형

1. Fridump 이용

① frida-ps -U 를 이용하여 APPNAME 확인

 - 이는 Info.plist의 Bundle Name과 동일

 - 아이폰을 켰을 때 아이콘의 이름, 때문에 한글로 되어있을 경우 frida-ps -U를 했을 때 깨져서 보일 수 있다.


② fridump.py -U [APPNAME]

 - [APPNAME] 부분에 메모리 덤프할 앱 이름을 넣어주면 된다.

 

※ 에러 해결

1.1 만약 APPNAME이 깨져서 보일경우?

 - 아이폰 상에서 보이는 앱 이름으로 시도

  ex) 만약 아이폰에서 보이는 앱 이름이 "도니도니"일 경우 

   : fridump.py -U "도니도니"

 - 정확한 것은 아이폰 상에서 clutch -i를 했을 때 보이는 앱 이름이다. (이는 한글도 보이므로 참고 가능)


1.2 fridump memory access violation

 : fridump로 메모리 덤프 중 memory access violation 에러가 뜰 수 있다.


이 때는 -r 옵션을 통해 read-only 모드로 진행할 경우, read&write 권한을 이용하여 비밀값을 찾지 않아 끝까지 진행될 수 있다.


fridump.py -U -r [APPNAME]


1.3 frida-ps로는 앱이 보이는데 fridump가 되지 않을 경우

 - [Can't connect to App. Have you connected the device?] 이런 에러가 발생

 - 이는 현재 PC에서 사용 중인 Python이 3.x 버전이라 그런 것이다. Fridump를 이용하고 싶다면 Python이 2.x버전이여야 한다.


1.4 Python 3.x버전 일 경우

 - Python 3.x 버전이 설치되어 있을 경우 일반 Fridump가 아닌 python3 용 Fridump를 이용해보길 바란다.

- 경로 : https://github.com/rootbsd/fridump3


2. gdb 이용

 : gdb가 들어가있는 IOS 단말기에서 사용 가능.


 - 아래의 내용을 .sh 확장자와 함께 저장


#!/bin/bash

if [ "$1" == "" ]; then

    echo "proc id required"

    exit 1

fi

grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do

  gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop";

done


* 파일명이 memory-dump.sh 일 경우 사용법 : 

./memory-dump.sh [덤프할 APP의 pid]


반응형

'Hacking > Mobile' 카테고리의 다른 글

VMware의 MacOS상에서의 IOS 인식  (0) 2019.01.03
VMware에 Mac OS X El Capitan 설치  (0) 2018.12.26
디버깅 탐지기능 확인  (0) 2018.05.25
[IOS] anti-debugging protection bypass  (0) 2018.05.04
IOS Cycript  (0) 2018.04.30
블로그 이미지

rootable

,

디버깅 탐지기능 확인

2018. 5. 25. 17:54

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

IOS Cycript

Hacking/Mobile 2018. 4. 30. 17:05
반응형

1. Cycript란?

 - javascript와 Obj-C를 결합한 스크립트의 인터프리터

 - 실행중인 프로세스에 attach하여 Property를 변경하고 함수를 동적으로 호출할 수 있다.

 - 나는 cycript를 이용하여 로그인을 우회하는 것을 예시로 보여줄 것이다.


2. 환경 세팅

 - MethodSwizzlingDemo 라는 앱을 이용하여 로그인을 우회하는 2가지 방법에 대해 해볼 생각이다. 그러기 위해서는 우회할 앱과 cycript가 설치되어 있어야 한다.


2.1 cycript 설치

 - cycript 설치는 간단하다. Cydia에서 cycript 검색 후 설치해주면 끝!


2.2 MethodSwizzlingDemo 앱 설치

 -  아래에 첨부한 파일을 다운로드 받는다.

MethodSwizzlingDemo.ipa


 - cydia Impactor를 다운받아 해당 ipa를 설치해준다. (자세한 설치 과정은 검색을 통해 진행)

 - 만약 설치 중 에러로 인해 설치가 안된다면 제 포스팅을 참고해서 진행해주시면 됩니다. ( http://rootable.tistory.com/entry/Cydia-Impactor%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-ipa-%EC%84%A4%EC%B9%98 )

 - 설치가 완료된다면 아래와 같은 화면을 볼 수 있다.

3. 앱 분석


 - 입력창 2개와 버튼 2개가 있다. 입력창 2개는 ID와 PW 입력하는 창인듯 하고 아래는 로그인하는 method인 것을 알 수 있다.

 - 버튼에 Login Method 1과 Login Method 2라고 써져있는 것을 보아 2가지 방법으로 로그인할 수 있는 것을 알 수 있다.

 - 아래 사진과 같이 임의의 ID와 PW 입력 후 버튼을 눌러보면 둘다 동일하게 아래와 같은 에러가 뜨는 것을 볼 수 있다.



 - 이제 cycript를 이용하여 ID와 PW를 몰라도 Login을 할 수 있도록 Login 로직을 우회해보겠다.


4. Login 관련 함수 확인

Step 1) ps 명령어를 통해 현재 실행 중인 앱의 PID 확인


해당 명령어를 통해 PID가 3478인 것을 확인할 수 있다.


Step 2) cycript 를 실행시키며 p 옵션을 통해 해당 프로세스에 attach


정상적으로 attach가 되어 cy#에 커서가 있음을 볼 수 있다.


Step 3) Login하는 메소드 확인

(1) printMethods 함수 정의

 - http://iphonedevwiki.net/index.php/Cycript_Tricks <- 해당 링크에 접속하면 cycript에서 사용할 수 있는 많은 함수들을 볼 수 있다.

 - 해당 함수를 이용해서 확인하는 방법은 아래와 같은 에러가 뜨며 진행되지 않았다.


(2) ViewController.messages 이용

 - ViewController.messages 를 입력하면 메소드를 확인할 수 있다 하였지만 나의 경우는 나타나지 않았다. (아무 반응 없음)


(3) class-dump-z 이용

 - 앱스토어를 통해 설치한 앱의 경우 암호화가 적용되어 있으므로 clutch를 통해 복호화 후 아래 과정 진행 (내가 진행한 앱은 직접 설치한 것이므로 암호화가 되어있지 않으므로 그냥 진행)

 - class-dump-z [앱 이름] > [덤프파일 이름]

 - 덤프한 파일이 길기 때문에 tail 명령어로 끝부분을 보니 validateLogin 함수와 pushLoginPage 함수가 있는 것을 볼 수 있다.


5. 로그인 우회

 - 위에서 확인한 두 함수(validateLogin, pushLoginPage)를 이용하여 Login을 우회할 것이다.


5.1) 로그인 검증 결과를 무조건 True로

 - validateLogin 함수는 함수명과 BOOL을 리턴하는 함수인 것을 통해 login을 검증하는 함수임을 추측할 수 있다. 따라서 Cycript를 이용하여 항상 True를 리턴하도록 변경하였다.

 - 참고한 블로그에서는 ViewController.messages를 이용하였지만 더 이상 Cycript에서 messages를 지원하지 않는다고 한다.  prototype를 이용하자.

 - 해당 코드 입력 후 Login Method 1을 클릭하면 아래와 같이 로그인에 성공하는 것을 볼 수 있다.



5.2) 로그인 성공 화면을 강제 호출

 - pushLoginPage는 로그인 성공 후 호출하는 화면이다. 해당 화면을 아래 코드를 통해 강제로 호출하면 로그인을 우회할 수 있다.

- 해당 코드 입력 시 바로 로그인 성공 페이지로 넘어가는 것을 확인할 수 있다.

 

(확인할 사항)

 - 현재 뷰 사라지도록 : [xxxViewController dismissViewControllerAnimated:YES completion:nil]

 - 원하는뷰 나타나도록 : [xxxViewController presentViewController:newViewController animated:YES completion:nil]

 - 


참고)

http://apollo89.com/wordpress/?p=5890

http://apollo89.com/wordpress/?p=5996

wildpointer.qiniudn.com/MethodSwizzlingDemo.ipa

http://hyunmini.tistory.com/70

반응형
블로그 이미지

rootable

,
반응형

IOS 진단을 공부하기 위해 .ipa 파일을 cydia Impactor를 통해 설치하려 하는데 설치가 제대로 안되어 그 해결과정을 정리한다.


1) provision.cpp:71 ios/submit/DevelopmentCSR = 7460 You already have a current iOS Development certificate or a pending certificate request. 에러

 - 해당 에러가 발생했을 경우에는 Cydia Impactor의 Xcode 메뉴 중 [Revoke Certificates]를 선택하여 해결할 수 있다.

 - 이미 해결 후 포스팅하는 거라 해당 에러 메시지는 첨부하지 못했다.


2) progess.hpp:87 _assert(false) 에러

 - 만약 위의 과정을 진행하였는데 아래와 같은 에러가 발생했을 경우에는 이전 버전의 cydia Impactor를 이용하여 위의 과정을 진행해주면 된다.

 - 참고 및 이전 버전 링크 : https://yalujailbreak.net/fix-progress-hpp87-error/


3) provision.cpp:138 maxQuantity 에러

 - 이전 버전의 cydia Impactor를 이용하여 Revoke Certificates를 진행하면 잘 된다. 그 이후 다시 설치하려하면 아래와 같은 에러가 떴다.

 - 아래와 같은 에러가 뜬다면 다시 최신버전의 cydia Impactor를 이용하여 설치를 하면 잘 된다. 

 - 정리 : 이전 버전에서 Revoke 후 바로 최신버전으로 설치



반응형
블로그 이미지

rootable

,
반응형

아이폰5 10.3.3버전 탈옥 : http://viewingcat.tistory.com/293


1. 진행 시 참고사항

탈옥 진행 시 Cydia Impactor에서 잘 실행하다 [Generating applocation map] 에서 계속 멈춰있는 것을 볼 수 있는데 이는 상관없다.


핸드폰을 켜서 앱이 설치되어있는지를 확인했다면 참고한 블로그의 3번부터 계속 진행하면 된다.


2. ifunbox 탈옥안됨 해결

 - ifunbox로 접근을 했을 때 탈옥안됨으로 뜨는 경우 해결방법이 있다.

cydia에서 [ Apple File Conduit "2" ] 를 설치해주면 해결 가능하다.


3. ssh 연결

 - 내 아이폰5의 경우 IOS가 10.3.3인데 이 경우 cydia에서 다운받는 OpenSSH가 제대로 동작하지 않는 것을 확인할 수 있다.

따라서 나는 구글링을 하여 방법을 찾았다.


Step1) 아래의 링크에 가 Dropbear.deb 파일을 다운받는다.


Step2) iFunbox를 통해 /var/mobile/Download 폴더에 해당 deb 파일을 넣는다.

 - 파일을 넣을 때는 윈도우에서 해당 파일들 드래그하여 넣을 수 있다. 혹은 PC에서 복사를 눌러 삽입하는 방법도 있다.


Step3) Filza File Manager를 통해 설치해준다.

 - 아이폰에서 많이 사용되는 iFile의 경우 10.3.3에서는 제대로 동작하지 않는다. (동작되지 않는게 왜이리 많지...ㅠㅠ) 따라서 iFile 대신 Filza File Manager를 통해 다운받은 Dropbear.deb 파일을 설치해준다.


Step4) 설치가 완료되면 iFunbox를 통해 SSH 연결을 시도하면~ 성공!


4. class-dump-z 설치

 - class-dump-z를 설치하는 이유는 클래스 파일내 오브젝트 분석을 위해서이다. 이를 다루는건 추후의 포스팅에서 반복적으로 나올 것이다.


-  공식사이트(https://code.google.com/archive/p/networkpx/wikis/class_dump_z.wiki)에서는 다운로드가 불가능한 것으로 보인다. 따라서 다른 사이트에서 다운로드를 진행하였다.

 아래는 내가 입력한 명령어이다.


wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/networkpx/class-dump-z_0.2a.tar.gz --no-check-certificate


다운로드 이후 압축을 풀어주어야 한다.

tar -xvzf class-dump-z_0.2a.tar.gz


압축해제 결과 나온 폴더 중 iphone_armv6로 이동한 뒤 실행파일을 /usr/bin으로 복사해준다. 이를 해주는 이유는 어떠한 폴더에서도 class-dump-z를 실행시키기 위함이다.

cd iphone_armv6

cp class-dump-z /usr/bin


class-dump-z를 실행시켰을 때 나와 같은 에러메시지가 떴다면 cydia에서 pcre를 설치하지 않았기 때문이다. 설치를 해주면 잘 동작한다.


5. clutch 설치

 - IPA 복호화할 때 사용하는 도구이다.

 - cydia로 설치하면 되는데 만약 검색결과 존재하지 않는다면 cydia 소스를 추가해주면 된다.


 - [Cydia 앱 실행] - 하단바의 [소스] - 상단의 [편집] - 상단의 [추가]를 누른 뒤 http://repo.biteyourapple.net을 추가해준다.

 - 잘 기억이 나지 않지만 불법 프로그램 배포 어쩌구 하면서 무슨 팝업이 뜬다면 [무시하고 추가] 누르면 된다.

 - 완료 후 clutch를 검색하면 잘 뜨는 것을 확인할 수 있다.


위의 경우에도 ios 10버전에서는 설치가 되지 않는다. 구글링 결과 10버전에서는 Clutch2를 사용해야한다고 한다.


나는 아래의 링크를 통해 해결하였다.

https://iosgods.com/topic/45154-clutch-204-working-with-ios-102/



6. otool 설치

 - cydia 앱 실행 후 Darwin CC Tools 설치


7. ls 이쁘게(?) 하기

 - 위의 사진들을 보면 모든 명령어의 결과가 흰색이므로 보기 불편하다. 이 때 명령어 하나로 아주 이쁘게 할 수 있다 ㅎㅎ

 - alias ls='ls --color -F'

 - color 옵션은 파일, 폴더, 링크 등등에 따라 색을 칠하는 옵션이고 F는 폴더일 경우 뒤에 /를 붙여 더 보기 편하게 만드는 옵션이다.


8. 명령어 설치

 - vi 같은 명령어가 기본적으로 ios에 탑재되어 있지 않기 떄문에 따로 설치를 해주어야 한다.

 - Cydia > Bigboss 검색 > Bigboss Recommended Tools 설치



* 참고 : https://www.reddit.com/r/jailbreak/comments/7mh516/tutorial_how_to_get_ssh_working_on_the_new_ios/

: http://orpen.tistory.com/102

: http://430th.tistory.com/38

반응형
블로그 이미지

rootable

,
반응형

* 64비트 단말기로 진행하다가 32비트 단말기로 진행하여 실제 진행시 달라질 수 있습니다.



실행시키면 1번 문제와 똑같다. 1번 문제와 똑같이 루팅 우회를 시도하였다.



동일하게 루팅이 우회되었고 이제 Secret String을 찾으면 된다.

JEB로 apk를 Open한 뒤 Launcher Activity인 MainActivity로 갔다.


분석하던 중 verify라는 함수에서 실행했을 때 뜬 문자열이 보였다.

조건문을 보면 this.m.a(v0)가 true면 성공했을 때의 문자열이 출력되는 것을 볼 수 있다.

해당 함수에 들어가보자.


해당 함수에 들어가면 입력한 문자열을 같은 클래스 내의 bar 함수로 전송시키는데 아래에 있는 bar 함수에는 코드가 존재하지 않는 것을 볼 수 있다.

앞에 native가 있는 것으로 보아 라이브러리안에 해당 함수의 코드가 존재한다는 것을 알 수 있다.


다시 MainActivity로 가면 "foo"라는 라이브러리를 호출하고 있는 것을 알 수 있다.

apkManager로 디컴파일한 뒤 Libraries 폴더 내 자신이 테스트 중인 플랫폼에 맞는 폴더에 들어가면 libfoo.so 파일이 존재함을 볼 수 있다.


* .so 파일이란?

 - 리눅스의 동적 라이브러리로 윈도우에서의 dll과 완벽하게 일치하는 개념의 라이브러리

 - 런타임에 호출될 코드가 결정되고, 로드된다.

 - 무결성 탐지를 위한 네트워크 통신이나 루팅탐지 등 중요하다고 생각되는 부분을 라이브러리로 만들어 분석을 더 어렵게 하기 위해 주로 사용됨.

 - Android 공식 홈페이지의 경우 별로 비추천하는 방식이긴 하다.. (https://developer.android.com/ndk/guides/index.html?hl=ko)


해당 라이브러리 파일을 IDA를 통해 열어보았다.

파일에서 Export되는 모든 함수 목록을 보여주는 Exports windows에 가면 [Java_패키지명_클래스명_함수명] 으로 명명된 두 함수를 볼 수 있다.


이 중 우리는 CodeCheck 클래스의 bar 함수에 관심이 있다!

그 전에 혹시 패스워드가 코드 내에 하드코딩되어 있을 수 있으므로 [View - Open subviews - Strings] 혹은 [ Shift+F12 ] 를 통해 Strings 탭을 보자.


.data 쪽을 보면 abcdefghijklmnopqrstuvw가 있다. 해당 문자열이 혹시 답일까하여 입력 후 Verify 버튼을 클릭하였지만 틀렸다고 나온다.

그렇다면! 방금 찾은 CodeCheck_bar  함수에 더블클릭하여 들어가보자. (Exports 탭에서 더블클릭해야한다)


무언가 코드가 쭈우욱 있는데 아직..리버싱 초짜라 뭔지 모르겠다 ㅇ_ㅇ 하면서 읽고 있는데 .strncmp가 보인다.

strncmp의 경우 문자열을 비교할 때 특정 길이까지만 비교하는 함수이다! 그렇다면 몇번째까지 비교를 할지 알아보자.

스페이스바를 누르면 Graph형식으로 나타나 조금 더 분석하기 용이해진다.


분기문을 보면 CMP W0, #0x17 이라고 되어있고 이를 B.NE(Branch Not Equal = 플래그가 0이 아니면 분기)를 하여 분기문이 일어나는 것을 볼 수 있다.


W0에 대해 알아보자면 ARM의 범용 레지스터에는 30개의 범용 레지스터가 존재한다.

64-bit의 경우 X0-X30으로 이루어져있고 32-bit에는 W0-W30으로 이루어져있다.

(참고 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABHDEEJ.html)

즉, 32비트 레지스터에 들어있는 값을 0x17과 비교하여 분기를 시키므로 23과 비교를 하는 것을 알 수 있다. 

눈치가 빠르다면 문자열의 길이가 23인 것과 비교한다는 것을 생각할 수 있는데 W0에 클릭을 하면 X0과 같이 표시가 되는 것으로 보아 한 레지스터를 32비트만큼 사용하냐 64비트만큼 사용하냐에 따라 표시를 달리 하는 듯 하다.


MOV a,b의 의미가 b의 값을 a로 넣는다는 것을 잘 생각해서 분석을 하다보면 .... 음 ㅠㅠ 모르겠다.. 일단 23개의 문자를 넣어야겠다는 생각을 가지고 진행해보자.


.strncmp하는 것을 보면

MOV X1, SP

MOV W2, #0x17

MOV X0, X21

을 한 뒤 .strncmp를 하는 것을 알 수 있다.

strncmp가 비교할 두 문자열과 비교 길이를 넣는 것이므로 X0와 X1 레지스터 내 문자열을 비교하며 0x17만큼 비교한다는 것을 알 수 있다.

그렇다면 둘 중 하나는 내가 입력한 문자열일 것이고 하나는 패스워드일 것이다.


동적디버깅으로 가보자.

먼저 [ IDA 설치 폴더 - dbgsrv 폴더 ]에 가서 자신의 플랫폼에 맞는 android_server 파일을 /data/local/tmp 폴더에 올려준다.

그 후 권한을 준 뒤 실행시켜준다. 

아래의 사진이 위의 과정을 한 명령어와 그 결과이다. 잘 실행시키면 Listening on 0.0.0.0:23946... 이 뜰 것이다.

이제 새로 cmd창을 열어 adb forward tcp:23946 tcp:23946 을 작성한다. 이는 컴퓨터의 23946 포트를 루팅폰의 23946 포트로 포워딩하는 명령어이다. 이를 진행해야 IDA에서 루팅폰이 연 23946으로 접근할 수 있다.


열려있던 libfoo.so에 대한 창을 [ File - Close ]를 통해 닫고 [ Debugger - Attach - Remote ARMLinux/Android debugger ] 를 클릭해준다.

나타나는 창에 Hostname에는 localhost, Port는 루팅폰에서 열린 23946(default port)로 한 뒤 OK를 누르면 아래와 같이 프로세스 목록이 뜬다.

여기서 우리가 하기로 한 sg.vantagepoint.uncrackable2 프로세스를 선택 후 OK를 눌러준다.


잠시 로딩 후 디버깅 창이 뜬다.

우측 Path 창에서 우리가 디버깅 중인 libfoo.so를 찾아 더블클릭하면 함수 목록이 뜨며 그 중 패스워드를 확인하는 CodeCheck_bar 함수를 더블클릭하면 해당 코드가 왼쪽 Debug View에 나타난다.


코드 중 .strncmp에 BP를 걸고싶었지만 보이지 않았다. 그래서 스페이스바를 눌러 Graph 형식으로 바꿔준 뒤 위에서 봤던 형식과 동일한 부분이 B509B25C에 있는 것을 확인하였다.


.strncmp로 생각되는 25C에 BP를 건 뒤 실행시켰다.

실행시킨 뒤 문자열을 23자보다 적게 입력하면 BP까지 도달하지도 않기 때문에 반드시 23자리를 적어주어야한다.


[ 12345678901234567890123 ] 으로 23자리를 입력한 뒤 Verify를 누르면 아래와 같이 BP에 걸린 것을 확인할 수 있다.

이 때 우리는 첫번쨰와 두번째 레지스터의 스트링 값을 확인해야한다.


우측 상단을 보면 아래 사진과 같이 Gerneral registers 창이 있는 것을 볼 수 있다.


코드를 보면 R0와 R1이 쓰인 것을 확인할 수 있으므로 해당 레지스터에 들어있는 주소(R0 : 9F0770B8 / R1 : BE890C38 )를 아래 Hex View에서 검색하였다.


Hex View를 클릭한 뒤 G 버튼을 누르면 Jump to address 창이 뜨는데 여기에 주소값을 넣어주면 해당 주소로 이동한다.


R0에 들어있는 주소로 가니 내가 입력한 문자열이 있는 것을 확인할 수 있다.


다음으로 R1에 들어있는 주소로 가니 패스워드로 예상되는 값이 들어있었다.


해당 문자열을 나열해보면 [ thanks for all the fish ]로 정확히 23자리인 것을 알 수 있다.

디버깅을 풀고 위의 문자열을 입력하면 문제가 풀린다!



* 참고

 - ARM 어셈블리어 명령어 : http://egloos.zum.com/orangetigger/v/359478

 - 어셈블리어 정리 : 

http://bang1575.tistory.com/entry/%EB%A6%AC%EB%B2%84%EC%8B%B1%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4-%EC%A0%95%EB%A6%AC




반응형
블로그 이미지

rootable

,