IOS逆向
文章平均质量分 87
1、快速上手部分:基本概念、环境搭建、常用逆向分析工具的原理及使用(Cliclick、cycript)
2、正向知识储备:类的结构、app签名、Mach-o、hook
3、案例实战:ASO
4、安全保护:网络加密传输、动态保护、代码混淆
iOS逆向
华为云云享专家认证|阿里云开发社区博客专家,定期分享Java、iOS资讯(包括基础知识储备)、小程序开发与运营、阅读与写作。只为你呈现有价值的信息,专注于移动端技术研究领域。
展开
-
iOS AppStore Search optimize【 ASO项目使用的技术】目录(持续更新)
文章目录引言I、hook CFUserNotificationCreat 截取Header 部分信息、Message内容 进行任务处理1.1 监听CFUserNotificationCreate 进行处理连接状态1.2 下载app的时候,验证码的打码流程处理1.2.1 SBUserNotificationAlert1.2.2 CFUserNotificationCreatII 、电池状态监控III、 切换和控制Wi-FiIV、 数据清理引言原文:https://kunnan.blog.csdn.n原创 2021-03-11 10:36:32 · 63479 阅读 · 4 评论 -
iOS逆向专栏总目录(持续更新)
文章目录引言I、概述1.1 基本概念1.2 环境搭建1.3 常用逆向分析工具的原理及使用1.4 正向知识储备II iOS逆向进阶2.1.2 模拟鼠标点击2.1.3 LUA2.1.4 分析网络数据包2.1.5 日志分析III、案例实战3.1 ASOIV、 安全保护4.1 脱敏规范4.2 接口安全4.2.1 接口安全设计的Checklist引言欢迎大家来到#公众号:iOS逆向的《iOS应用逆向与安全》专栏本文列出学习大纲,同时也可作为大家学习《iOS应用逆向与安全》专栏的索引。文中的蓝字都是原创 2021-01-16 16:44:21 · 21262 阅读 · 4 评论 -
iOS小技能:模拟鼠标点击(针对Mac)
文章目录前言I、安装方式II 使用方式2.1 获取位置的坐标2.2 点击指定位置坐标2.3 坐标系see also前言本文的例子是定时点击特定位置,来点击保证Mac永远处于活跃状态,达到mac永不不关闭屏幕的目的先来了解下安装和使用方法I、安装方式Homebrew包管理器 : brew install cliclick下载安装包 https://www.bluem.net/en/projects/cliclick/ 自己编译源码II 使用方式2.1 获取位置的坐标打印当原创 2020-10-07 14:14:46 · 8000 阅读 · 3 评论 -
iOS安全之敏感逻辑的保护方案:1、把函数名隐藏在结构体里,以函数指针成员的形式存储2、使用宏进行替换字符串
// Created by devzkn on 18/09/2017.// Copyright © 2017. All rights reserved.//#import <Foundation/Foundation.h>@interface KNUtil : NSObject/** 把函数名隐藏在结构体里,以函数指针成员的形式存储。 编译后,只留了下地址,去掉了名字和参数表,提高了逆向成原创 2017-09-19 11:46:42 · 11099 阅读 · 1 评论 -
iOS逆向小知识:批量部署插件(搭建私有Cydia源)
文章目录前言I、 Cydia源服务器搭建1.1 利用 bzip2 生成 Cydia 可以识别的文件格式,并放入特定目录作为仓库供下载使用1.2 开启HTTPServer1.3 将自己的源地址添加到cyida 中II、 知识补充2.1 文件目录功能解释2.2 deb包的执行脚本2.3 tweak的两种发布方式III、其他例子IV、 see also前言有一天你修改了tweak插件,想更新到你管理的100台iPhone机器,就会觉得平常的安装方式make package install 、dpkg -原创 2017-10-25 17:34:19 · 26846 阅读 · 0 评论 -
Mac小技能:以管理员身份运行app
配置bash的时候,采用~/.bash_profile;配置zsh的时候,采用open ~/.zshrc。原理: sudo命令允许使用root权限打开应用程序,但是它需要到达应用程序包里的可执行文件。原因:quickq app需要管理员身份运行app,去修改一些系统配置,比如修改文件。背景:升级Mac系统,导致一些app需要管理员身份运行,否则报错。Bash Shell 利用Alias 简化命令名称: 修改。案例: QuickQ在Mac新系统的正常使用。在~/.zshrc 引用bash的配置。原创 2024-03-07 18:33:10 · 4682 阅读 · 0 评论 -
iOS小技能:RSA签名算法和加密算法的实现
例子2: 当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。例子3: 报文传输采用RSA非对称加密的方式进行签名及加密,签名和密文都为base64编码。加密算法: “RSA/ECB/PKCS1Padding”, 公钥进行加密;例子1:请求参数按照ASCII码从小到大排序、拼接、md5加密(采用递归的方式进行实现)PrivateKey是自己的私钥, 自己的公钥给通信对方.PublicKey是对方的公钥, 对方的私钥在对方那边。原创 2022-09-15 10:34:08 · 1484 阅读 · 0 评论 -
iOS小技能:RSA签名、验签、加密、解密的原理
对于明文x ,用公钥 (n,e) 对x 加密的过程,就是将x 转换成数字(字符串的话取其 ASCII码、base64b编码或者 unicode 值),然后通过幂取模计算出密文y。最典型的问题就是如何同步这个密钥,同步过程如果在公网上,不进行加密是可以抓包拿到的,那么这里就遇到了要对密钥加密的问题。数论知识:给出两个素数,很容易将它们相乘,然而给出它们的乘积,想得到这两个素数就显得尤为困难。RSA是最有名的非对称加密算法,公钥和私钥之间是基于数论知识生成的。通常公钥是公开的,可能同时多人持有。原创 2022-09-06 17:58:49 · 1469 阅读 · 1 评论 -
iOS小技能:截获分析网络数据包( tcpdump 、Wireshark的原理和基本使用 、使用Charles联调测试)
抓取http/https的,建议使用Charles;如果是socket,推荐使用Wireshark。原创 2022-08-30 17:08:41 · 1843 阅读 · 0 评论 -
iOS小技能:安全措施
从上述 MACF 架构中我们知道,要想在 iOS 实现代码签名机制,就需要自己提供一个验证代码签名的策略,然后注册相关 hook,这个工作由AppleMobileFileIntegrity.kext完成。在主体访问客体时,MACF 会调用所有的安全策略,只有当所有的安全策略均表示同意,MACF 才会授权这次访问。在具体实现中,每次 MACF 均会检查是否有策略 hook 了 sycall/mach trap,如果是,那么就会拉起这个策略,由该策略判断允许还是阻止继续执行。...............原创 2022-08-29 10:39:44 · 1399 阅读 · 0 评论 -
iOS小技能:__attribute__的应用
LLVM和其他 GCC 特性一样,Clang 支持了 attribute, 还加入了一小部分扩展特性。语法格式为:hook 函数,进行反反调试。自定义打印方法:用真正的方法替换去拦截 NSLog 的功能(),使用 进行实现,extern进行申明公共方法。1.2 对格式化字符串进行类型检查表明一些函数参数应该是非空的指针确保线程在应用整个生命周期内都能一直运行: AFNetworking 在网络请求线程的入口使用 noreturn 属性,用于网络请求的 NSThread。原创 2022-06-14 17:10:51 · 1042 阅读 · 0 评论 -
iOS小技能:动态地给类添加新的方法、实例变量、属性。( 对已经存在的类在扩展中添加自定义的属性)
它既可以为类添加方法,也可以添加实例(属性)添加新的实例变量的例子:利用 runtime 编程知识: objc_setAssociatedObject 和 objc_getAssociatedObject // // Teacher+Profession.m // #import "Teacher+Profession.h" #import c..........................................原创 2017-09-19 18:12:08 · 11625 阅读 · 0 评论 -
ASO小技能:自动输入搜索框文本
文章目录引言I 自动输入搜索框文本的核心实现1.1 切换到搜索tabbar1.2 获取搜索界面的控制器1.3 自动输入搜索框文本引言应用场景:自动输入关键词,比如app的名称进行应用搜索实现方式:本文是分析app代码, hook对应代码实现, 完全没有用模拟点击进行实现。模拟点击的好处是降低难度了,但是需要适配各种屏幕,除非你用固定机型。这两种方式各有各的好,模拟点击比较通用,客户可以手动干预。分析代码也可以做到比较精准。比如想开发一个根据坐标来判断当前点击的是文本框的通用函数原创 2022-03-09 15:04:05 · 2530 阅读 · 0 评论 -
ASO小技能:使用JsHook来替代模拟触碰
文章目录引言I 核心参考代码1.1 获取任务注入AppStore1.2 hook `evaluateScript:withSourceURL`1.3 通过js执行任务引言当还有人还在问我关于PTFTouch的开源触碰相关问题的时候,我通常会让他换个思路解决问题,即使用JsHook来替代模拟触碰。I 核心参考代码1.1 获取任务注入AppStoreNSDictionary* Task = nil; NSString* identifier = [[NSBundle mainBundl原创 2022-03-08 15:43:19 · 3524 阅读 · 1 评论 -
iOS小技能:分析dyld的信息
文章目录引言I 查看和分析二进制信息1.1 查看Mach-O文件的签名信息1.2 通过 otool 找到所需加载的库1.3 通过DYLD_PRINT_LIBRARIES变量打印什么库被加载了1.4 越狱检测II 符号表2.1 懒加载和非懒加载see also引言dylb 的加载流程I 查看和分析二进制信息1.1 查看Mach-O文件的签名信息使用jtool 获取sig/entitlements➜ ~ jtool -arch arm64 -v –sig tmp.arm64➜ ~ jtoo原创 2022-01-22 16:56:12 · 2539 阅读 · 0 评论 -
iOS小技能: Target-Action设计模式的运用
前言Target-Action,也叫“目标-动作”模式,即当某个事件发生的时候,调用特定对象的特定方法。“特定对象”就是Target,“特定方法”就是Action。Target-Action模式主要包含两个部分:Target(对象):接收消息的对象。Action(方法):用于表示需要调用的方法。see alsoiOS 使用代码触发button的点击事件:【 [btn sendActionsForControlEvents:UIControlEventTouchUpInside];】及教你找原创 2020-08-15 09:49:14 · 11647 阅读 · 0 评论 -
iOS小技能:逆向工具hopper的使用
文章目录引言I 、基础操作1.1 修改汇编代码1.2 逻辑图的查看1.3 伪代码的查看II、交叉引用的查看2.1 CODE XREF2.2 DATA XREFsee also引言I 、基础操作1.1 修改汇编代码Hopper的功能是非常强大的,在Hopper中你可以对ARM指令进行修改,并且生成一个新的可执行文件使用快捷键option+a直接修改汇编代码:(在菜单Modify - Assemble Instruction 进行汇编代码的修改)1.2 逻辑图的查看Hopper会根据A原创 2021-05-14 14:57:02 · 2922 阅读 · 0 评论 -
How can you catch a process that is about to be launched, if you don’t know the PID yet?
文章目录引言I、Attaching with LLDB1.1 debugserver1.2 Attaching to an existing process1.3 Attaching to a future process引言I、Attaching with LLDB1.1 debugserverprogram named debugserver (found in Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/) is r原创 2021-05-14 14:08:40 · 1961 阅读 · 5 评论 -
iOS 自定义cell模块【入库单详情】:左侧标题,右侧内容(支持多行显示)、可以灵活控制是否显示箭头
前言例子1 :标题为左侧,内容为右侧(支持多行)例子2:标题为上行,内容为下行例子例子1: 左侧标题,右侧内容。支持多行显示用法VC: 模型构建 self.viewModel.dataArray4BasciInfo = [NSMutableArray array]; ERPStockInOrderDto *model = self.viewModel.model; [self.viewModel.dataArray4BasciInfo原创 2020-05-18 18:19:01 · 11141 阅读 · 0 评论 -
iOS AppStore Search optimize【 ASO项目使用的技术】之 Inter process Communication By Rrocketbootstrap
文章目录引言I 、基于Rrocketbootstrap的封装Message工具类进行进程间的消息通信II 、去掉对rocketbootstrap的Depends依赖see also引言应用场景:进程的通信发现vpn状态异常, 尝试关闭pppd修正#define DPost(cmd,...) [Message postMsg:@[cmd,##__VA_ARGS__] toCenter:DaemonServerKey error:nil] DPost(@"kill"原创 2021-03-12 14:34:22 · 1780 阅读 · 0 评论 -
ASO小知识:tweak去掉对rocketbootstrap的Depends依赖
文章目录引言I、去掉对rocketbootstrap的Depends依赖1.1 研究 rocketbootstrap的deb包的脚本 postinst、prerm1.2 方案1.3 完整的demoII、问题汇总2.1 dpkg -r com.rpetrich.rocketbootstrap 失败III、rocketbootstrap 安装过程分析3.1 一个简单的方式研究你刚刚安装一个tweak或者deb 包之后,系统最近访问的文件see laso引言本文的目的,是想在自己的deb 自带rocketb原创 2021-03-12 14:09:07 · 1673 阅读 · 0 评论 -
iOS AppStore Search optimize【 ASO项目使用的技术】之设备信息的修改
文章目录引言I 、原理II、 HookingMGCopyAnswer by `MSFindSymbol`2.1 capstoneHook642.2 capstoneHook322.3 disassemble MGCopyAnswer and locate the subroutine for hookingIII、 针对使用capstone 进行hook 动态库libMobileGestalt.dylib修改设备类型的时 ,有些属性是失效的解决方案IV、 修改设备信息的例子V、 获取设备信息的例子引原创 2021-03-11 11:52:48 · 2341 阅读 · 2 评论 -
iOS AppStore Search optimize【 ASO项目使用的技术】之切换IP(基于CFRunLoopDoSources0自定义Operation执行切换IP任务)
前言项目描述1、下载流程:清理进程和数据(包括keychain及修改设备信息)、切换IP、登录appID、打开App Store、在App Store搜索应用、下载并安装app(打码)、注销app ID、关闭App Store、卸载app2、 评论流程:在下载流程的基础上进行评论————————————————版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn原创 2021-03-10 14:47:53 · 2911 阅读 · 6 评论 -
iOS AppStore Search optimize【 ASO项目使用的技术】之整体项目技术介绍
文章目录引言I、项目技术介绍1.1 下载app的时候,验证码的打码流程处理1.1.1 SBUserNotificationAlert1.1.2 CFUserNotificationCreat1.2 设备信息的修改1.2.1 HookingMGCopyAnswer by `MSFindSymbol`1.2.1.1 capstoneHook641.2.1.2 capstoneHook321.2.2 disassemble MGCopyAnswer and locate the subroutine for原创 2021-02-08 16:43:49 · 1417 阅读 · 2 评论 -
iOS小技能:使用正则表达式对聊天记录的关键词进行监控
前言在UITextField的代理里面利用正则表达式实现输入限制shouldChangeCharactersInRange/** 限制UITextField只能输入金额的正则表达式 @param textField <#textField description#> @param range <#range description#> @param strin...原创 2019-05-13 11:05:12 · 11272 阅读 · 0 评论 -
iOS逆向小知识:自动连接特定Wi-Fi来解决ASO机刷网络不稳定问题
文章目录引言I、 方式一: 使用wifiutil工具进行连接Wi-FiII、方式二: 采用MobileWiFi.framework自动连接特定Wi-Fisee also引言推荐采用方式二: 采用MobileWiFi.framework自动连接特定Wi-FiI、 方式一: 使用wifiutil工具进行连接Wi-Fi借助wifiutil 控制Wi-Fi的连接(setupwifi)[%c(SpringBoard) setupwifi];//连接特定Wi-Fi%new + (void) setup原创 2021-01-19 14:31:16 · 1457 阅读 · 0 评论 -
iOS小技能:逆向开发常见问题的解决方案
文章目录引言I、进入安全模式的方式II 、技巧性解决tweak导致的问题引言I、进入安全模式的方式tweak 崩溃主动进入安全模式手动进入安全模式:在关机状态下按睡眠键开机,屏幕亮以后松开睡眠键,按住任意音量键,即可进入安全模式II 、技巧性解决tweak导致的问题使用越狱工具(yalu),重新越狱的时候进行tweak和文件的删除...原创 2021-01-19 14:06:06 · 1335 阅读 · 0 评论 -
iOS安全【敏感信息的脱敏规范】(数据类型包括日志相关、账户订单、个人信息、账户认证、持卡数据)
文章目录前言I、 术语1.0 PBKDF2算法II、脱敏规范see also前言应用场景:商户结算账户信息加密保存,脱敏显示I、 术语1.0 PBKDF2算法通过多次hash来对密码进行加密。原理是通过password和salt进行hash,然后将结果作为salt在与password进行hash,多次重复此过程,生成最终的密文。此过程可能达到上千次,逆向破解的难度太大,破解一个密码的时间可能需要几百年,所以PBKDF2算法是安全的.使用PBKDF2算法时,HASH算法一般选用sha原创 2021-01-08 15:10:56 · 4389 阅读 · 4 评论 -
进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)
文章目录前言I 、方案案例:local socket1.1 基础知识: Socket 通讯过程1.2 serverSocket1.3 clientSocket1.4 完整demosee also前言文章作者文章标题文章链接kunnan进程间的实时通讯blog url如果你对IPC不了解,可以先看下这篇- Inter process Communication登录 iTunes Store 这个输入框的弹出流程是由itunesstored 控制,process:Sp原创 2020-11-11 11:52:18 · 19113 阅读 · 7 评论 -
iOS小技能:使用Safari调试手机WebView请求 & Mac 搭建本地 http 服务(支持自定义站点目录和端口)
iOS逆向分析基础:使用Safari调试手机WebView请求原创 2017-10-02 15:50:53 · 11578 阅读 · 2 评论 -
编译原理之词法分析和语法分析
前言正文词法分析编译器的目的是根据源码生成可以执行的文件,想一步到位完全不靠谱,可以先进行分词处理,那么这就是词法分析要完成的工作了!用正则表达是来描述词法规则是比较简单的,而用状态机进行匹配则是比较迅速的,那么比较重要的就是在他们之间的互相转换:这里有:概念含义原创 2015-11-16 14:41:05 · 11282 阅读 · 0 评论 -
iOS小技能:重签名、打包脚本
一般改变了应用的二进制文件,或者增加、修改了应用里面的资源,应用本身的签名就会被破坏。原创 2020-03-06 09:19:05 · 11781 阅读 · 2 评论 -
Application data storage、Stored Data Protection、Cached and temp data、URL handlers、Binary protection
Application data storage、Stored Data Protection、Cached and temp data、URL handlers、Binary protection原创 2017-07-31 14:36:35 · 11048 阅读 · 0 评论 -
iOS安全保护:【1、数据加密2、代码混淆3、反调试、注入检测、hook检测、越狱检测、签名检测】
iOS安全保护:【1、数据加密2、代码混淆3、反调试、注入检测、hook检测、越狱检测、签名检测】原创 2017-09-19 21:03:32 · 11220 阅读 · 0 评论 -
iOS逆向:【反反调试】针对ptrace、sysctl、syscall,采用hook->判断函数->返回结果(针对越狱环境的hook、非越狱环境的hook、反反调试py脚本)
反反调试:针对ptrace、sysctl、syscall,采用hook函数->判断函数-〉返回结果的流程;hook的方式有越狱环境的hook、非越狱环境的hook在lldb的时候采用python脚本自动在目标函数设置条件断点,在断点的回调中改变对应的寄存器。原创 2017-10-05 15:43:38 · 11149 阅读 · 0 评论 -
iOS动态防护:【Dynamic protection】反调试、反反调试、反注入、hook检测、完整性校验
reloadData [self.viewModel.dataArray removeObject:sender.models]; ``` [tableView reloadData]; // 更新约束 [self.tableView mas_makeConstraints:^(MASConstraintMa...原创 2018-11-29 09:12:40 · 11697 阅读 · 1 评论 -
iOS安全防护:【完整性校验】1、文件完整性(检查文件load command 的修改)2、是否重签名3、bundleIdentifier 等方面入手验证是否程序被修改
从文件完整性(检查文件load command 的修改)、是否重签名、bid 等方面入手验证是否程序被修改原创 2017-08-12 11:15:14 · 12423 阅读 · 0 评论 -
iOS安全:【HookDetection】 1、反注入:获取加载的模块名,判断是否在白名单中; 2 hook检测:method swizzle、符号表替换、inline hook3、完整性校验
brewruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"Please delete these paths and run `brew update`.==> Installation successful!==> Homebrew has enabled anonym原创 2017-08-10 16:31:10 · 11915 阅读 · 1 评论 -
iOS安全:静态混淆【Static obfuscation】1、使用宏进行替换字符串2、解析mach-o中对应的section进行类名和方法名的替换
1.对抗hopper和ida的分析可以修改macho文件的某些偏移量, 让hopper和ida无法分析造成闪退2.对抗class-dump 和工具分析可以方法名类名混淆,混淆方案大致三种1)编译前用脚本批量做宏定义替换(最原始的方案:字符串替换)2)LLVM混淆逻辑混淆(花指令)3)对Mach-O__objc_classname 和 __objc_methname原创 2017-08-25 09:18:08 · 14571 阅读 · 0 评论 -
iOS安全小技能:AntiJailbreak 越狱环境检测、 LLDB脱壳工具(脱壳越狱检测的app)
[self.superview.window addSubview:self.listTableView]; /// 避免被其他子视图遮盖住 [self.superview.window bringSubviewToFront:self.listTableView]; CGRect frame = CGRectMake(CGRectGetMinX(self.frame), C原创 2017-08-23 17:55:45 · 11821 阅读 · 1 评论