SlideShare a Scribd company logo
1 of 41
Download to read offline
iOS DevCamp


Produced by CSDN


Website:
http://devcamp.csdn.net/
Weibo:
http://weibo.com/cmdnclub/
揭开IPA的灰纱
 通过分析工具了解App实现技巧




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


                                  ”
IPA的物理结构




                  iTunesMetadata.   xxx.App
iTunesArtwork
                       plist
IPA的文件分类
资源文件   [resource]
PNG Normalizer

UIKit-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实现
pngcrush
UIKit-Artwork-Extractor
Crunch
原理及其他
其他语言实现
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
PVR/PVRTC/PVR.CCZ

    TexturePacker -- pvr/pvrtc/pvr.ccz
    http://www.codeandweb.com/texturepacker/


    quickpvr -- pvr/pvrtc
    http://www.limbic.com/quickpvr.html
TexturePacker
quickpvr
App中的数据

                运行时产生

Bundle内   沙箱内



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

- 模拟器配置

- 真机配置
HTTP请求抓取
HTTPS请求抓取
特殊网络模拟
IPA状态 [ipa’s status]
自签名工具
IPA的状态
沙箱数据            [sandbox]




      Artwork   iTunesMetadata xxx.app
                     .plist
  6A2FCEEC-591E-4B85-B625-26F1AA3B2A4E


    Documents      Library      tmp
常用命令
cat

file
二进制文件           [binary]

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


 运行时分析工具
 Cycript


 逆向分析工具
 Hopper
 IDA Pro
otool
nm
strings
Class-dump系列
Cycript
SSH到iOS系统中
安装:
a.通过Cydia安装,搜索Cycript安装
b.dpkg -i cycript_0.9.450-1_iphoneos-arm.deb

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

配合console
IDA Pro
iOS App
Hopper
iOS App
Mac App
写在最后
参考资料
Books
-《Binary Hacks》
-《IDA Pro 权威指南》
-《Hacking and Securing iOS
Applications》
-《iOS Hacker’s Handbook》
参考资料
URL
- http://iphone.freecoder.org/classdump_en.html
- http://www.cycript.org
- http://iphonedevwiki.net/index.php/CgBI_file_format
联系方式


Email: aladdin@umeng.com
Github: iAladdin
Weibo: iAladdin

More Related Content

What's hot (6)

Demultiplexer with vhdl code
Demultiplexer  with vhdl codeDemultiplexer  with vhdl code
Demultiplexer with vhdl code
 
Windbg랑 친해지기
Windbg랑 친해지기Windbg랑 친해지기
Windbg랑 친해지기
 
Original PNP Transistor 2SA564A A564A A564 564 TO-92 New
Original PNP Transistor 2SA564A A564A A564 564 TO-92 NewOriginal PNP Transistor 2SA564A A564A A564 564 TO-92 New
Original PNP Transistor 2SA564A A564A A564 564 TO-92 New
 
MATLAB program of expansion and compression of signal
MATLAB program of expansion and compression of signalMATLAB program of expansion and compression of signal
MATLAB program of expansion and compression of signal
 
decoder and encoder
 decoder and encoder decoder and encoder
decoder and encoder
 
Sequential Logic Circuit
Sequential Logic CircuitSequential Logic Circuit
Sequential Logic Circuit
 

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

Mobile app security
Mobile app securityMobile app security
Mobile app security
drewz lin
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
colderboy17
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
mysqlops
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
FLASH开发者交流会
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmi
yiditushe
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告
ahnlabchina
 
Puppet安装测试
Puppet安装测试Puppet安装测试
Puppet安装测试
Yiwei Ma
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
F.l. Yu
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
 

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

Mobile app security
Mobile app securityMobile app security
Mobile app security
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
FeatHub_DataFun_2023.pptx
FeatHub_DataFun_2023.pptxFeatHub_DataFun_2023.pptx
FeatHub_DataFun_2023.pptx
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmi
 
常用开发工具介绍
常用开发工具介绍常用开发工具介绍
常用开发工具介绍
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告
 
基于Ivy ant的java构建初探
基于Ivy ant的java构建初探基于Ivy ant的java构建初探
基于Ivy ant的java构建初探
 
恶性代码和分析方案
恶性代码和分析方案恶性代码和分析方案
恶性代码和分析方案
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 
Puppet安装测试
Puppet安装测试Puppet安装测试
Puppet安装测试
 
第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络第11讲 管理Cisco互联网络
第11讲 管理Cisco互联网络
 
Oracle Security 101
Oracle Security 101Oracle Security 101
Oracle Security 101
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 

More from imShining @DevCamp

More from imShining @DevCamp (16)

如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏
 
Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐
 
Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
 
Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明 Android消息推送实现 | 友盟 徐仙明
Android消息推送实现 | 友盟 徐仙明
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江
 
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
 
Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
 
Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振 Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振
 
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
 
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
 
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
 
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
 
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
 

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