逆向工程技术详解:解开ipa文件的灰沙 -- 通过静态分析工具了解ipa实现 |...

41
iOS DevCamp Produced by CSDN Website: http://devcamp.csdn.net / Weibo: http://weibo.com/cmdnclub/

Upload: imshining-devcamp

Post on 21-Jun-2015

5.383 views

Category:

Technology


0 download

DESCRIPTION

逆向工程技术详解:《解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现》 | iOS DevCamp | 7月27日 北京 话题简介:在AppStore中经常会出现各种令人耳目一新的App,他们是如何实现那些效果的?他们又是使用哪些公共组件来完成自己的功能的呢?在本次演讲中将对如何探索那些封藏在IPA文件后面的实现进行简单的分析,将会针对其中的一些工具进行具体的演示和介绍。 讲师简介:张超,资深iOS 专家,iOS创业者。2009年在深圳第一次创业,主要从事iPhone应用的开发,完成了从技术到产品设计以及团队运营管理等全流程角色的转换,积累了丰富的iOS创业经验,熟稔App store的规则及流程,了解开发者的需求,并掌握了创业项目的全程运作能力。目前在国内移动互联网统计分析平台——友盟,担任iOS Team Leader。是创新工场和友盟的早期团队成员。

TRANSCRIPT

Page 1: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

iOS DevCamp

Produced by CSDN

Website: http://devcamp.csdn.net/Weibo: http://weibo.com/cmdnclub/

Page 2: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

友盟 张超微博:iAladdin

电邮:[email protected]

揭开IPA的灰纱通过分析工具了解App实现技巧

Page 3: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

什么是IPA?ipa后缀的文件是iOS系统的软件包,全称为iPhone application archive.通常情况下,ipa文件都是使用苹果公司的FairPlay DRM技术进行加密保护的。每个IPA文件都是ARM架构的可执行文件以及该应用的资源文件的打包文件,只能安装在iPhone,iPod Touch 或iPad上。该文件可以通过修改后缀名为zip后,进行解压缩,查看其软件包中的内容。

Page 4: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

IPA的物理结构

iTunesArtwork iTunesMetadata.plist xxx.App

Page 5: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

IPA的文件分类

Page 6: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

资源文件[resource]

Page 7: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

PNG NormalizerUIKit-Artwork-Extractor https://github.com/0xced/UIKit-Artwork-Extractor

Crunch http://www.pragmaticcode.com/crunch/

pngcrush 命令pngcrush -revert-iphone-optimizations -q OptimizedPNG.png RevertedPNG.png

Ruby实现https://github.com/swcai/iphone-png-normalizer

Python实现http://www.axelbrz.com.ar/?mod=iphone-png-images-normalizer

Objective-C实现

Page 8: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

pngcrush

Page 9: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

UIKit-Artwork-Extractor

Page 10: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Crunch

Page 12: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

PVR/PVRTC/PVR.CCZ

TexturePacker -- pvr/pvrtc/pvr.cczhttp://www.codeandweb.com/texturepacker/

quickpvr -- pvr/pvrtchttp://www.limbic.com/quickpvr.html

Page 13: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

TexturePacker

Page 14: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

quickpvr

Page 15: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

App中的数据

Bundle内 沙箱内

网络交互

运行时产生

Page 16: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

网络数据 [network]

Page 17: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Charles

Page 18: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Charles原理在网络交互中,通过充当代理的角色,从而获取到所有的请求和返回值,作为中间层来实现抓包的过程。

- 模拟器配置

- 真机配置

Page 19: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

HTTP请求抓取

Page 20: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

HTTPS请求抓取

Page 21: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

特殊网络模拟

Page 22: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

IPA状态 [ipa’s status]

Page 23: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

自签名工具

Page 24: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

IPA的状态

Page 25: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

沙箱数据 [sandbox]

6A2FCEEC-591E-4B85-B625-26F1AA3B2A4E

Documents Library tmp

xxx.appArtwork iTunesMetadata.plist

Page 26: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

常用命令cat

file

Page 27: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

二进制文件[binary]

静态分析工具 otoolnm strings class-dump系列

运行时分析工具Cycript

逆向分析工具HopperIDA Pro

Page 28: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

otool

Page 29: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

nm

Page 30: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

strings

Page 31: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Class-dump系列

Page 32: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

SSH到iOS系统中安装:a.通过Cydia安装,搜索Cycript安装b.dpkg -i cycript_0.9.450-1_iphoneos-arm.deb

使用:a.# cycriptb.# cycript -p processID

配合console

Cycript

Page 33: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

IDA Pro

Page 34: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

iOS App

Page 35: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Hopper

Page 36: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

iOS App

Page 37: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Mac App

Page 38: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

写在最后

Page 39: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

Books-《Binary Hacks》-《IDA Pro 权威指南》-《Hacking and Securing iOS Applications》-《iOS Hacker’s Handbook》

参考资料

Page 40: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

参考资料URL- http://iphone.freecoder.org/classdump_en.html

- http://www.cycript.org

- http://iphonedevwiki.net/index.php/CgBI_file_format

Page 41: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp

联系方式

Email: [email protected]: iAladdinWeibo: iAladdin