发新帖

IOS应用安全(八):使用Cyript进行Method Swizzling

[复制链接]
4127 1
本帖最后由 ken 于 2015-10-20 23:54 编辑

上一节中,我们学习了创建一个自签名应用和如何安装到你的设备中。这一节。我们将学会如何使用Cyript进行Method Swizzling。

首先,我们下载Xcode用来构建一个自签名的项目,上一节已经说得很清楚了。确认下是不是使用的自己创建的签名。

程序一旦运行起来,ssh进入你的设备使用Cyript来Hook正在运行的程序。你可以使用这条命令Cyript  -p [App_ID]

注意看下面这幅图,这个应用有个登录框,我们将通过点击Login Method 1 button.来绕过登录而不需要密码。

输入用户名admin和密码password,它会跳转到登录成功后的页面。

如果我们输入错误的账号和密码,会出现如下账号或密码出错的提示

我们的目标是绕过这个登录页面。

So,我们先找到这个应用的root view controller。使用命令
UIApp.keyWindow.rootViewController

OK, 这个登录页面是我们打开这个应用的第一个视图,从上图我们可以确定负责显示这个登录页面的view Controller(视图显示类)是导航控制(NavitionController是导航控制类,前面几节有讲过)的一部分。我们可以通过导航控制类的属性
visibleViewController来找到当前显示的视图。

完美,接下来我们写一个打印这个视图的所有方法的函数。这些代码来自这里,这个网站可以找到更多cyript有用的用法。
[AppleScript] 纯文本查看 复制代码
function printMethods(className)
{
    var count = new new Type("I");
    var methods = class_copyMethodList(objc_getClass(className), 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);
    free(count);
    return methodsArray;
}


接下来让我们打印这个视图的所有方法,注意参数是类名,在这里参数是ViewController。


另外,也可以使用isa.message属性来获取方法名。根据Apple的官方文档解释说,isa是一个指向类的结构。
When a new object is created, memory for it is allocated, and its instance variables are initialized. First among the object’s variables is a pointer to its class structure. This pointer, called isa, gives the object access to its class and, through the class, to all the classes it inherits from.

以上是官方的说法,意思是一个新对象被创建,分配给它一块内存并且它的实例变量被初始化,这个对象的第一个变量指向他的类结构,这个指针就是isa。给予这个对象访问这个类、父类和所以它继承的类的访问权限。也就是这个对象可以使用后者的方法和属性等。
看下图能更清晰看出这个,图来源此处

那么什么是message属性?Well,我们必须先知道什么是分发表(dispath table),打个比喻,分发表可看做一本书的目录,我们可以通过目录快速找到所需要的目标,而分发表和目录类似,我们可以通过分发表很快找到这个类的方法的selector和与之关联的地址官方解释
















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论1

朱佑    发表于 2015-12-3 14:37:14 | 显示全部楼层
ios。。大苹果。麻烦大大了

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表