UIApp.keyWindow.subviews() // keyWindow의 subviews 확인. 아래 예시는 #으로 구분되는 2개의 subviews를 가지고 있음
#주소.subviews() // 특정 주소 값을 가지는 view의 subviews 확인. 아래 예시는 #으로 구분되는 1개의 subview를 가지고 있음
UIApp.keyWindow.subvies()[index]._viewDelegate()// 해당 뷰를 담당하는 controller 출력. 아래 예시는 keyWindow의 첫 번째 subview를 담당하는 controller가 UIApplicationRotationFollowingController 임을 나타냄.
// Usage:
// for InstanceMethods: printMethods('className')
// for ClassMethods: printMethods('className', true)
function printMethods(className, isa) {
var count = new new Type("I");
var classObj = (isa != undefined) ? objc_getClass(className)->isa :
objc_getClass(className);
var methods = class_copyMethodList(classObj, count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method),
implementation:method_getImplementation(method)});
}
free(methods);
return methodsArray;
}
UIApp.keyWindow.rootViewController._printHierachy() 명령어로 뷰 계층 확인 후 관심 클래스의 주소 값에 대하여 다음 명령어 수행
#<주소 값>._methodDescription(). toString() // 이 방법의 경우 알고자 하는 클래스의 method 뿐만 아니라 다른 클래스의 메서드들도 출력해주다 보니 쓸모없는 정보들이 너무 많이 출력됨
- Print Current ViewController
function currentVC() {
var app = [UIApplication sharedApplication]
var keyWindow = app.keyWindow
var rootController = keyWindow.rootViewController
var visibleController = rootController.visibleViewController
if (!visibleController){
return rootController
}
return visibleController.childViewControllers[0]
}
jailbreak가 끝나고 나면 어떤 걸 깔아서 진단해야 할지 뭐가 유용한지 모르는 사람들이 많음.
일단 탈옥은 했는데 활용할 수가 없다면 굳이 할 필요가 없음.
그래서 개인적으로 많이 사용하는 트윅을 간단하게 써볼까 함.
웹뷰형식의 앱은 앱 자체 취약점 진단 시에만 탈옥된 아이폰이 필요한데 모바일 웹 취약점을 굳이 탈옥해서 진행할 필요는 없음.(단, SSL Pinning 우회가 필요한 경우는 다를 수 있음 그리고 꼭 그렇다는 것도 아님. 무튼 아님.)
1. Apple File conduit "2"
ifunbox로 내부 파일을 접근할 수 있도록 해주는 트윅임. WinSCP를 통해 연결할 수 있는 방법도 있지만 ifunbox를 유용하게 쓴다면 거의 필수적으로 잘 쓸 수 있는 트윅임.
2. Openssh
아이폰을 ssh로 연결할 수 있도록 해주는 트윅임. putty로 연결해서 자주 사용함. mobaxterm을 이용하는 것도 추천.
3. Frida
소스를 추가해야함.(https://build.frida.re)
frida는 Android와 iOS에서 많이 쓰이는 툴임. 물론 알겠지만 hooking이나 jailbreak 우회 및 ssl pinning 우회 등 여러 방면에서 많이 쓰임. frida codeshare(https://codeshare.frida.re/) <--------- 여기에서 참조해서 하거나 직접 코딩하는 경우도 많음. (Android에서 많이 쓰긴 함.)