自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Holothurian

千里之行跬步起、江海之成小流积。有志始知蓬莱近、无为总觉咫尺远。

  • 博客(300)
  • 资源 (2)
  • 收藏
  • 关注

原创 iOS 高级强化汇总

1、iOS 多环境配置2、iOS xcconfig文件配置3、iOS Mach-O文件再解读4、链接与符号表5、全局符号的理解6、导入导出符号与map文件7、iOS Weak Symbol8、iOS strip 与 dead strip9、all_load与Objc与force_load10、iOS编译命令小结11、静态库的理解12、Framework原理探索13、动态库链接image not found问题本质...

2021-09-10 15:55:35 209

原创 Swift进阶汇总

1、Swift编译流程、SIL分析、创建对象分析、类结构探索

2021-05-25 10:54:07 470

原创 7、Flutter项目的SeachPage

首先将微信聊天界面_ChatPageState类的build渲染方法下ListView.builder的itemBuilder实现部分抽离出来,形成一个回调方法,返回item给它.?""),?"",),),?""),),2. 接下来也就是,当当前的index == 0,也就是第一个元素的位置时,我们需要将SearchCell设置其上.也就是起展示作用,点击这个cell会跳转到SearchPage中.进行搜索的相关逻辑响应.

2023-05-05 21:26:01 413 2

原创 6、Flutterr聊天界面&网络请求

3. 接着点击右上角‘编辑’按钮,新建响应内容,类型为Array,一次生成50条4. 点击chat_list左侧添加按钮,新建chat_list中的数据内容,此时用到一个.将数据填上,然后保存.5.接下来,我们想让获取的图像是个随机值,那么参考网站中的生成规则.6.接着回到响应内容这里,通过设置初始值规则,生成随机的图片地址.

2023-05-05 21:06:33 2834

原创 5、Flutter通讯录索引条效果实现

3.然后在ListView.builder中有个controller属性,将我们创建的_scrollController设置给它,此时的_scrollController就相当于代理。4. 接着在IndexBar构造方法调用的地方设置,来到friends_page.dart中.将悬浮检索控件的调用改为。4.来到IndexBar调用处.在回调响应方法中,设置滚动控制器的响应方法。3. 在IndexBar中与拖拽索引控件对应的回调相互联动,设置滚动偏移量。3. 接下来在IndexBar的回调中做逻辑判断处理。

2023-05-05 20:49:41 744 2

原创 4、Flutter项目之我的&通讯录

1、根据微信我的界面UI、导航栏上没有标题.因此删掉Scaffold中设置的AppBar部分.2、由UI效果,选用Stack层叠式布局3、整体划分为相机+头部视图和下边的Cell视图.4、然后先画出一个相机,接着按照Stack布局包含Header+Cell;Cell按照发现界面的设置逻辑,布局出来.

2023-05-05 20:30:57 681

原创 3、Flutter项目搭建

本地资源文件在pubspec.yaml中配置.由无状态组件改为有状态组件,访问属性时需要添加上widget.GestureDetector,用于监听点击事件.点击cell时,我们想要它跳转到下一个界面去.Navigator对象.of获取context,push到下一个界面MaterialPageRoute:一种模式路线,它用平台自适应转换来替换整个屏幕。构造BuildContext返回值对象为:需要跳转到的界面。

2023-05-05 20:18:00 1279

原创 2、Flutter布局和状态管理

布局方面有三种布局方式Row横向Column纵向Stack层级在横向和纵向布局中有主轴和交叉轴的概念Positioned 位置小部件,可以在布局的Children中使用,设置相对布局.Alignment(x,y) 取值范围为 -1.0 ~ 1.0宽高比 AspectRatio状态管理: 所有的界面都是不可变的(无状态的);State是一个状态管理者,可以用来刷新界面,继承于StatefulWidget(描述外观的).当数据发生变化时,通过setState将界面重新渲染.

2023-05-05 19:59:45 621

原创 1、Flutter使用总结(RichText、Container)

