iOS 逆向编程(十七)Cycript 使用对APP实测

简介: iOS 逆向编程(十七)Cycript 使用对APP实测
  • 本文只用于技术分享、分析、学习,不允许其他用途,他人行为跟本人与平台无关
  • 上一章介绍了下 DZMCycript,这章做一个小测试,修改一下 微信钱包零钱金额提示文字
// 连接手机终端
dengzemiaodeMacBook-Pro:ssh dengzemiao$ sh login.sh 
// 搜索微信程序(微信APP需要处于启动状态)
iPhone:~ root# ps -A | grep WeChat
 1668 ??         1:11.60 /var/containers/Bundle/Application/2771997E-6A14-4ACD-A58F-E38C099D2AE1/WeChat.app/WeChat
 1689 ttys000    0:00.02 grep WeChat
// 进入微信调试环境
iPhone:~ root# cycript -p WeChat   
// 导入 DZMCycript
cy# @import DZMCycript
  • 进入调试环境之后,可以手动将微信页面切到 我>支付>钱包>零钱 页面。

  • 来修改一下金额,可以通过Cycript自带的choose(UILabel)函数列出当前缓存中已存在的所有UILabel,然后command + F搜索一下比较标志性的文字,如果是中文需要转成Unicode之后才可以查询到。
  • 零钱里面有 余额数字 0.21,可以通过搜索它来找到对应的 UILabel,:
[
  ...
  // text = '\xef\xbf\xa50.21' 看后面的 0.21
  #"<KindaUILabel: 0x11c6e0c40; baseClass = UILabel; frame = (212 2.5; 59 19); text = '\xef\xbf\xa50.21'; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2816cde50>>"
  ...
]
  • 然后通过 #0x11c6e0c40.text = "123" 就可以修改金额了
    但是,有个问题就是这个是从 缓存里面已加载 的所有 UILabel 组件获取出来的列表,也就是这个 UILabel 可能并不是这个页面的,你会发现你 修改成功 页面的 金额 并没有发生变化。
  • 那我们可以通过 DZMCycript 来获取当前控制器,并获取出来它的所有子控件看看是什么情况。
// 获取当前控制器,也就是零钱页面这个控制器
cy# DZMFrontVc()
#"<WCPayBalanceDetailViewController: 0x10e535c00>"
// 获取它的所有子控件
cy# DZMVcSubviews(#0x10e535c00)

  • 然后你会发现人家是用 4个UILabel 展示了我的金额 0.21,连 . 都是一个 UILabel

    所以有时候通过 choose() 或者别的属性或得到的对象修改没有效果的时候,可以到页面一步一步排查,可能是你找错对象了。
    然后修改 0 位置的金额数值,通过 #0x1264284c0.text = "8",金额就变成 8.21

    如果你改成比较大的数字,还需要将 #0x1264284c0.frame = DZMRectMake(0, 0, 100, 53.5) 调整大,因为宽度是固定的,但是貌似他不会自己撑开,所以你需要一个一个的去改
  • 中文测试:将提示 转入零钱通 给自己加加薪 改成 dzm,需要将 转入零钱通 这句中文 Unicode 转一下,后面半截因为有空格存在就不转义了,因为 空格 转义也会变成 Unicode,可能我们搜索的目标文案它还是正常空格,所以就看情况避免下,转义后得到:
\u8f6c\u5165\u96f6\u94b1\u901a
  • 然后去 command + F 搜索一下,找到了 UI 组件,发现是用 UIButton 写的:
<UIButton: 0x11c6799e0; frame = (63.5 230.5; 193 29); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x28327c580>>
|    |    |    |    | <UIButtonLabel: 0x11ca0f8c0; frame = (16 6; 161 17); text = '\u8f6c\u5165\u96f6\u94b1\u901a \u7ed9\u81ea\u5df1\u52a0\u52a0\u85aa'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281402530>>
|    |    |    |    |    | <_UILabelContentLayer: 0x283269740> (layer)
|    |    |    |    | <UIImageView: 0x1115c36a0; frame = (181 6.5; 8 16); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x28327cc80>>
  • 找到之后,通过 UIButton 的方式修改一下文字:
cy# [#0x11c6799e0 setTitle:@"dzm" forState:UIControlStateNormal]
相关文章
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
148 3
|
1月前
|
iOS开发 开发者
一键制作 iOS 上架 App Store 描述文件教程
一键制作 iOS 上架 App Store 描述文件教程
|
1月前
uni-app 185iOS端兼容处理
uni-app 185iOS端兼容处理
42 1
|
1月前
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
226 0
|
1月前
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
34 0
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
|
1月前
|
大数据 测试技术 数据库
ios app性能分析
ios app性能分析
19 2
|
1月前
|
移动开发 网络协议 Linux
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
29 0
|
1月前
|
定位技术 开发工具 iOS开发
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
24 0
|
1月前
|
iOS开发 网络架构 UED
ios app的分类与本质,感想
ios app的分类与本质,感想
24 0
|
1月前
|
iOS开发 开发者
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题