
安全攻防
安全攻防,只是兴趣看个视频,随手记录一下而已,不做为专业的指导
一人前行
如果你觉得迷茫,不知道自己的目标是什么,那就读书吧,把自己的工作做到极致!
展开
-
09-安全攻防之LLDB
不错的参考链接:LLDB调试器使用简介LLDB调试利器及高级用法WWDC 2018:效率提升爆表的 Xcode 和 LLDB 调试技巧原创 2020-10-13 18:01:26 · 108 阅读 · 0 评论 -
08-安全攻防之Mach-O文件
一、简介Mach-O是一种文件格式,是mac上可执行文件的格式,类似于windows上的PE格式 (Portable Executable ), linux上的elf格式 (Executable and Linking Format)。我们编写的C、C++、swift、OC,最终编译链接生成Mach-O可执行文件二、mach-o文件类型分为:总共有11种。MH_OBJECT (0x1 )目标文件(.0)静态库文件(.a),静态库文件其实就是多个.o文件的合集.比如支持多种cpu建构的.a原创 2020-10-12 17:30:08 · 480 阅读 · 0 评论 -
07-安全攻防之指针宽度
我们都知道指针在iOS中的长度为8,可以对指针进行加减运算,但是编辑器决定了指针不能做乘法和除法运算!在指针运算过程中,运算结果,由它所指向的数据类型的宽度决定的!换句话说,也就是看去掉一个" * "之后的类型决定的。例如, char * a; 那么a的的指针类型是 char;int * a; 那么a的指针类型是 int;注意:int a, 那么a就是基本数据类型 int,跟指针没有关系。指针的运算问题:char * a;a = (char *)100;a++;那么a的值是原创 2020-10-10 17:52:26 · 210 阅读 · 0 评论 -
06-安全攻防之循环&选择
cmp(Compare)比较指令CMP 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。一般CMP做完判断后会进行跳转,后面通常会跟上B指令!BL 标号:跳转到标号处执行B.GT 标号:比较结果是大于(greater than),执行标号,否则不跳转B.GE 标号:比较结果是大于等于(greater than or equal to),执行标号,否则不跳转B.EQ 标号:比较结果是等于,执行标号,否则不跳转B.HI 标号:比较结果是无符号大于,执行标原创 2020-07-12 09:59:52 · 146 阅读 · 0 评论 -
00-安全攻防之汇编语法
mov指令(传送指令):可以用来修改大部分寄存器的值mov x0,#10、mov x1,#20解读:#表示是立即数, #10,表示立即数为10x0 和 x1 表示 通用寄存器中的x0和x1的位置整体的意思是:将立即数 #10的值放到x0寄存器上;将立即数#20的值放到x1的寄存器上...原创 2020-07-09 09:41:57 · 658 阅读 · 0 评论 -
05-安全攻防之状态寄存器
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同)。这种寄存器在ARM中,被称为状态寄存器就是CPSR(current program status register)寄存器。CPSR和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。而CPSR寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。注:CPSR寄存器是32位的CPSR的低8位(包括I、F、T和M[4:0])称为控制位,程序无法修改,除非CPU运行于特权模原创 2020-07-08 21:53:57 · 485 阅读 · 0 评论 -
04-安全攻防之bl和ret指令
bl指令bl指令也成为跳转指令,执行这个指令之前会做两个操作:将下一条指令的地址放入lr(x30)寄存器转到标号处执行指令ret指令默认使用lr(x30)寄存器的值,通过底层指令提示CPU此处作为下条指令地址! 也就是说,当执行ret指令时,CPU会执行lr(x30)这个寄存器存的内存地址指向的命令。x30寄存器x30寄存器存放的是函数的返回地址.当ret指令执行时刻,会寻找x30寄存器保存的地址值!注意:在函数嵌套调用的时候.需要将x30入栈! 否则会造成死循环。关于内存读写指令原创 2020-07-05 17:00:09 · 1698 阅读 · 0 评论 -
03-安全攻防之寄存器
1.寄存器在CPU中有三大总线:地址总线数据总线控制总线他们对应连接CPU的:寄存器运算器控制器对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制;不同的CPU,寄存器的个数、结构是不相同的。2.通用寄存器ARM64拥有有31个64位的通用寄存器 x0 到 x30,这些寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途);那么w0 到 w28 这些是32位的. 因为64位CPU可以兼容32位.所以可以只使用64位寄存器原创 2020-07-05 14:53:03 · 718 阅读 · 0 评论 -
02-安全攻防之CPU总线的知识小记
每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互。如下图:总线一根根导线的集合总线的分类地址总线数据总线控制总线举个例子:如上图中,内存地址是从0开始, 每个地址代表着该地址在内存存放的数据。CPU通过地址总线,可以定位到内存地址;根据控制总线了解到对该地址的读或者写的操作;根据数据总线,将数据传送过来。地址总线它的宽度决定了CPU的寻址能力8086的地址总线宽度是20,所以寻址能力是1M( 2^20 )怎么理解宽度决定了原创 2020-07-01 11:07:50 · 540 阅读 · 0 评论 -
01-安全攻防之什么是汇编语言
机器语言由0和1 组成的机器指令,例如汇编语言使用助记符代替机器语言。例如在开发过程中,发现使用助记符开发依然很复杂,于是有了高级语言。高级语言例如C/C++/java/oc等我们的代码在终端设备上市的过程如下:汇编语言与机器语言一一对应,每一条机器指令都有与之对应的汇编指令汇编语言可以通过编译得到机器语言,机器语言可以通过反汇编得到汇编语言高级语言可以通过编译得到汇编语言 \ 机器语言,但汇编语言\机器语言几乎不可能还原成高级语言汇编语言的种类.原创 2020-06-28 20:48:46 · 525 阅读 · 0 评论