注: 当运用Android Studio时、选择安卓模拟器运行项目、如果项目路径有中文名称: 那么运行报错、如果直接在项目路径下,采用终端运行安卓模拟器、可执行如下命令。4、当创建Flutter项目时,FlutterPlugin和Flutter Package的区别在于、9、对上述的ListView使用进行再度封装、创建一个 listview_demo.dart文件。3、当对当前项目做了修改时、在当前运行情况下输入 r、即可执行热重载刷新界面。5、当项目运行卡死时、10、Text文本使用。

2023-05-05 19:52:49 2042 1

原创 Dart语法下

范型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持(类型校验)1、从下面网址找到要用的库2、创建一个pubspec.yaml文件,内容如下name: xxx3、配置dependencies4、运行pub get 获取远程库5、看文档引入库使用我们自定义的库系统内置库Pub包管理系统中的库需要在自己项目根目录下新建一个pubspec.yaml在pubspec.yaml文件,然后配置名称,描述,依赖等信息.然后运行pub get 获取包下载到本地。

2023-05-05 17:05:34 846

原创 Dart语法中

九、Dart中的对象、类、类的创建、构造函数、命名构造函数、类模块化、私有属性、私有方法set、get。Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口.十二、Dart中一个类实现多个接口以及Dart中的Mixins。9.7 类中的getter和setter修饰符的用法.十、Dart中类的静态成员、操作符、类的继承。10.7 Dart类的继承,覆写父类的方法。9.3 Dart中自定义类的默认构造函数。9.4 Dart中自定义类的命名构造函数。

2023-05-05 16:32:28 885

原创 Dart语法上

Flutter之Dart,练习来源于B站视频

2023-05-05 16:16:56 985

原创 path/to/sdkmanager --install “cmdline-tools;latest“

2、选中Android SDK --> SDK Tools --> Android SDK Command-line Tools(latest) --> Apply。执行flutter doctor时、报错Android Studio的命令行工具没有安装& 以及 android-licenses没有同意。1、打开Android Studio -- Tools -- SDK Manager。之类的, 因为同意条款的时候,日志太多,所以把报错覆盖了.没有截图.4、再执行flutter doctor、

2023-05-01 17:40:37 3575

原创 答一道面试题

放弃一个面试很容易、但总要对自己负责.于是花了一天写了一下.记录于此.随便写了个简易的框架,没有定制什么特殊的样式、就让他长这个样子吧。不打算详细说,只不过是拿出三年前自己写的项目摘取了下主要流程.

2023-04-29 20:19:46 92

原创 pod install 报错的坑

Could not find 'ffi' (>= 1.15.0) among 87 total gem(s) (Gem::MissingSpecError)Checked in 'GEM_PATH=/Users/xxx/.gem/ruby/2.6.0:/Library/Ruby/Gems/2.6.0:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0', execute `gem env` fo

2023-04-28 23:10:47 2137

原创 iOS App启动流程

名称区别冷启动启动时,App的进程不在系统里,需要开启新进程。热启动启动时,App的进程还在系统里,不需要开启新进程。App的完整启动流程(冷启动流程)

2023-04-25 11:47:09 794

原创 iOS数据流

在 iOS 开发中,数据流(Data Flow)是指数据在应用程序中的传递和处理过程,包括输入、处理和输出等步骤。数据流的设计和实现对于应用程序的性能和用户体验具有重要的影响。下面介绍 iOS 数据流的常见实现方式和技术。

2023-04-25 11:40:36 532

原创 呼吸灯动画的实现

iOS 呼吸灯动画可以通过 Core Animation 实现。

2023-04-25 11:34:00 458

原创 load和initialize

+load 方法是系统自动调用的,无需手动调用,系统自动为每一个类调用+load方法(如果有),所以也无需手动调用[super load]方法。

2023-04-25 11:24:43 75

原创 Protocol Buffer

ProtoBuf支持三种消息格式:二进制格式、JSON格式和文本格式。其中,二进制格式是最为高效的,它可以将消息序列化为紧凑的二进制格式,从而减少网络传输和存储空间的占用。JSON格式和文本格式则更为易读和易于调试,适用于一些特定的应用场景。

