
ios
文章平均质量分 71
Poison老师
写了十多年代码,也创业了多次,从底层到应用层
展开
-
xcode14安装swift package设置github账户token
登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic)打开xcode点击左上角xcode ->Settings->左下角的+加号-> GitHub->Continue->填写github账号到Account中.复制刚才的token到token中.日期选择永久No expiration。Note名字填写xcode。原创 2023-03-08 13:42:49 · 1640 阅读 · 2 评论 -
pod init错误RuntimeError - [Xcodeproj] Unknown object version
升级xcode以后,经常出现安装第三方pod init错误. 错误原因是 xcode版本太高,cocoapods 版本过低原创 2023-02-06 15:47:12 · 1176 阅读 · 0 评论 -
ios动态库注入把越狱手机上自制的动态库安装到普通手机上
文章目录查看依赖库执行命令查看程序依赖的动态库名字用machoview查看安装insert_dylib查看依赖库先进入app包所在目录执行命令查看程序依赖的动态库名字otool -L 可执行程序名例如:得到5个动态库otool -L testCrackPwdtestCrackPwd: /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current versi原创 2022-04-25 14:29:11 · 8019 阅读 · 0 评论 -
Mac升级以后python3出现错误重新配置的总结
文章目录找不到python重新安装安装xcode命令行工具python print语法错误修改import SocketServer错误找不到python重新安装command not found: python这个需要重新安装python执行命令:brew install python安装xcode命令行工具升级xcode以后,可能会提示重新安装命令行工具按照提示输入命令xcode-select --install安装就行xcode-select --installpython p原创 2022-04-20 15:31:18 · 1836 阅读 · 0 评论 -
ios代码混淆-字符串加密的优点和其他破解方法
程序运行效果这个例子是一个输入密码9527就会登录,否则显示"密码错误,重新输入"代码使用明文字符串的缺点oc代码下面代码是点击登录按钮以后执行判断.- (IBAction)btn1Click:(id)sender { if ([self.tf.text isEqualToString:@"9527"]){ self.label1.text = @"请输入密码"; VC1 *vc = [[VC1 alloc]init]; [self.nav原创 2022-04-15 10:27:19 · 1713 阅读 · 0 评论 -
ios手动代码混淆函数和变量名基本原理和注意事项教程(含demo)
文章目录混淆函数名原理代码例子没混淆的函数名注意事项替换变量名时要把set方法替换自定义的init开头方法代码混淆会会报错,不能混淆系统方法和类名不能混淆xib和storyboard中的变量和方法名不能混淆class-dump导出混淆后的头文件,验证函数和变量已经被混淆demo下载地址混淆函数名原理代码混淆替换函数名的主要原理是用宏定义#define来替换代码里的函数名或者变量民代码例子没混淆的函数名ViewController.h文件#import <UIKit/UIKit.h>@原创 2022-04-09 17:48:24 · 1915 阅读 · 0 评论 -
mac系统使用cmake和ninja快速安装llvm
llvm官网下载地址:git clone https://git.llvm.org/git/llvm.git/原创 2022-04-06 14:30:39 · 5263 阅读 · 0 评论 -
ios逆向tweak中使用MSHookIvar获取原有成员变量和使用自创成员变量的代替方法
文章目录MSHookIvar的作用获取类中原有的成员变量,不可以获取自己创建的成员变量格式如下注意:不可以获取到自己在tweak里创建的成员变量代替方法在hook中使用自创的成员变量本文是我研究了2天最后曲线救国,用文件内的全局变量代替hook代码中自创的成员变量的方法.MSHookIvar只能获取app包中原来就有的成员变量,不能获取自创的成员变量MSHookIvar的作用获取类中原有的成员变量,不可以获取自己创建的成员变量格式如下MSHookIvar<类型>(self,"_成员变量名原创 2022-03-23 17:10:42 · 4285 阅读 · 0 评论 -
把unc0ver.ipa重签名后安装到手机上实现越狱2023年4月15日更新
文章目录生成embedded.mobileprovision证书文件生成新的ipa包使用ios app signer重签名前提,需要自己拥有开发者证书才能重签名uncover.ipa实现越狱使用爱思助手一键越狱以后总提示正在"生成安装包",后来我去了uncover的官网,.下载了ipa包,把uncover.ipa用爱思助手安装到手机上,提示缺少appsync补丁,我试了一下不行.第二种方法提示要安装AltServer,我安装上了,但是提示我所在的team设备安装数已经达到最大.之后有看了一下unco原创 2022-03-22 14:54:14 · 12973 阅读 · 0 评论 -
ios重签名工具ios-app-signer的使用
文章目录下载安装获取embedded.mobileprovision文件制作app包下载安装现在github上下载ios-app-signer下载以后release模式编译一下,然后在product里面show in finder找到iOS App Signer ,然后运行如下图:获取embedded.mobileprovision文件方法是:在xcode里面编译一下,在product里面找到app包的 embedded.mobileprovision ,然后复制进来.具体细节查看我写的这篇文原创 2022-03-21 16:42:15 · 8553 阅读 · 1 评论 -
mac m1使用免费的hopper demo版本和machoView破解修改iphone上的app
先看下破解之前的程序,密码输入错误点击按钮不能进入,只有输入9527才能登录成功如下图,hopper中找到这个tbz跳转的代码使用debugserver给app在这3个地址下断点:计算偏移量(lldb) image list -o -f |grep testCrackPwd[ 0] 0x0000000004374000 /private/var/containers/Bundle/Application/277D073A-C808-4D4B-9A91-5FB238E744FA/testCra原创 2022-03-21 15:07:49 · 6160 阅读 · 0 评论 -
ios手动重签名在非越狱手机上安装自己破解的app
文章目录获取证书方法1:通过登录自己的苹果开发者账号网站获取证书(不推荐)方法2:通过xcode获取证书(推荐,简单)获取证书方法1:通过登录自己的苹果开发者账号网站获取证书(不推荐)建立一个profile,如下图,点击Profiles的加号+然后选择证书类型,这里我选择开发证书 ios App Development 开发证书然后再 App ID里面手动输入*星号,然后点击下面弹出的选项,代表匹配所有app选择弹出的.*选项,然后continue然后选择自己的mac电脑,因为我的付原创 2022-03-21 14:58:51 · 6851 阅读 · 0 评论 -
公钥加密数字签名证书的原理总结
文章目录需要掌握预备知识的原因单向散列函数公钥加密(非对称密钥加密)如果使用对称加密的缺点:中间人攻击数字签名证书需要掌握预备知识的原因这篇文章目的是总结ios 中"证书" 的作用,预备知识如下:单向散列函数公钥加密中间人攻击数字签名证书上述5个知识点按顺序都明白以后,就知道为什么要使用证书了下面举例中:发送者 张三接受者 李四中间人攻击 老黑单向散列函数把一堆数据,经过一定运算变成:固定长度,唯一性,不可逆的数据.固定长度: 比如一个文件有1000多个字节,或者有100M原创 2022-03-18 11:06:15 · 5176 阅读 · 0 评论 -
arm64用debugserver和lldb和hopper调试oc方法
因为普通的oc方法会编译成c++方法,例如下面的test1::会改成objc_msgSend,[vc test1:arg1 :arg2];objc_msgSend(vc,@selector(test1::),arg1,arg2)objc_msgSend的参数:参数1是调用的控制器参数2是方法名参数3是test1函数参数1参数4是test1函数参数2所以在lldb调试方法的时候,寄存器x0,x1表示参数1,参数2.内容如下po $x0. //打印是调用的控制器x/s $x1 //原创 2022-03-11 17:35:38 · 2605 阅读 · 0 评论 -
arm64汇编adrp指令作用和使用举例
文章目录adrp作用举例1举例2adrp作用adrp 寄存器,立即数,作用是把pc寄存器跟立即数按照一定规则计算后赋值给寄存器.举例1adrp x8,1adrp指令是给寄存器赋值.赋值的规则是:先把pc寄存器里的数值先按照16进制表示,后3位清零,再把adrp 右边的立即数,左移3位,也就是在末尾+3个0 .然后让2个结果相加.例如上面的例子pc = 0x0000000104ff6754然后把pc后3位清零 得到0x0000000104ff6000adrp x8,1 右边的立即数原创 2022-03-11 10:13:35 · 20219 阅读 · 0 评论 -
arm64汇编sp fp寄存器叶子函数非叶子函数的栈平衡
文章目录sp 栈顶指针寄存器fp 栈底指针寄存器 (x29)arm64没有push 和 pop操作栈开辟的空间是16的倍数叶子函数的栈平衡非叶子函数的汇编操作栈平衡sp 栈顶指针寄存器这个跟win32的esp一样.始终指向栈顶的地址.编译器可能用sp-偏移量来表示要读写栈的地址fp 栈底指针寄存器 (x29)这个跟 win32的ebp一样,用来指向当前函数的栈底.编译器优惠有时候会用 fp+偏移量 来表示要读写栈的地址,arm64没有push 和 pop操作栈在arm64汇编中没有win32汇编原创 2022-03-10 16:49:09 · 3146 阅读 · 0 评论 -
arm64汇编中orr 和 mov的交替使用
文章目录orr作用是按位或mov的作用orr代替mov使用方法反汇编中,把给某个寄存器赋值用orr 代替movorr作用是按位或按照二进制位来或运算每个位规则如下:1或0 =10或0 = 01或1 =11或任何数都是10或任何数都是任何数mov的作用把右边的值传送到左边寄存器里 mov w8,#0x1f //把1f传入w8orr代替mov使用方法注意下面2条指令作用一样,都是给32位的寄存器w8的赋值成0x1Forr w8,wzr,#0x1fmov w8,#0x1forr是原创 2022-03-10 09:46:48 · 2763 阅读 · 0 评论 -
arm汇编lr pc b bl ret指令函数调用和返回gif动图演示
文章目录pc 寄存器lr寄存器 (x30)ret返回指令bl 跳转指令,带返回b 跳转,不带返回pc 寄存器pc保存着当前指令执行的地址,相当于win32汇编里的eip寄存器lr寄存器 (x30)lr存储函数的返回地址,每次遇到ret返回指令,都会跳转到lr寄存器里保存的地址,这个地址是函数调用的下一条指令,就是应该要执行的指令,cpu遇到ret之后,会把lr赋值给pc,这样cpu了pc里的地址,就是执行函数调用的下一条指令ret返回指令作用是返回,本质上的操作:执行ret之后,会把lr寄存器原创 2022-03-09 16:25:41 · 3832 阅读 · 1 评论 -
arm64汇编wzr和xzr零寄存器和在ios中的调用
wzr是32位的零寄存器,用于给int清零xzr是64位的零寄存器,用于给long清零汇编函数在.h文件中的声明:void fn1(int *a,int *b);oc文件中的调用 int a = 11; long b = 12; fn1(&a, &b); NSLog(@"a=%d,b=%ld",a,b);汇编函数再.s文件中的定义.text.global _fn1//wzr是32位的零寄存器,用于给int清零//xzr是64位的零寄存器,原创 2022-03-08 17:51:34 · 6217 阅读 · 0 评论 -
arm64汇编str和stur和stp指令在ios中调用
str指令作用str r0,[r1] str作用是把左边r0寄存器里的值,存入到 右边[r1]内存地址中str x0,[x1,#0x10] //x->[x1+0x10]#str 在函数中的作用oc代码调用int fn1(int a,int *b); int a = 1; int b = 10; int result = fn1(a,&b);_fn1:str x0,[x1]//把fn1(参数1,参数2) x0里是参数1,把x0的值存入到 x1(参数2的指原创 2022-03-08 17:23:02 · 7336 阅读 · 1 评论 -
arm64汇编ldr和ldur和ldp指令在xcode中传入地址调用方法
文章目录ldr指令的作用arm.h文件中的声明oc文件中的调用ldr指令的作用ldr作用是把 中括号[]中的地址里存的值存入到前面的寄存器中有下面几种格式:LDR R0, [R1] ; R0←[R1]LDR R0,[R1,#4] ;R0←[R1+4]LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4LDR R0,[R1,R2] ;R0←[R1+R2]arm.h文件中的声明#ifndef arm_h#def原创 2022-03-04 17:37:53 · 9794 阅读 · 0 评论 -
arm64汇编b带条件跳转指令和bl跳转带返回ret指令
B 跳转指令b 跳转指令,相当于win32汇编的jmp无条件跳转指令下面代码遇到 label4以后就跳转到label4,然后就返回了_fn2:mov x0,#0x1mov x1,#0x2b label4label3:mov x0 ,1retlabel4:mov x0 , 0ret;执行完这局以后就返回上一层了BL 带返回的跳转指令bl指令跳转以后遇到第一个ret,就会返回到bl的下一条指令继续执行同样这段代码把b换成bl就会遇到执行完label4以后遇到ret,还会跳到b l原创 2022-03-04 15:36:36 · 7130 阅读 · 1 评论 -
使用xcode在ios项目中手写汇编代码函数并且调用汇编函数的方法
文章目录在项目中新建空白文件empty重命名为.s文件新建.h头文件声明方法给别的文件使用在oc代码中调用方法通过lldb 断点调试验证寄存器结果在项目中新建空白文件empty重命名为.s文件如下图在ios app项目中新建文件->other->empty->名字改成test.s下面是2个方法:text和 add,text方法不带入参只简单测试几条mov指令add带入参,测试带2个入参的加法.text的意思是把西面代码放进代码段.因为macho文件,里面的text段就是代码原创 2022-03-03 11:28:01 · 1763 阅读 · 0 评论 -
使用lldb和hopper计算函数地址给运行中的app添加断点
文章目录使用hopper找到你要下断点的macho-o文件里的函数地址的方法通过越狱手机连接上mac,并且进入lldb查看app所有段落和偏移量: -f是完整路径 -o是偏移量在lldb里通过计算后的内存地址设置断点原理讲解:hopper使用hopper找到你要下断点的macho-o文件里的函数地址的方法例如,我通过theos tweek已经在BaseMsgContentViewController控制器里,把所有的方法都添加了打印信息.的TextDidChanged方法下hook了打印的方法下面原创 2022-02-25 16:22:06 · 1734 阅读 · 0 评论 -
ios lldb调试指令汇总(持续更新)
文章目录1.给函数设置断点 breakpoint2.调试指定动态库里的函数 br set -s3. 查看断点列表和序号: br list4. 删除断点 br delete5. 断点失效 br disable6. 断点生效 br enable7. 帮助 help8. 表达式 expression9.函数调用栈 thread backtrace10. 直接执行函数的返回 thread return10. 查看变量源代码级别的调试11.继续 thread continue 相当于xcode的F910.原创 2022-02-24 10:00:54 · 2771 阅读 · 0 评论 -
ios 让debugserver可以调试任意app
文章目录修改debugserver签名修改debugserver签名先从越狱手机上用ifunbox复制 Device\Developer\usr\bin目录下的debugserver 到mac上,然后终端进入mac下的文件目录使用ldid修改签名修改签名可以参考这篇文章ios使用ldid给mach-o文件签名SpringBoard的权限突破沙盒先把签名导出来ldid -e debugserver > debugserver.entitlements双击打开生成的文件 debugser原创 2022-02-21 17:29:47 · 2452 阅读 · 0 评论 -
ios使用theos tweak logify.pl自动hook .h头文件中所有的方法
文章目录配置theos环境变量手动在tweek里打印一个函数的信息使用logify.pl自动生成一个.h文件中的所有函数的打印信息配置theos环境变量theos文件夹下的bin,下有一个logify.pl把这个 theos/bin添加到系统环境变量里,就可以在任意位置使用这个pl文件执行命令open ~/.zshrc添加一行:export PATH="theos的路径/theos/bin:$PATH"然后让环境变量生效source ~/.zshrc手动在tweek里打印一个函数的原创 2022-02-17 15:32:44 · 1307 阅读 · 0 评论 -
ios使用ldid给mach-o文件签名SpringBoard的权限突破沙盒
文章目录使用ldid导出mach-o文件的签名文件.entitlements文件导出SpringBoard的签名文件把SpringBoard的签名文件的权限签名给自己的app中使用ldid导出mach-o文件的签名文件.entitlements文件把xcode 的product 里的app,右键显示包内容,找到里面的mach-o文件.然后用终端打开当前目录,执行下列命令一个>大于号是覆盖,把ldid -e的权限覆盖到右边文件里, 2个大于号>是追加.这里用覆盖一个>ldid -e 文原创 2022-02-17 11:15:23 · 1502 阅读 · 0 评论 -
ios逆向theos tweak删除广告视图的常用思路技巧
文章目录重写 initWithFrame方法,返回nil重写视图属性的set方法 让set方法什么都不执行把数据源模型数组从数据源中删除出去.如果在越狱手机里写一个tweek插件,例如要删除广告视图等,可以用下面方法技巧重写 initWithFrame方法,返回nil把 - (instancetype)initWithFrame:(CGRect)frame方法直接重写成 返回nil,如下- (instancetype)initWithFrame:(CGRect)frame{ return n原创 2022-02-15 15:43:29 · 800 阅读 · 0 评论 -
ios逆向工具 theos tweak多文件使用方法
先在xcode里面写好.h .m的类文件.方便查看格式是否正确在Tweak.x 或者Tweak.xm调用的时候 #import .h头文件.在Makefile 文件中 找到项目名_FILES 后面把所有.m文件 用空格添加进来.可以直接写 具体的.m文件名,也可以用*.m 代表所有.m文件,但是目录层级必须写清楚.Tweak.x 和 Tweak.xm 需要单独写,不能写成 *.x 或者 *.xm否则编译报错.例如下图中,Tweak.x在src目录下 ,Student.h和 Student.m在sr原创 2022-02-11 17:25:06 · 1115 阅读 · 0 评论 -
ios逆向工具tweak logos语法总结
文章目录%hook%hook 后面的类名,是要替换的类名, 里面的 self, 就是这个类self 要使用的方法,如果报错找不到方法名,则要在前面声明这个类有这个方法,语法如下:%new%hook%hook 类名 方法1..方法2..%end%hook 后面的类名,是要替换的类名, 里面的 self, 就是这个类self 要使用的方法,如果报错找不到方法名,则要在前面声明这个类有这个方法,语法如下:@interface 类名 声明的方法@end例如make时候报错如下:Twea原创 2022-02-11 14:14:59 · 1554 阅读 · 0 评论 -
ios逆向工具theos tweak图片资源加载的方法
文章目录建立文件夹加载UIImage调用宏最终简单调用方法建立文件夹首先要在Makefile所在文件夹,新建一个layout 文件夹.这个文件夹里面的目录结构会上传到手机根目录下.加载UIImage在代码里加载图片要从文件位置加载 [UIImage imageWithContentsOfFile:"文件绝对路径")];不能使用 [UIImage imageNamed:""],因为这个是从 asset里面加载调用宏因为一般都把图片放在手机的Library/PreferenceLoader/原创 2022-02-10 14:54:12 · 854 阅读 · 0 评论 -
ios逆向工具theos tweak make编译错误集合
文章目录self无法识别报错链接错误找不到UIKit里的定义的变量或者类self无法识别报错在%hook 后面跟着的类名,就是self,使用self的时候的时候会报错找不到方法.例如:Tweak.x:19:25: error: no visible @interface for 'FindFriendEntryViewController' declares the selector 'numberOfSectionsInTableView:' if ( section == [s原创 2022-02-09 16:17:15 · 1058 阅读 · 0 评论 -
clutch ios脱壳工具安装和使用教程
文章目录下载和安装clutch下载安装到越狱手机上ssh登录到手机上-i指令查看已经安装的app导出文件下载和安装clutch下载github下载地址下载好以后,只要Clutch-2.0.4 这个文件直接把他的改名为clutch,注意c要用小写,因为在ssh输入命令区分大小写,这样在手机上输入命令的时候可以不输入"-2.0.4",直接输入小写的clutch就行了安装到越狱手机上把改名后的可执行文件Clutch复制到连接到mac电脑上的越狱手机里的 目录usr\bin 下,因为在bin目录下就可以原创 2022-02-04 18:51:47 · 3895 阅读 · 0 评论 -
ios逆向工具theos安装和使用tweak替换和卸载
安装brew/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"使用brew安装 ldidbrew install ldid添加环境变量 open ~/.bash_profile在文件里添加一行,新建环境变量THEOS,让这个变量等于你硬盘下存储theos的文件路径,例如我存到下面的路径里,PATH是把theos安装文件夹下的bin当做默认可执行目录,在任意位置都能执行t原创 2022-02-04 18:39:25 · 5303 阅读 · 0 评论 -
git clone --recursive递归下载github出现443子模块无权限下载的解决方法
当你发现用git clone下载的代码里面有文件 .gitmodules 的时候,说明里面还包含了子git库就需要递归下载例如执行了下面指令以后git clone git地址下载好以后,打开里面的文件.gitmodules会看到文件有如下格式的子模块submodule 代表子模名字path代表存储文件夹位置url代表git库下载地址[submodule "vendor/dm.pl"] path = vendor/dm.pl url = https://github.com/the原创 2022-02-04 17:58:21 · 3657 阅读 · 1 评论 -
ios脱壳工具frida使用教程和各种踩坑总结(app store可用脱壳)
@[TOP]越狱手机上安装frida打开手机上的cydia,添加软件源,地址:build.frida.re然后搜索:Frida点击安装更新brew用国内的源:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"会提示你选择一个下载源,我选择了1,中科大安装pythonbrew install python这里提示下面错误:Error: python@3.9:原创 2022-02-03 17:44:17 · 11342 阅读 · 1 评论 -
ios脱壳工具dumpdecrypted安装和使用教程
文章目录安装方法查看app的路径脱壳安装方法github下载地址:dumpdecrypted下载好以后里面只有3个文件d dumpdecrypted.cMakefileREADME进入到这个目录下面,然后在终端执行指令 make ,会自动执行Makefile的内容make然后会生成2个文件:dumpdecrypted.dylibdumpdecrypted.o然后用ifunbox链接越狱手机,把dumpdecrypted.dylib文件复制到var/root文件夹下然后ssh登原创 2022-02-02 15:32:17 · 5075 阅读 · 0 评论 -
xcode没有Products的解决方法
https://www.jianshu.com/p/996124580a7e项目名.xcodeproj右键显示包内容用xcode打开project.pbxproj文件搜索:mainGroup复制 = 后面的数字,粘贴到 productRefGroup = 后面保存文件如下图把上面红框覆盖下面,然后保存文件:...原创 2022-02-02 14:46:15 · 2211 阅读 · 0 评论 -
ios app硬脱壳之前查看加密方式的方法
文章目录查看mach-o文件的加密方式命令行方法查看:machoview查看查看mach-o文件的加密方式首先打开找到mach-o文件.可以从我写的这篇文章中找到导出mach-o文件的方法:快速在越狱iphone手机下定位app安装包并且导出的方法命令行方法查看:终端先进入到mach-o所在文件件,然后执行:otool -l 文件名 | grep cryptotool -l是查看所有的load command信息,然后 | grep crypt是查找crypt的信息例如网易云的:oto原创 2022-01-29 17:30:40 · 1453 阅读 · 0 评论