美文网首页
二、逆向开发_Cycript

二、逆向开发_Cycript

作者: MR_詹 | 来源:发表于2021-03-24 09:34 被阅读0次

Cycript 是Object-C++、ES6(JavaScript)、Java等语法的混合物
作用:可以用来探索、修改、调试正在运行的Mac/iOS App
官网:http://www.cycript.org/

手机设备安装Cycript,即可在iPhone上调试运行中的APP

Cycript 的使用

调试某个应用app(注意:app一定是要在前台活跃的状态下才行)
终端命令

  • 开启: cycript -p进程ID 或 cycript -p 进程名称 (可以通过下方ps命令获取,推荐以进程名称,因为进程ID有可能会改变)
  • 取消输入ctrl + c
  • 退出ctrl + d
  • 清屏command + r

显示的cy#说明已经进入该运行的程序了

Cycript常用语法

1、UIApp等价于: [UIApplication sharedApplication]

2、定义变量
var 变量名 = 变量值

3、用内存地址获取对象
#内存地址

4、ObjectC.classes
已加载的所有OC类

5、查看对象的所有成员变量
*对象

6、递归打印view的所有子控件
[UIApp.keyWindow recursiveDescription]
[UIApp.keyWindow recursiveDescription].toString()
UIApp.keyWindow.recursiveDescription().toString()

7、筛选出某种类型的对象
choose(对象类型名称)
choose(UIViewController)

8、MJ 老师封装了一套代码mjTool.js(超级好用)
第一步,下载的文件拷贝到手机目录/usr/lib/cycript0.9下,文件名就是框架的名称,比如本案例中的MJTool.cy
导入框架
@import MJTool
获取当前显示的ViewController
终端命令:MJFrontVc()
获取某个类的对象方法名列表,支持正则表达式查询
MJInstanceMethodNames(类的名称)
MJInstanceMethodNames(类的名称,正则表达式)

递归打印子视图
MJSubviews()

查看成员变量
MJIvarNames(对象)

查看appId: MJAppId
查看appPath:MJAppPath
查看docPath: MJDocPath
查看cachesPath: MJCachesPath

ps命令

手机设备安装adv-cmds插件
ps命令是process status 的缩写,使用PS命令可以列出系统当前的进程

  • 列出所有的进程: ps -A
  • 搜索关键字: ps -A | grep 关键字

扩展:

如何查看中文的unicode代码
终端使用python

Reveal的使用教程
https://github.com/LeoMobileDeveloper/Blogs/blob/master/iOS/iOS%E8%B6%8A%E7%8B%B1%2BReveal%207%E5%88%86%E6%9E%90%E4%B8%89%E6%96%B9AppUI%E6%A1%86%E6%9E%B6%E6%95%99%E7%A8%8B.md

相关文章

网友评论

      本文标题:二、逆向开发_Cycript

      本文链接:https://www.haomeiwen.com/subject/sihmcltx.html