1.可以使用cycript 在cydia里安装cycript插件,用于运行时分析,修改界面。但是操作比较麻烦,所以如果只想分析别人的界面可以使用Reveal软件,如果想修改界面还是得用cycript
2.Reveal下载地址?https://revealapp.com/
下载Free trial试用版本,但是需要使用邮箱接收激活码,每个邮箱只能使用一次,每次试用15天,好在网上有临时邮箱,所以就相当于可以永久免费使用了,临时邮箱网站 http://24mail.chacuo.net/
- 下载完之后发现新版本没有libReveal.dylib了,所以需要按下图所示,找到library,拷贝RevealServer.framework下的RevealServer到手机里 /Library/MobileSubstrate/DynamicLibraries/目录下,然后修改名称为libReveal.dylib,
然后创建一个libReveal.plist文件,内容如下,也存放到上面的那个目录下,”com.apple.UIKit”代码可以查看所有的app,即手机里打开哪个app就可以查看哪个app,如果修改成其他的则为可以查看固定的app
{
Filter = {
Bundles = (
"com.apple.UIKit",
);
};
}
但是在reveal 18版本 iOS8.1.1的情况下越狱,设置查看所有app,导致safari无法打开网页,以及有些应用使用WKWebView的界面也无法打开网页,所以不能使用 com.apple.UIKit 查看所有app,需要指定bundleId来查看指定app,这样就可以打开网页,这点需要大家注意,下面是微信和掌上生活的bundleId
{
Filter = {
Bundles = (
"com.cmbchina.cmblife",
"com.tencent.xin",
);
};
}
如果不想查询,想自动生成这个plist列表,写个demo把以下代码放入即可自动生成,控制台会打印生成的plist文件在哪个目录,然后手动将文件拷贝到 /Library/MobileSubstrate/DynamicLibraries/ 目录下
NSMutableDictionary *appBundleIds=[NSMutableDictionary dictionary];
NSMutableDictionary *filter=[NSMutableDictionary dictionary];
appBundleIds[@"Filter"]=filter;
NSMutableArray *bundles=[NSMutableArray array];
filter[@"Bundles"]=bundles;
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);
//设备安装的app列表
NSArray *appList = [workspace performSelector:@selector(allApplications)];
Class LSApplicationProxy_class = object_getClass(@"LSApplicationProxy");
for (LSApplicationProxy_class in appList)
{
//这里可以查看一些信息
NSString *bundleID = [LSApplicationProxy_class performSelector:@selector(applicationIdentifier)];
NSString *version = [LSApplicationProxy_class performSelector:@selector(bundleVersion)];
NSString *shortVersionString = [LSApplicationProxy_class performSelector:@selector(shortVersionString)];
NSLog(@"bundleID:%@\n version: %@\n ,shortVersionString:%@\n", bundleID,version,shortVersionString);
[bundles addObject:bundleID];
}
NSString *path=[NSHomeDirectory() stringByAppendingString:@"/Documents/libReveal.plist"];
BOOL v= [[appBundleIds description] writeToFile:path atomically:YES];
NSLog(@"path: %@",path);
-
操作完以上步骤后,重启设备,重启reveal,打开指定app,发现reveal里已经出现可以查看的app了
-
发现有2个今日头条,因为一个是wifi连接的一个是usb连接的,建议选择usb因为传输快
-
然后选择一个即可查看此应用的层级结构,如果查看不了,cmd+R 刷新
或者直接使用MJ大佬写的插件可以避免上面的情况发生
屏幕快照 2018-11-28 下午11.29.53.png 屏幕快照 2018-11-28 下午11.30.00.png 屏幕快照 2018-11-28 下午11.30.09.png-
注意修改完可以查看某个app后。杀掉app重新打开,在reveal里即可发现app出现了
-
如果想屏蔽一些软件越狱检测,可以添加雷锋源 apt.abcydia.com
-
然后搜索liberty安装,安装成功后在设置里 找到librety,可以设置某个app屏蔽越狱检测,以及某个app屏蔽注入插件
- MJ源失效了,可以在
Cydia
搜索安装CCRevealLoader
,然后将之前提到的libReveal.dylib
修改名字为CCRevealLoader.dylib
,并覆盖/Library/MobileSubstrate/DynamicLibraries/CCRevealLoader.dylib
下的文件
网友评论