美文网首页
逆向-分析别人的APP界面

逆向-分析别人的APP界面

作者: CoderLS | 来源:发表于2018-11-28 23:44 被阅读0次

    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,
    屏幕快照-2018-03-22-下午1.26.23.png 屏幕快照-2018-03-22-下午1.26.39.png

    然后创建一个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屏蔽注入插件

    image image
    • MJ源失效了,可以在Cydia搜索安装CCRevealLoader,然后将之前提到的libReveal.dylib修改名字为 CCRevealLoader.dylib,并覆盖/Library/MobileSubstrate/DynamicLibraries/CCRevealLoader.dylib 下的文件

    相关文章

      网友评论

          本文标题:逆向-分析别人的APP界面

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