文章目录

  • %hook
    • %hook 后面的类名,是要替换的类名, 里面的 self, 就是这个类
    • self 要使用的方法,如果报错找不到方法名,则要在前面声明这个类有这个方法,语法如下:
  • %new
  • %orig
  • 发布debug和release版本
  • %c
  • %ctor
  • %dtor
  • 获取原来app里的对象变量MSHookIvar

以%百分号开头的语句,是logos语法,可以在theos tweek里面使用

%hook

%hook 类名
方法1..
方法2..
%end

%hook 后面的类名,是要替换的类名, 里面的 self, 就是这个类

self 要使用的方法,如果报错找不到方法名,则要在前面声明这个类有这个方法,语法如下:

@interface 类名
声明的方法
@end

例如make时候报错如下:

Tweak.x:19:25: error: no visible @interface for 'FindFriendEntryViewController' declares the selector 'numberOfSectionsInTableView:'if  ( section == [self numberOfSectionsInTableView:tableView ] - 1 ){~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方法:
声明self是什么类,在里面加上方法名,如下:

@interface FindFriendEntryViewController
- (long long)numberOfSectionsInTableView:(id)arg1;
@end

方法2:声明这个类,并且说明他遵守哪个协议,因为上面的numberOfSectionsInTableView是在协议UITableViewDataSource里定义的,所以声明self的类遵守了哪个协议,就代表里面有哪些方法.

@interface FindFriendEntryViewController<UITableViewDataSource>
@end

%new

%new
方法名1..
%new
方法名2..
  • %new下面的方法,是自己添加的方法,不是之前类拥有的方法.自定义的方法都要加在 %new 里
  • %new一定要写在%hook 和 %end之间,就是在%hook 类的里面,否则编译报错
  • 自定义的%new方法要在%hook之前声明,格式如下,否则会报错找不到方法

error: no visible @interface for ‘类名’ declares the selector ‘方法名’

@interface 类名
方法名
@end

%orig

调用原来的方法,自动传入原来所有参数,例如原来方法参数是3个,就自动传入3个,不需要手动填写参数列表

%orig;

发布debug和release版本

在cydia中已安装可以查看 是debug版还是release版本
在make之后的mage package决定打包什么版本
debug版本 直接输入make package

make package

release版本 添加debug=0

make package debug=0

%c

下面2行代码等价%c() 等价于 NSClassFromString ,可以返回字符串表示的类对象

NSClassFromString(@"Student")
%c(Student)

%ctor

在动态库被加载的时候调用的方法,注意不要写在%hook和%end之间

%ctor{NSLog(@"ctor执行-------------");
}

%dtor

在app被关闭的时候调用,注意不要写在%hook和%end之间

%dtor{NSLog(@"dtor-------------");
}

获取原来app里的对象变量MSHookIvar

MSHookIvar<变量类型>(要获取的对象, "变量名");

例如下面代码 返回原理的self对象里面的age变量

unsigned int age = MSHookIvar<unsigned int>(self, "age");

ios逆向工具tweak logos语法总结相关推荐

  1. IOS逆向学习-Tweak

    IOS逆向学习-Tweak 1. theos指令及可能遇到问题 2. thes的实战练习 2.1 将桌面的更新数字去掉 2.2. 给微信发现界面增加两行功能 2.2.1 hook代码语法知识 2.2. ...

  2. ios逆向工具MonkeyDev简介

    MonkeyDev简介 虽然是美国的苹果开发的操作系统,但是要论越狱iPhone和逆向分析来说,那国内远胜于米国了,可能是国内很多相关的灰色产业链吧.在之前,我们想动态调试一个没有源码的应用程序,通常 ...

  3. iOS逆向工具-Theos

    阅读此文前,请确保iOS设备已越狱,否则一切都是空谈! 1.环境安装 a.指定xcode(根据自己xcode路径来): sudo xcode-select -s/Applications/Xcode. ...

  4. ios逆向工具Class-dump的安装和导出.h文件的教程

    目录 官网文件安装方法 运行报错 Cannot find offset for address xxx in stringAtAddress: 解决运行报错的版本下载地址: 获取app文件 class ...

  5. iOS逆向(8)-Monkey、Logos

    由于最近微信大佬发飙,罚了红包外挂5000万大洋,这就让人很慌了,别说罚我5000万,5000块我都吃不消.所以笔者决定以后不用微信做例子了.换成优酷了?. 本文会对优酷的设置页面增加一个开启/关闭屏 ...

  6. 2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程——使用theos tweak 注入hook修改游戏执行代码上传动态头像

    2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程--使用theos tweak 注入hook修改游戏执行代码上传动态头像 开篇 需求&最终效果 环境要求与即将使用的 ...

  7. iOS逆向实战与工具使用(微信添加好友自动确认)

    iOS逆向实战与工具使用(微信添加好友自动确认) 原文链接 源码地址 WeChatPlugin-iOS Mac OS 版微信小助手(远程控制.消息防撤回.自动回复.微信多开) 一.前言 本篇主要实现在 ...

  8. iOS逆向 开发工具

    iOS逆向开发交流群 iOS逆向开发所需要的一些工具集合

  9. iOS逆向之脱壳工具creakerXI+,最简单、最适合新手的脱壳工具

    在学习iOS逆向中,脱壳是必备技能之一,在网上看教程有使用 Clutch 和 dumpdecrypted  但是,不知道 是我操作问题,还是手机版本,以及APP版本更新问题 尝试了几次,都无法成功脱壳 ...

  10. ios逆向越狱手机必备工具篇

    1.手机越狱 ps:越狱前用xcode调试手机断点一次.这样手机里就会生成以后debugServer文件. 手机版本ios12.4 https://www.abcydia.com/read-16031 ...

最新文章

  1. 在CentOS7上部署Apache Mesos
  2. 微型计算机的EMC设计视频,干货 | EMC设计有多难,看完这31个电磁兼容标准电路,瞬间懂了...
  3. 如何找出R中加载的软件包版本?
  4. 一款功能强大的IP查询工具
  5. MySQL主从复制原理、半同步操作步骤及原理
  6. 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习,来自STM32神舟系列开发板设计师的总结)
  7. Kubernetes群集的零停机服务器更新
  8. 雷蛇在天猫618大爆发,雷军第二天就找其创始人取经
  9. 网易云课堂Java模拟面试笔记(31-40)
  10. DataGridView的DataGridViewComboBoxColumn列点击后触发其他方法
  11. htc tracker avatar
  12. HashKey TokenGazer | 去中心化身份(DID)研究报告
  13. Linux内核研究系列之可执行文件格式(转)
  14. 致远项目管理SPM系统案例:华仁药业股份有限公司合同管理
  15. php股票量化交易接口有什么优势?
  16. 正则表达式匹配连续出现的单词
  17. 杭电计算机复试面试题库,杭电电子分院历年复试题(整理版)
  18. 基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)
  19. Android Q读写共享目录媒体文件
  20. 论文解读:Correcting Chinese Spelling Errors with Phonetic Pre-training

热门文章

  1. 云计算的未来畅想(五) -- matrix(终篇)
  2. 麻将 java_java麻将游戏算法
  3. 织梦CMS插件合集覆盖几十插件功能采集推送等
  4. 19年清北学堂冬令营游记
  5. JS中点语法和中括号语法区别
  6. b站《史上最全unity3D教程》2-6等ppt笔记3
  7. 通信基站中AAU与RRU的功能和区别是什么?
  8. 云计算 概念 是什么
  9. 计算机网络软件系统是什么结构,计算机软件系统的组成是什么?
  10. python+django+mysql健身房管理系统6yx95