逆向工程技术详解:解开ipa文件的灰沙 -- 通过静态分析工具了解ipa实现 |...
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](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/1.jpg)
iOS DevCamp
Produced by CSDN
Website: http://devcamp.csdn.net/Weibo: http://weibo.com/cmdnclub/
![Page 2: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/2.jpg)
友盟 张超微博:iAladdin
揭开IPA的灰纱通过分析工具了解App实现技巧
![Page 3: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/3.jpg)
什么是IPA?ipa后缀的文件是iOS系统的软件包,全称为iPhone application archive.通常情况下,ipa文件都是使用苹果公司的FairPlay DRM技术进行加密保护的。每个IPA文件都是ARM架构的可执行文件以及该应用的资源文件的打包文件,只能安装在iPhone,iPod Touch 或iPad上。该文件可以通过修改后缀名为zip后,进行解压缩,查看其软件包中的内容。
“
”
![Page 4: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/4.jpg)
IPA的物理结构
iTunesArtwork iTunesMetadata.plist xxx.App
![Page 5: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/5.jpg)
IPA的文件分类
![Page 6: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/6.jpg)
资源文件[resource]
![Page 7: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/8.jpg)
pngcrush
![Page 9: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/9.jpg)
UIKit-Artwork-Extractor
![Page 10: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/10.jpg)
Crunch
![Page 11: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/11.jpg)
原理及其他其他语言实现Ruby实现https://github.com/swcai/iphone-png-normalizer
Python实现http://www.axelbrz.com.ar/?mod=iphone-png-images-normalizer
Objective-C实现
原理资料http://iphonedevwiki.net/index.php/CgBI_file_format
![Page 12: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/13.jpg)
TexturePacker
![Page 14: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/14.jpg)
quickpvr
![Page 15: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/15.jpg)
App中的数据
Bundle内 沙箱内
网络交互
运行时产生
![Page 16: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/16.jpg)
网络数据 [network]
![Page 17: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/17.jpg)
Charles
![Page 18: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/18.jpg)
Charles原理在网络交互中,通过充当代理的角色,从而获取到所有的请求和返回值,作为中间层来实现抓包的过程。
- 模拟器配置
- 真机配置
![Page 19: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/19.jpg)
HTTP请求抓取
![Page 20: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/20.jpg)
HTTPS请求抓取
![Page 21: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/21.jpg)
特殊网络模拟
![Page 22: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/22.jpg)
IPA状态 [ipa’s status]
![Page 23: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/23.jpg)
自签名工具
![Page 24: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/24.jpg)
IPA的状态
![Page 25: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/25.jpg)
沙箱数据 [sandbox]
6A2FCEEC-591E-4B85-B625-26F1AA3B2A4E
Documents Library tmp
xxx.appArtwork iTunesMetadata.plist
![Page 26: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/26.jpg)
常用命令cat
file
![Page 27: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/27.jpg)
二进制文件[binary]
静态分析工具 otoolnm strings class-dump系列
运行时分析工具Cycript
逆向分析工具HopperIDA Pro
![Page 28: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/28.jpg)
otool
![Page 29: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/29.jpg)
nm
![Page 30: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/30.jpg)
strings
![Page 31: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/31.jpg)
Class-dump系列
![Page 32: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/33.jpg)
IDA Pro
![Page 34: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/34.jpg)
iOS App
![Page 35: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/35.jpg)
Hopper
![Page 36: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/36.jpg)
iOS App
![Page 37: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/37.jpg)
Mac App
![Page 38: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/38.jpg)
写在最后
![Page 39: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/39.jpg)
Books-《Binary Hacks》-《IDA Pro 权威指南》-《Hacking and Securing iOS Applications》-《iOS Hacker’s Handbook》
参考资料
![Page 40: 逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp](https://reader033.vdocuments.site/reader033/viewer/2022061401/5585a6ccd8b42a711a8b4b37/html5/thumbnails/40.jpg)
参考资料URL- http://iphone.freecoder.org/classdump_en.html
- http://www.cycript.org
- http://iphonedevwiki.net/index.php/CgBI_file_format