导读

  • 前一段时间,一直忙做新的项目,也没做研究什么稀奇古怪的技术.趁着年前,工作任务不是太重,就看看iOS逆向工程方面的知识,这里简单粗步,使用monkeydev这个是AloneMonkey开发的.确实简单易用,和直接开发差别不大.

需要技能

  • 1.懂基本的终端指令以及操作.

  • 2.会使用Xcode,有基本ios开发基础.

开干

1 IPA砸壳

  • 1.手工砸壳(这里不详说,内容太多了,可能以后再深究)

  • 2.第三方ios app市场,例如pp助手 爱思助手 同步推等等 ,均可以下载已砸壳,这里采用pp助手 (这里采用这种,看图明确,不在说明)

image

image

2 安装class-dump

  • class-dump主要是用来查看脱壳之后的Mach-O文件的所能暴露出来的头文件?

  • 我是建议github搜索class-dump下载xcode工程运行取出Finder中的class-dump.直接安装我印象中,好似新版maxos会报错,但是但是没截图留底了,所以这里没贴图…

  • 然后把class-dump复制到/usr/local/bin/class-dump

  • 输入命令就可以导出*.h相关文件


class-dump -H ./News.app/ -o ./header_news

3 安装MonkeyDev

  • 为什么用MonkeyDev? 因为手上没越狱机器,并且这个工具足够简单,已集成Reveal…..相关好用的工具

[原作者(AloneMonkey) 简书]

(https://www.jianshu.com/p/61c2aca18f0b)

MonkeyDev Github

MonkeyDev 安装方法

  • 配置好环境,xcode下载就会出现类似的第三方选项

image

  • 逻辑示意图 (其实2.3.4就是monkeyDev已经做好的)

image

  • 通过PP助手下载的越狱ipa文件通过class-dump指令来查看所有包含类的头文件.然后编写动态库.通过runtime的机制动态注入到破壳文件中.然后对注入完成的文件进行重新签名,最后安装应用程序.

4 最后步骤 配置项目

  • 将已砸壳的ipa放入下图目录.

image

  • xcode关闭这个配置,然后看一下主项目是否已经依赖库文件,没就设置一下

image

  • 重要!! 重要!! 重要!! 重要!! 必须在真机运行.

5 还有一个最后步骤,加hook…

  • 我这个是hook抖音的一个非官方包,第三方弹出提示.

image


CHDeclareClass(UIViewController)



CHOptimizedMethod3(self, void, UIViewController, presentViewController, UIViewController*, arg1, animated, BOOL, arg2,completion, id, arg3){

    

    if([arg1 isKindOfClass:UIAlertController.class]){

        UIAlertController* alert = arg1;

        if([alert.title containsString:@"官方版本"]){

            return;

        }

        CHSuper3(UIViewController,presentViewController,arg1,animated, arg2, completion,arg3);

    }

    else{

        CHSuper3(UIViewController,presentViewController,arg1,animated, arg2, completion,arg3);

    }

}



CHConstructor{

    CHLoadLateClass(UIViewController);

    CHClassHook3(UIViewController, presentViewController, animated, completion);

    

}

6 逆向了几个行业有代表性的ipa

  • 微信,抖音,京东,爱奇艺,头条,微博

  • 微信,可以直接进入debug,但是我登了2个小时不到,第二天就被警告,使用第三方登录,有封号可能.代码层面看,估计是比较bundle id.来做处理的.

  • 抖音,有反debug措施的.代码层面看,抖音也使用了很多知名的第三方库

  • 京东,不知道为什么,打包后网络请求就失败了.代码层面看,京东的app是使用了高度组件化开发,据说他们还有自己的一个组件化管理平台.但是这东东,一般公司真的没人力去做这个.需要若干体量,才能去开始考虑这个.

完结

  • 这篇确实有点,班门弄斧.也没什么特别的就是一个简单的工具使用总结.反推目前自己所在的项目,也能用这个流程跑一次.所以,逆向其实更多的是加强自己对项目的安全意识而已,ios其实也不是那么安全,以下是爱奇艺的,

image