iOS_hook root权限 App

作者: 静赏月之美 | 来源:发表于2016-10-22 00:02 被阅读264次

    本文中的主要思路来源于狗神的一篇文章。这里只是记录了我在实践中的全过程。

    hook具有root权限的App,这个事儿也和朋友讨论过,但是我们会遇到不同的问题,希望大家把自己遇到的问题(解决的没解决的)都发上来,以便后面的同学少走弯路。

    闲话少叙,下面就开始。本文将以一款很常见的应用iFile为例。用上面狗神介绍的方法进行hook。

    一、查看iFile.app里面的内容。

    屏幕快照 2016-10-21 下午11.03.29.png
    什么情况?怎么这么多iFIle*?
    但是观察发现,里面的iFile文件大小为,与其他人相去甚远。此文件必有蹊跷,二话不说直接拖进MachOView中。发现原来是个bash文件。和狗神在另一篇文章中提到用bash调起具有root权限App道理是一样的。只是把文件改了个名字(自己还是眼力不行啊)。

    既然是这样,直接把该文件拖进Sublime Text中。

    屏幕快照 2016-10-21 下午11.06.22.png

    仔细看看,确实也没啥,就是在判断到底执行哪个文件。如果不从这个这个文件查看,也可以从手机的进程中查看,效果是一样的。

    屏幕快照 2016-10-21 下午11.11.19.png

    OK,确定了是哪个文件在执行,一会就可以直接动手改了。在改之前,先随便写个tweak。

    虽说是随便写个,但是好歹得知道hook在什么方法上吧。只得还是把iFile的头文件拿出来。


    屏幕快照 2016-10-21 下午11.20.06.png

    随便选一个,反正今天的重点不在这,哈。。。
    tweak.xm里面随便打了一句Log,是个意思就好

    %hook FileViewController
    - (void)viewDidAppear:(BOOL)arg1
    {
        NSLog(@"Labrador, i am hook in iFile");
        %orig(arg1);
    }
    %end
    

    恩,现在插件也准备好了,安装到手机上,然后拷贝一份在手机的/var/tmp/目录下。因为我们要把插件的路径指定为这个路径。

    下面该是修改iFile_文件了。要用到insert_dylib这个工具。这是一个mac上的工具,下载好代码后,自己编译一下,然后把生成的insert_dylib放到一个合适的位置,就可以开始工作了。
    命令使用的格式很简单

     path/to/insert_dylib /path/to/dylib /path/to/iFile_ 
    

    执行完这个命令,会生成一个iFile__pathced文件。现在还没完,不要急着把文件拷贝回去。
    下面还要对文件进行一次签名。具体为什么这么做,大概猜测,只是为了保持文件的结构。

    ldid -S iFIle__patched
    

    OK,现在好了。可以把修改后的文件拷贝回去,替换原来的iFile_了。记得名字一定不要错哦。。。
    上面的描述的几个步骤,直接上张操作图。

    屏幕快照 2016-10-21 下午11.45.56.png

    下面就是见证奇迹的时刻。我们去看看Log打印出来没。

    屏幕快照 2016-10-21 下午11.51.23.png

    哈哈 成功了!

    说明:
    关于用ldid个iFile__patched签名貌似是必须的,如果不签的话,会出现闪退。
    我记得错误提示信息最后是。。。killed:9
    貌似还有可能出现其他的错误提示信息,欢迎留言,大家一起讨论下。
    内容到此结束了,如果上面有问题,请各位同学指正,如果有大神光顾,请一定不吝赐教。有很多不懂得地方。
    就这样吧。。。

    相关文章

      网友评论

        本文标题: iOS_hook root权限 App

        本文链接:https://www.haomeiwen.com/subject/cdbcuttx.html