2023-04-25 11:20:36 106

原创 iOS中MVVM的理解

MVVM其实是MVC的变种. MVVM只是帮MVC中的Controller瘦身,把一些逻辑代码和网络请求分离出去.不让Controller处理更多的东西,不会变的臃肿, MVVM和MVC可以根据实际需求进行灵活选择.MVVM在使用当中,通常还会利用双向绑定技术,使得Model变化时,ViewModel会自动更新,而ViewModel变化时,View也会自动变化.OC中可以用RAC(ReactiveCocoa)函数响应式框架来实现响应式编程.Swift中采用RxSwift。

2023-04-25 01:09:29 839

原创 23、iOS逆向防护

反调试拒绝进程附加该函数防护的特点: 程序被Xcode安装运行直接闪退终端附加会失败用户正常启动能运行破解ptrace; 通过fishhook函数勾住ptrace; 判断参数1: 如果是拒绝就直接return反调试sysctl这个函数里面去检查进程状态sysctl(查询信息的数组,数组大小,接受信息结构体指针,结构体大小的指针,和3、4参数一样)在接受的结构体中,kp_proc属性中有一个标记 p_flag;

2023-04-24 18:33:26 1493 1

原创 22、Tweak原理及部分逆向防护

App可以被lldb动态调试,因为App被设备中的debugserver附加,它会跟踪我们的应用进程(trace process), 而这一过程利用的就是ptrace 函数ptrace是系统内核函数,它可以决定应用能否被debugserver附加.如果我们在项目中,调用ptrace函数,将程序设置为拒绝附加,即可对lldb动态调试进行有效的防护.ptrace在iOS系统中,无法直接使用,需要导入头文件ptrace函数的定义:request: 请求ptrace执行的操作。

2023-04-24 18:19:10 1075

原创 21、越狱调试

4.1 Reveal4.2 USB启动debugserver4.3 Xcode 附加程序4.4 debugserver权限问题4.5 class-dump4.6 lldb手动砸壳4.7 Tweak修改系统行为4.8 MonkeyDev搭建Tweak插件

2023-04-24 18:08:16 1837

原创 20、Theos越狱调试Wallet

Cycript越狱手机安装Cycript插件,依赖于adv-cmds插件依附进程,使用cycript -p 进程id/名称导入cy文件将自定义cy文件,放入 /usr/lib/cycript0.9目录中为了不重名,让入com目录中,创建自己组织的文件夹加载时,使用 @import com.组织名称.文件名称theos是一个越狱开发工具包可以创建Tweak项目,动态Hook第三方程序搭建theos插件。

2023-04-24 17:42:22 1220

原创 19、iOS砸壳概述

使用过的砸壳方式有四种,根据防护手段不同、所以有些砸壳方式并不是万能的.

2023-04-24 17:07:45 7714

原创 18、越狱

越狱概述通过破解 : iOS安全启动链的漏洞,拿到iOS的root权限完美越狱:每次系统重新启动,都会再次进入越狱状态非完美越狱:没有完全破解,一般重启后会失去越狱环境OpenSSHSSH是一种网络协议OpenSSH是一款软件SSH登录过程远程主机(服务器)收到用户的登录请求,将自己的公钥发给客户端客户端使用公钥,将自己登录的密码加密发送给服务器远程主机(服务器)使用私钥解密登录密码,如果密码正确,就同意登录中间人攻击。

2023-04-24 16:57:59 1017

原创 17、Logos使用摘要

本篇将讲述如何将WX的设置界面添加两个自定义的UI行: 包含是否启用某功能的开关,以及手速设置.并且如何定位到修改的代码。

2023-04-24 16:48:05 402

原创 24、LLVM编译流程

Clang是LLVM项目中的一个子项目. 它是基于LLVM架构的轻量级编译器,诞生之初是为了替代GCC,提供更快的编译速度. 它是负责编译C、C++、Objective-C语言的编译器,它属于整个LLVM架构中的,编译器前端.对于开发者来说,研究Clang可以给我们带来很多好处.当编译器决定支持多种源语言或多种硬件架构时,LLVM最重要的地方就来了,其他的编译器如GCC, 它方法非常成功,但由于它是作为整体应用程序设计的,因此它们的用途受到了很大的限制.那么在执行这段代码时,它的编译流程具体是如何体现呢?

