自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Smali语言基础语法

定义、声明、调用Smali数据类型定义:与Java相同,Smali中也有一套数据类型体系,且该体系实质上是同Java一一对照的。示例1:Smali——Java数据类型对照表PS:如上图所示,Smali语言中的数据类型的关键词基本上为Java中同名数据类型的首字母大写,需要着重记忆的例外为:1.long类型的关键词为大写J;2.boolean类型的关键词为大写Z;3.数组的关键词为左半边中括号[;4.object类型(各种类)的关键词为大写L加上该类的全类名路径,路径中的层级用/分割。

2021-07-02 11:23:34 8167 3

原创 X64dbg使用技巧

X64dbg使用技巧前言:各类杂项x64dbg的使用技巧示例1:进出call

2021-06-08 20:25:44 4817

原创 反汇编笔记——对象/数组/链表的汇编形态

对象/数组/链表的汇编形态定义:由高级编程语言构筑的程序中往往会出现大量的对象/数组/链表

2021-06-08 20:16:55 469

原创 反汇编笔记——64位机寄存器

定义:反汇编涉及到的32位——64位系统中,寄存器发生了些微改变(对于16位系统中的各寄存器,在其名前加上e成为eax/ecx代表其为32位寄存器,其中可存放32位数据;在其名前加上r成为rax/rcx代表其为64位寄存器,其中可存放64位数据)示例1:64位系统寄存器汇总PS1:如上图所示,其中‘易失’意味着当使用call指令等指令进行新代码段的调用时,其值有可能发生改变(该性质同16位时代的各寄存器,在call内使用前应当对其进行入栈以保证其内原本存放的数值不发生丢失)PS2:如上图所示

2021-06-05 18:36:20 2428

原创 汇编学习笔记——宏

目录宏宏库宏定义:在程序中为一个代码段起名,而后的程序段中直接通过其名字将该代码断复制。格式:;定义宏名 macro [形参表] ;宏定义体endm;调用宏名 [实参表]示例1:在程序中使用宏PS:如上图所示,宏定义类似高级语言中的函数定义,使用的方式同样与之类似,可在宏定义体中书写任意指令示例2:宏定义与子程序辨析PS1:如上图所示,子程序的的使用和宏的使用实际上差别巨大。子程序的原理为书写一段指令之后将之存储与内存的某一区段,而后.

2021-05-18 16:47:43 2792

原创 汇编学习笔记——外部设备

目录外部设备CMOS RAM芯片外部设备定义:一系列通过主板与CPU连接的外部设备CMOS RAM芯片定义:包含一个实时钟和一个有128个存储单元的RAM存储器,其中存储内部实时钟、系统配置信息、用于开机时配置系统信息的相关程序等。示例1:CMOS RAM芯片概况PS1:如上图所示,CMOS RAM芯片由独立电池供电,即使关机后其内部时钟仍正常工作并且RAM中的信息不会丢失。PS2:该芯片内部有两个端口,地址分别为70h与71h,CPU可通过这两个端口..

2021-04-21 12:53:44 207

原创 汇编学习笔记——伪指令

伪指令定义:没有对应机器码的指令,最终不被CPU所执行,而是由编译器执行的指令。编译器根据伪指令来进行相关的编译工作。示例1:一段汇编程序中的伪指令示例PS:伪指令在debug中直接执行汇编代码是不需要的,但若要将汇编程序交由编译器执行,则是必要的。段定义定义:一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。格式为:段名 segment表示段的开始;段名 ends表示段的结束。示例:完整的汇编程序PS1:一个有意义的汇编程序中至少要有...

2021-04-13 10:48:03 2185

原创 汇编学习笔记——设计与执行

指令执行定义:CPU读取CS:IP指向的地址的数据,并将之解析为汇编指令执行示例1:8086CPU中的指令执行框架PS1:如上图,指令存放在内存中,而CS:IP通过地址加法器组合成的地址指向内存中的一段存储着指令代码的地址段PS2:指令数据被从内存中提出,通过数据总线进入指令缓冲器,最后被执行。示例2:通过DOSBox实际演示指令执行PS1:如上图,当使用t指令时,2000:0000处的mov ax,0123被执行,将寄存器ax中的值改为0123,而后寄存器ip的值自动增加并

2021-04-12 10:48:52 430

原创 汇编学习笔记——寻址与存储

寻址物理地址定义:所有接入电脑的内存件都将被赋予一个独有的编号,这个编号作为CPU访问其时的‘地址’存在,编号由零开始一维延伸,因此所有内存单元构成的存储空间是一个一维的线性空间示例:8086CPU对应的内存PS:除了专用的内存条之外,计算机的显存、各类外接设备的存储器,所有RAM与ROM存储元件都会被统一编址。寻址能力定义:CPU最多能够处理的地址的大小称为其寻址能力。由其一次可处理的数据的位数和地址总线的传输能力共同决定示例:8086CPU是16位结构的CPU,其一.

2021-04-09 11:30:38 605

原创 汇编学习笔记——汇编指令

mov、add指令定义:mov A,B将B中的数据移入A;add A,B将A与B相加的结果存入A示例1:mov与add指令对应到高级编程语言中PS:汇编指令不区分大小写,即MOV等效与mov示例2:使用高低8位寄存器的情况下的指令执行结果PS:最后一条指令中,C5H与93H相加的结果为158,但因为al寄存器只能存储8位数据,因此最高位1因为数据溢出而被舍弃(因使用的是al寄存器进行独立运算,故该进位不会进入ah寄存器中)...

2021-04-09 10:12:51 4754 1

原创 汇编学习笔记——寄存器

寄存器定义:CPU内部用于信息存储的单元示例:8086CPU中有14个寄存器PS1:8086CPU中所有的寄存器都是16位(16b)的,可以存放两个字节(2B)PS2:寄存器的大小与CPU的操作位数与CPU对应的字长相同,对于8086CPU,其寄存器大小、操作位数与字长皆为16位通用寄存器定义:可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果的寄存器示例:8086CPU中的AX寄存器PS:以上为在AX寄存器中存储4E20H(01001110001000.

2021-04-09 09:41:18 488

原创 学习笔记---高等数学前置知识---三角函数

三角函数定义:在直角三角形中,当平面上的三点A、B、C的连线,AB、AC、BC,构成一个直角三角形,其中∠ACB为直角。对∠BAC而言,对边(opposite)a=BC、斜边(hypotenuse)c=AB、邻边(adjacent)b=AC,则存在以下关系:单位圆图像:注:如图,以上单位圆(即以原点为圆心,半径为1的圆)上的各个点的x坐标为当前角度的余弦

2017-06-20 23:25:39 1448

原创 学习笔记---高等数学前置知识---数列、排列组合、解不等式

数列等差(a1即首项,d即公差,n即项数)通项公式:前n项和公式:或等比(a1即首项,q即公比,n即项数)通项公式:求和公式:附:裂项公式常在计算数列和时用于裂项相消法例:1/(1*3)+1/(2*4)+1/(3*5)+...+1/[n(n+2)]=1/2(1

2017-06-16 16:27:55 3135

原创 学习笔记---高等数学前置知识---一元二次方程、一元二次函数、指数、对数

一元二次方程形态:ax²+bx+c=0   (a≠0)求根公式:x=(-b±(b²-4ac)^(1/2))/(2a)当b²-4ac>0时有两个不相等的实根当b²-4ac=0时有两个相同的实根当b²-4ac(虚根)注:在正式学习高数之前,对于复数只需要知道i²=-1即可韦达定理(x1、x2为方程的两个根):x1+x2=-(b/a),x1

2017-06-10 18:42:06 4519 1

原创 学习笔记---高等数学前置知识---约分、通分

约分定理:分子分母同时乘/除一个非零数之后,分式的值不变。例:ab/(a^2b-ab^2)=ab/(ab(a-b))=1/(a-b)注:在进行约分之前,应优先对分子和分母进行因式分解。通分定理:同分母的分式相加/减,则分母不变分子相加/减例:a/2b+b/3a^2+c/4ab=(6a^3)/((12a^

2017-06-09 21:34:51 3062

原创 学习笔记---高等数学前置知识---乘法公式与因式分解

乘法公式平方差公式:算式①:a^2-b^2=(a+b)(a-b).完全平方公式:算式①:a^2+2ab+b^2=(a+b)^2.算式②:a^2-2ab+b^2=(a-2)^2.算式③:(a+b+c)^2=a^2+b^2+c^2+2(ab+ac+bc).算式④:(a-b+c)^2=a^2+b^2+c^2+2(-ab+ac-bc).算式⑤:(a+b)^3

2017-06-09 16:03:02 2449

原创 学习笔记---文件基础

概述文件读写读/写指定格式以字符为单位从文件读入fscanf(文件指针,格式字符串,输入表列);int fgetc(FILE *fp);写到文件中fprintf(文件指针,格式字符串,输出表列);int fputc(int ch,FILE *fp);概念:指存储在外部介质上的数据

2017-06-08 21:40:50 1275

原创 学习笔记---位运算

位运算位运算符优先级运算符功能结合方式2~按位取反由左向右5>左移   右移由左向右8&按位与由左向右9^按位异或由左向右10|按位或由左向右左移、右移运算符:运算规则:将变量的二进制

2017-05-02 20:30:07 567

原创 学习笔记---枚举类型、联合体、自定义类型

枚举类型定义:将变量的值一一列举出来,变量的值只能在列举出来的值的范围内的数据类型。作用:使用户能够自己定义标识符表示变量的值。(类似宏定义中定义常量的作用,但枚举类型是批量的,整合的。且在代码中而非编译中执行的)语法:声明:enum 枚举类型名 {枚举常量表列};例如:enum Color {red,black,white};则:Color

2017-05-01 19:43:11 381

原创 学习笔记---动态规划

动态规划(多阶段决策)意义:求解决策过程最优化的数学方法基本思想:将待求解的问题分为若干个阶段,即若干个互相联系的子问题,在求解子问题的过程中逐步推导出原问题的解。核心:在求解子问题的过程中,存储子问题的解。注1:动态规划的思想实际上和递归相似。都是通过逐步推导,得到答案。而用它们解题时的核心也都是求出“递推公式”。但动态规划和递归的一大区别是:动态

2017-04-25 10:13:23 394

原创 学习笔记---回溯算法与贪心算法

回溯意义:编程解决问题时,常遇到需要例遍所有可能性来求解问题的情况。此时,回溯将是不错的选择。代码示例:#include #include #include /*这个程序用来测试回溯算法在解决问题中的应用*//*八皇后问题:经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互相攻击( 任意2个皇后不能处于同一行,同一列或是对角

2017-03-12 17:30:20 1009

原创 学习笔记---检索与排序

排序定义:使一组数据有序化的过程分类:比较类算法(冒泡排序法、快速排序法、堆排序法)、非比较类算法(简单计数排序等)快速排序法:简述:1.找序列中的一个数(一般取首元素data[0])作为基数2.首先确定基数在排好序的数组中的位置,将其保存到该位置上(保证比基数小的数都在基数左边,而比基数大的数都在基数右边。则基数就在其该在的位置上了)3

2017-03-05 12:20:09 595

原创 学习笔记---链表

链表链表基础定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。特点:1.结点地址不连续2.用上一结点中的地址,才能找到下一结点结点:定义:组成链表的基本单元组成:用户需要用的实际数据          下一个结点的地址图示:解析:1.每个正方形代表一

2017-02-12 22:25:01 466

原创 学习笔记---结构体

结构体

2017-02-09 19:13:00 652

原创 学习笔记---预处理

预处理(编译预处理)预处理命令:C语言中以符号“#”开头的命令示例:#define...   #include...   #ifdef...含义:1.在对程序进行编译之前,根据预处理命令对程序进行相应处理。2.经过预处理后编译程序才可以对程序进行编译等处理,得到可供执行的目标代码。示意图:解析:如图,源程序经过编译和连接生成可执行文件

2017-02-06 22:01:39 542

原创 学习笔记---递归

递归算法举例:数学归纳法证明一个与自然数n有关的命题P(n),有如下步骤:1.证明当n取第一个值a时命题成立(a对于一般数列取值为0或1)2.假设当n=k(k>=a,k为自然数)时命题成立,证明当n=k+1时命题也成立。例:对于求n的阶乘可分为以上两种思路

2017-02-04 18:14:26 325

原创 学习笔记---大型程序基础

多文件组织概念:当一个完整的程序被存放在多于一个文件中时,称为程序的多文件组织。意义:在设计一个功能复杂的大程序时,为了便于程序的设计和调试,通常将程序分成若干个文件,把实现一个模块的程序或数据放在一个文件中。调用外部函数代码示例:main.c:#include #include int max(int x,int y);//对m

2017-02-02 23:36:08 524

原创 学习笔记---main函数参数-动态存储管理与动态数组

main函数参数常用形式:main(int argc,char *argv[]);参数解析:int argc;   命令行由几部分构成char *argv[];   指针数组,指向各部分的字符串代码示例:#include #include //这个程序用来测试main函数参数int main(int argc,char *argv[]){

2017-01-25 22:46:04 486

原创 学习笔记---多维数组及多级指针的使用

多维数组使用多维数组做函数参数

2017-01-22 23:28:21 1638

原创 习题笔记---蓝桥--170107

第一题:搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木。下面是两种合格的搭法:   0  1 2 3 4 56 7 8 9   0  3 1 7

2017-01-22 20:39:45 3014

原创 学习笔记---二维数组-数组指针-指针数组

二维数组基础使用定义及初始化定义:类型标识符  数组名  [常量表达式] [常量表达式]初始化:分行:例:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};特点:直观,方便。不分行:例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};特点:展现二

2017-01-19 23:41:14 526

原创 学习笔记---字符串提高-库函数的应用与改动

字符串处理库函数字符函数库include 常用字符处理函数函数原型功能返回值int isalnum(int ch);判断ch是否是数字或字母字符返回非零值,否则返回0int isalpha(int ch);判断ch是否是字母如果ch是字母,返回非零值,否则返回0int iscnt

2017-01-17 16:50:27 327

原创 学习笔记---字符串初步

字符串基础: 实质:以'\0'为结束标识的字符数组定义和初始化:char str[]={"I am happy"};或char str[]="I am happy";  字符数组和字符串定义的差别 定义方法 内存中实质存储的元素 解析 char str1[]={'h','a','p','p','y'}; h   a   p   p...

2017-01-17 00:07:37 288

原创 学习笔记---指针法访问数组、数组的实质、数组/指针作为函数参数

指针法访问数组首先,通过一个小程序来初步窥探数组的实质:#include #include /*这个程序用于测试数组的实质*/#define n 5int main(){ int a[n]={123,5,9,11,33}; printf("%d\n",a);//如果直接输出数组名字所代表的值 printf("%x\n",a);//如果用16进制

2016-12-29 19:03:56 914

原创 学习笔记---排序与查找的算法

查找排序

2016-12-28 16:49:54 713

原创 学习笔记---数组初步

数组意义:定义一段连续的内存空间用于保存一组同类型的数据。格式:定义:类型标识符  数组名 [常量表达式];注1:同一个数组的每一个元素都必须属于同一数据类型。注2:一个数组在内存中占用一片连续的存储单元。注3:当定义数组时,中括号内的常量表达式换成变量时,数组的大小将变成动态的。但这种定义方法是C99中新增的,在C89中不被允许。引用:数组名

2016-12-26 19:14:05 505

原创 学习笔记---库函数

C语言中的库函数函数库:概述:函数库是由系统建立的具有一定功能的函数的集合详解:1.库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息。(目标代码以二进制保存,调用时可以直接运行,不需要额外编译。)2.用户也可以根据自己的需要建立自己的用户函数库库函数:概述:存放在函数库中的函数详解:1.库函数明确定义了功能、参数和返回值(函数三

2016-12-22 15:54:53 656

原创 学习笔记---变量的类型

变量的类型程序对内存的使用:变量的存储类别分为:自动的(auto)寄存器的(register)外部的(extern)静态的(static)自动变量(auto variable)例如:int f(int a){ auto int b,c=3;//b和c为整型的自动变量}存储位置:动态数据区特性:在定义时自

2016-12-21 19:39:13 625

原创 学习笔记---全局与局部变量

变量类型由变量作用域划分,变量分为全局变量和局部变量变量作用域含义:变量的有效范围全局变量(全程变量)定义:在函数外定义的变量作用域:从定义变量的位置到本源文件结束注:作用域是从变量定义的位置开始的!在变量定义前即使是全局变量也无法被调用局部变量定义:在函数/复合语句内部定义的变量作用域:从定义的位置到函数/复合语句结束

2016-12-21 17:58:59 794

原创 学习笔记---自定义函数提高---2

自定义函数提高第二部分函数原型:函数声明的形式函数原型与函数定义的一致:1.返回值类型一致2.函数名一致3.参数个数一致4.参数类型一致5.参数顺序一致示例://以下的函数声明方式是等价的float max(float,float);float max(float x,float y);float max(floa

2016-12-21 16:51:05 339

空空如也

空空如也

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

TA关注的人

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