iOS逆向工程iOS 技术文档收录iOS学习开发

iOS_hook root权限 App

2016-10-22  本文已影响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
貌似还有可能出现其他的错误提示信息,欢迎留言,大家一起讨论下。
内容到此结束了,如果上面有问题,请各位同学指正,如果有大神光顾,请一定不吝赐教。有很多不懂得地方。
就这样吧。。。

上一篇下一篇

猜你喜欢

热点阅读