2023-04-23 12:06:21 839

原创 16、Cycript&Logos

Logos语法其实就是Cydia Substrate框架提供的一组宏定义语法%hook、%end勾住某个类,在一个代码块中直接写需要勾住的方法用于分组: 一般用于不同的系统中做不同的hook内容每一组都需要%ctor()函数初始化通过%init(组名)进行初始化%log输出方法的详细信息(调用者、方法名、方法参数)%orig调用原始方法.可以传递参数,接收返回值%c类似getClass函数,获得一个类对象%new添加某个方法关于xm文件, .xm代表支持OC、C/C++语法。

2023-04-20 12:36:15 323

原创 15、虚拟内存&LLDB高级调试

ASLR(Address Space Layout Randomization): 是一种针对缓存区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的.大部分主流的操作系统已经实现了ASLR

2023-04-20 12:12:27 562

原创 14、lldb调试指令

LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具.标准的lldb提供了一组广泛的命令,旨在与老版本的GDB命令兼容.除了使用标准配置外,还可以很容易地自定义lldb以满足实际需要

2023-04-20 12:02:27 1029 1

原创 13、fishhook原理&Dobby

Dobby原理: 运行时对目标函数的汇编代码替换,修改的是内存中MachO的代码段Dobby替换汇编代码时,对原始函数的调用,会影响栈的拉伸和平衡在真实HOOK场景中,我们拿不到符号名称,只能对地址进行HOOKHOOK地址时,需要加上PAGEZERO和ASLR。

2023-04-20 11:57:10 1297

原创 12、HOOK原理下

如何防护他人Hook:需要保留自己的HOOK方法;如果要使用fishhook做防护,那么需要在framework里边去实现;因为framework里边的load加载会比主工程的代码更快.注入的HOOK代码在framework代码之后,主工程之前.所以要切入这个时机点去做防护

2023-04-20 11:56:25 753

原创 11、HOOK原理上

HOOK,中文译为“挂钩”或“钩子”.在iOS逆向中是指改变程序运行流程的一种技术.通过hook可以让别人的程序执行自己所写的代码. 在逆向中经常使用这种技术重点要了解其原理,这样能够对恶意代码进行有效的防护.

2023-04-20 11:55:50 1056

原创 10、Dyld总结

Dyld: 动态链接器,加载所有的库和可执行文件

2023-04-20 11:55:31 598

原创 9、MachO简介

Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目标代码、动态库的文件格式.作为 a.out格式的替代,MachO提供了更强的扩展性

2023-04-19 17:03:51 703

原创 8、代码注入

一般修改原始的程序,是利用代码注入的方式,注入代码就会选择利用Framework和Dylib等三方库的方式注入.

2023-04-19 17:00:15 484

原创 7、应用重签名

删除插件和带有插件的 .app包(比如Watch)对Frameworks里面的库进行重签名给可执行文件 +x(可执行)权限添加描述文件(新建工程,真机编译得到,而且要运行,将描述文件安装到手机)替换BundleID(info.plist文件. BundleID要和描述文件中的ID保持一致)通过授权文件 (Entitlements)重签 .app包

2023-04-19 16:58:40 1369

原创 iOS逆向汇总

iOS逆向手段系列指引

2023-04-19 16:53:19 399

Mac远程操作Windows Microsoft Remote Desktop Beta.app.zip

macOS Catalina 10.15可用。Mac远程操作Windows工具、安装后打开、输入要远程的已经开了网络和共享的window的ip、输入账号密码、然后即可连接使用。

2019-11-28

iOS崩溃日志分析工具dSYM.zip

dSYM文件分析工具、用于崩溃日志分析、~/资源库/Developer/Xcode/Archives路径下 找到对应的dSYM文件,然后根据崩溃平台的日志信息、根据工具、输入后得出崩溃结果。系统10.15可用、版本1.0.3

2019-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除