iOS-逆向22-砸壳

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-逆向22-砸壳相关的知识,希望对你有一定的参考价值。

参考技术A 应用加壳(加密)
提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)
应用砸壳(解密)
静态砸壳
静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术

动态砸壳
动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。

Clutch是由KJCracks开发的一款开源砸壳工具。工具支持iPhone、iPod Touch、iPad,该工具需要使用ios8.0以上的越狱手机应用。

otool -l QQ,查看可执行文件QQ结构

越狱插入,不污染三方应用的插件
非越狱的注入

Github开源工具。 dumpdecrypted这个工具就是通过建立一个名为dumpdecrypted.dylib的动态库,插入目标应用实现脱壳。

该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件。

解决办法

遇到警告,sudo后面加-H

进入/opt/MonkeyDev/bin目录执行frida-ps列出所有进程

frida-ps -U此时列出USB连接的进程

frida的作用:
/opt/MonkeyDev/bin下直接进入具体应用
frida -U 微信
报错是因为我的手机里面安装了一个正版微信,一个砸壳微信

frida -U 支付宝,前提是支付宝在前台运行,可正常进入,并能执行frida语句,语法见 官网 doc

解决办法是将dump.py中的python改为python3,python版本是2改为python2,是python3就改为python3,通过python --version查看当前版本

scp -P 12345 .inputrc root@localhost:/var/root/

转载无须越狱自动集成只需要一个砸壳的应用---MonkeyDev

原文:http://www.alonemonkey.com/2017/07/12/monkeydev-without-jailbreak/

无须越狱、自动集成、只需要一个砸壳的应用---MonkeyDev

前言

之前基于iOSOpenDev重新弄了一个MonkeyDev,最初的版本支持Xcode 9和最新theos创建CaptainHook Tweak和Logos Tweak,后面又增加了一个Command-line Tool工具的支持。

然后想到如果是非越狱机器或者使用Xcode调试第三方应用的时候很多集成步骤,注入dylib,集成Reveal、Cycript等等,这些步骤其实都是重复性的工作,所以现带给大家MonkeyDev支持,一步到位!

那么需要怎么做呢?

安装MonkeyDev

这个看第一篇文章,或者看github文档 就可以了。

很多人就是因为没有仔细看文档,然后出错了不知道怎么解决,所以先仔细看一遍文档把。

使用:一步到位

CaptainHook Tweak、Logos Tweak and Command-line Tool的使用这里就不讲了,如果有不会的我到时再单独写一篇文章。

这里主要介绍的功能是MonkeyDev一步集成非越狱调试。

准备好砸壳的ipa或者app

第一步是准备好砸壳的ipa或者app,可以从第三方应用市场或者http://www.iphonecake.com去下一个。

创建MonkeyApp项目

点击File - New - Project...创建iOS项目,选择MonkeyApp

技术分享

创建完成之后,你会得到一个这样的工程:

技术分享

解析一下,这里我创建的项目名字就是MonkeyApp,所以下面对应的都是MonkeyApp,你自己创建的由你的项目名字而定!

MonkeyAppDylib这个是将被注入目标App的动态库,你自己要hook的代码可以在MonkeyAppDylib.m文件里面写,我在里面写了一些Demo代码,支持OC runtime的HOOK,C函数的fishhook。

AntiAntiDebug这个里面是反反调试的代码。

fishhook这个是自动集成的fishhook模块。

下面Framewroks已经自动集成了Reveal.frameworkCycript.framework

拖入编译

我准备了一个砸壳了的ipa文件,然后我右键项目里面的TargetApp文件夹Show in Finder,把ipa文件拖入下面的位置(当然app文件夹也可以的):
技术分享
put ipa or app here这个文件不要删除。

好了,还要做什么吗? 不, 不用了。编译运行到非越狱手机。

打开电脑的Reveal,就可以看到界面了:

技术分享

Cycript查看界面也没有问题:

技术分享

这里Cycript默认端口是6666

更多功能

动态库调试

MonkeyAppDylib.m文件中写了自己的代码之后就可以直接下断点调试,效果如下:

技术分享

Demo App

MonkeyApp不拖入App或者ipa的情况下,会有一个默认的App,以供读者自己测试,样子大概是这个样子····

技术分享

你可以自己修改MonkeyAppDylib.m里面的代码,这个是笔者针对Demo写的例子啦。。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CHDeclareClass(CustomViewController)
 
CHOptimizedMethod(0, self, NSString*, CustomViewController,getMyName){
//get origin value
NSString* originName = CHSuper(0, CustomViewController, getMyName);
 
NSLog(@"origin name is:%@",originName);
 
//get property
NSString* password = CHIvar(self,_password,__strong NSString*);
 
NSLog(@"password is %@",password);
 
//change the value
return @"AloneMonkey";
 
}
 
CHConstructor{
CHLoadLateClass(CustomViewController);
CHClassHook(0, CustomViewController, getMyName);
}

默认集成的库

本工具会默认集成Reveal.frameworkCycript.framework,em…..

集成的Reveal.framework是最新版本的,所以你可能需要最新的Reveal,否则使用自己的Reveal.framework替换掉/opt/MonkeyDev/frameworks下面的Reveal.framework

Cycript.framework/opt/MonkeyDev/library目录下面。

可以在如下位置删除掉默认集成的库:

技术分享

增加自己的库

emmm。。。。。

动态库的话,把你的*.framework文件拷贝到/opt/MonkeyDev/frameworks目录下面,然后在下图的位置add进去,emmm。。。。就可以了。

技术分享

静态库的话,直接增加到上面,指定search path就可以了,和正常开发没啥区别。。。

增加自己的资源

如果想要加入storyboard或者bundle资源的话,将其拷贝到如下目录即可!

技术分享

技术分享
欢迎您扫一扫上面的微信公众号,订阅我的博客!
 


以上是关于iOS-逆向22-砸壳的主要内容,如果未能解决你的问题,请参考以下文章

iOS逆向工程之给App脱壳

IOS 解密APP(逆向工程完整详解)

IOS 解密APP(逆向工程完整详解)

逆向工程之App脱壳

iOS逆向工程之App脱壳

不越狱修改钉钉位置打卡(实现除了砸壳,都可以在不越狱的前提下进行逆向工程)