1.連接配接裝置
打開一個終端,輸入指令:
iproxy 2222 22
重新打開一個新的終端,輸入指令:
ssh -p 2222 [email protected]
這時候會提示輸入密碼:預設密碼為“alpine”。這樣就可以連接配接到裝置了。
也可直接通過如下指令連接配接到裝置:
ssh [email protected] -p 22
如果後面沒有"-p 22",有可能會報錯:
這個時候,使用如下指令修改"services"檔案,把5860修改為22即可:
sudo vi /etc/services
2.擷取裝置程序資訊
輸入指令:
ps ax
也可以檢視具體某個程序的PID:
ps ax | grep SpringBoard
3.勾住某個程序
//1236為程序ID
cycript -p 1236
4.編寫方法
//擷取目前控制器
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]
}
//擷取目前控制器方法調用
var vc = currentVC()
//擷取控制器所有方法
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;
}
//調用擷取所有方法
printMethods(CYTabBarController, objc_getClass(CYTabBarController))
//列印成員變量
function printIvars(className, isa) {
var count = new new Type("I");
var classObj = (isa != undefined) ? objc_getClass(className)->isa :
objc_getClass(className);
var ivars = class_copyIvarList(classObj, count);
var ivarsArray = [];
for(var i = 0; i < *count; i++) {
var ivar = ivars[i];
ivarsArray(ivar_getName(ivar));
}
free(ivars);
return ivarsArray;
}
無善無惡心之體,
有善有惡意之動,
知善知惡是良知,
為善去惡是格物。