iOS_hook root权限 App
本文中的主要思路来源于狗神的一篇文章。这里只是记录了我在实践中的全过程。
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.pngOK,确定了是哪个文件在执行,一会就可以直接动手改了。在改之前,先随便写个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_了。记得名字一定不要错哦。。。
上面的描述的几个步骤,直接上张操作图。
下面就是见证奇迹的时刻。我们去看看Log打印出来没。
屏幕快照 2016-10-21 下午11.51.23.png哈哈 成功了!
说明:
关于用ldid个iFile__patched签名貌似是必须的,如果不签的话,会出现闪退。
我记得错误提示信息最后是。。。killed:9
貌似还有可能出现其他的错误提示信息,欢迎留言,大家一起讨论下。
内容到此结束了,如果上面有问题,请各位同学指正,如果有大神光顾,请一定不吝赐教。有很多不懂得地方。
就这样吧。。。