使用class-dump-z 分析支付宝
6 使用 class-dump-z 分析支付宝 App
为了了解支付宝 app 的源码结构,我们可以使用 class-dump-z 工具来分析支付宝二进制。
下载配置 class_dump_z
前往 https://code.google.com/p/networkpx/wiki/class_dump_z ,下载 tar 包,然后解压配置到本地环境
$ tar -zxvf class-dump-z_0.2a.tar.gz $ sudo cp mac_x86/class-dump-z /usr/bin/
class_dump 支付宝 App
$ class-dump-z Portal > Portal-dump.txt @protocol XXEncryptedProtocol_10764b0 -(?)XXEncryptedMethod_d109df; -(?)XXEncryptedMethod_d109d3; -(?)XXEncryptedMethod_d109c7; -(?)XXEncryptedMethod_d109bf; -(?)XXEncryptedMethod_d109b8; -(?)XXEncryptedMethod_d109a4; -(?)XXEncryptedMethod_d10990; -(?)XXEncryptedMethod_d1097f; -(?)XXEncryptedMethod_d10970; -(?)XXEncryptedMethod_d10968; -(?)XXEncryptedMethod_d10941; -(?)XXEncryptedMethod_d10925; -(?)XXEncryptedMethod_d10914; -(?)XXEncryptedMethod_d1090f; -(?)XXEncryptedMethod_d1090a; -(?)XXEncryptedMethod_d10904; -(?)XXEncryptedMethod_d108f9; -(?)XXEncryptedMethod_d108f4; -(?)XXEncryptedMethod_d108eb; @optional -(?)XXEncryptedMethod_d109eb; @end
查看得到的信息是加过密的,这个加密操作是苹果在部署到 app store时做的,所以我们还需要做一步解密操作。
使用 Clutch 解密支付宝 App
下载 Clutch
iOS7 越狱后的 Cydia 源里已经下载不到 Clutch 了,但是我们可以从网上下载好推进 iPhone
地址:Clutch 传送门
查看可解密的应用列表
root# ./Clutch Clutch-1.3.2 usage: ./Clutch [flags] [application name] [...] Applications available: 9P_RetinaWallpapers breadtrip Chiizu CodecademyiPhone FisheyeFree food GirlsCamera IMDb InstaDaily InstaTextFree iOne ItsMe3 linecamera Moldiv MPCamera MYXJ NewsBoard Photo Blur Photo Editor PhotoWonder POCO 相机 Portal QQPicShow smashbandits Spark tripcamera Tuding_vITC_01 wantu WaterMarkCamera WeiBo Weibo
解密支付宝 App
root# ./Clutch Portal Clutch-1.3.2 Cracking Portal... Creating working directory... Performing initial analysis... Performing cracking preflight... dumping binary: analyzing load commands dumping binary: obtaining ptrace handle dumping binary: forking to begin tracing dumping binary: successfully forked dumping binary: obtaining mach port dumping binary: preparing code resign dumping binary: preparing to dump dumping binary: ASLR enabled, identifying dump location dynamically dumping binary: performing dump dumping binary: patched cryptid dumping binary: writing new checksum Censoring iTunesMetadata.plist... Packaging IPA file... compression level: 0 /var/root/Documents/Cracked/支付宝钱包-v8.0.0-(Clutch-1.3.2).ipa elapsed time: 7473ms Applications Cracked: Portal Applications that Failed: Total Success: 1 Total Failed: 0
导出已解密的支付宝 App
从上一步骤得知,已解密的 ipa 位置为:/var/root/Documents/Cracked/支付宝钱包-v8.0.0-(Clutch-1.3.2).ipa
将其拷贝到本地去分析
class_dump
已解密的支付宝 App
解压 .ipa 后,到支付宝钱包-v8.0.0-(Clutch-1.3.2)/Payload/Portal.app
目录下,class_dump 已解密的二进制文件
$ class-dump-z Portal > ~/Portal-classdump.txt
这回就可以得到对应的信息了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
|
分析支付宝源码片段
使用了 @private 关键字限制成员访问权限
但是实际上,在 Objective-C 编程中,使用 @private 连 Keypath 访问都拦不住的
抛出了冗长的成员对象
这非常有利分析程序结构
进一步思考
1)如何利用 class-dump 结果,结合 cycript 进行攻击呢?
2)class-dump-z 如此强大,有什么方法可以减少暴露的信息吗?
接下来的博文将针对上面的思考,继续总结~