逆向工程--苹果移动端app逆向分析技术(一)

0x01 基础准备

关于iphone移动端app逆向程序相关初级基础大家可以自己提前学习。本

文主要给大家分享关于脱壳加密app程序的技术。学习之前大家先搭建系

统环境,准备相应的工具,参考链接教程自行搭建和安装。

1 macOS安装

vmware workstation 12.0 安装macOS 操作系统。
https://jingyan.baidu.com/article/54b6b9c0ec0a1b2d593b4745.html

2 XCODE安装

macOS系统应用商店安装xcode软件。这个就不用多说了,装好系统后打开

登录apple账号,在应用商店直接搜索下载xcode,直接安装完成即可。

3 越狱iphone

一部iphone手机,越狱你的iphone。我这里是一部4s,当然你根据不同系统

版本采用不同工具,方法都类似。http://www.app111.com/yueyu/iphone/02-38/

4 安装插件

越狱必要插件
AppSync
afc2add
OpenSSH
Cydia Substrate
PP助手3.0

5 其它命令

Dumpdecrypted.dylib
Class-dump
Otool

lipo

0x02 测试步骤

上面的工作准备好了之后,我们就开始准备逆向测试我们的app程

序了。测试之前,搭建好。我的系统是当前最新版macOS 10.13.2

 

 XCODE版本是

 
                     

1 FairPlay技术

对于苹果商店的app往往都采用FairPlay(https://en.wikipedia.org/wiki/

FairPlay)这种技术进行发布前加密加密保护。当然有些app本身没有保

护,比如第三方源的发布,不经过苹果应用商店,那么我们直接就可以

直接利用工具进行提取,直接采用开始逆向工具的分析。如果你不确定

有没加壳,我们可以使用otool工具测试一下。

2 otool 查看是否加密

查看是否加密

otool -l 主文件名 | grep crypt

 

cryptid 1代表加密,cryptid 0代表未加密。
注意出现两个cryptid代表两种架构
分别对应着armv7和arm64,也就是它们都有加密。
不同手机系统对应的架构
iphone4 (armv7)
iphone4s(armv7)
iphone5 (armv7)
iphone5s(arm64)
iphone6 (arm64)
iphone6s(arm64)

3 开始脱壳

我们给手机上安装好我们要逆向的app程序,直接从商店应用安装。同时

记得把手机的wifi连接好,让电脑能够访问到手机。然后打开macOS命令行,

这里采用ssh方式进行连接,当然你可以直接插着数据线进行连接。

 

这里默认的root账户密码是alpine。我们把之前准备的脱壳工具dumpdecrypted.dylib

上传或者拷贝到手机某个路径下。如果没有这个文件可以根据后面附带的连接,自己

下载然后手动根据命令进行编译,把编译出来的复制到我们越狱的手机下面来。然后

找到我们的安装程序路径,默认的所有iphone安装app程序都存储在var/mobile/App

lications/目录下。

 

蓝色十六进制字符串就代表不同app安装后的名称。当然很多人说这个看不出是

哪个程序,我们可以随便进到一个目录下看看,

 

这里是aisiweb.app就是你要找的程序名称,也是我们脱壳的关键所在。

举例那么这里我们要脱壳第一个应用程序,这个是我在应用商店下载的

一个真实在线,目前还在使用的app程序,所以部分进行打码隐私保护。

输入命令入如下

DYLD_INSERT_LIBRARIES=dumpdecrypted_7.dylib /var/mobile/Applications/

16A8DAA8-0BB7-4983-BD91-C712A31F3737/xxx.app/xxx mach-o decryption dumper

 

然后我们再进行查壳验证。

 
                    

在此处,我们发现已经脱去了外面的壳。但是发现arm64位架构并没有脱壳,由于我

的手机还是老款armv7架构,所以只能脱去armv7的壳。当然不影响我们的后面使用。

你也可以使用iphone5s以上手机也可脱去它的arm64架构外壳。


4 多架构分离

这里我们还得进行分离,采用lipo xxx -thin armv7 -output yyy


0x03分析步骤

1 文件反编译

到的class-dump工具来解析一下,我们的头文件。看看能不能还原出它的代码呢。

./class-dump –arch rmv7 xxx.decrypted.armv7 -H -o /Users/5t4rk/Desktop/headers

 
                   

 代码如下


2 整体反编译

这里我使用反汇编调试器hopper dissassembler进行逆向分析,大家也可以用别的工具。

比如ida pro之类的。打开加载我们脱壳之后的app程序,显示结果如下:



 


当然大家可以看到正常解析,反编译完成,出现我们熟悉的函数,数据,字符串。
我跟没有脱壳诚挚直接逆向反汇编对比一下。基本反编译不出任何有价值的信息



0x04 工具列表

http://bbs.feng.com/read-htm-tid-10620016.html

https://github.com/stefanesser/dumpdecrypted

http://www.sdifen.com/hopperdisassembler408.html

https://www.hopperapp.com/

http://stevenygard.com/projects/class-dump/




你可能感兴趣的:(逆向工程,安全测试,技术文章,反汇编,移动安全,网络安全与恶意代码)