自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rv0p111

学习的脚步

  • 博客(897)
  • 收藏
  • 关注

原创 虚拟内存技术

虚拟内存技术允许执行进程不必完全的在内存当中,这种方案的显著的优点就是程序可以比物理内存大,虚拟内存其实就是把内存抽象成了一个巨大的、统一的存储数组,进而会将用户所看到的逻辑内存与物理内存分开 这种技术是允许程序员不受内存存储的限制,虚拟内存也允许进程很容易地共享文件和地址空间,还会为创建进程提供了有效的机制,但是虚拟内存的实现如果我们使用不当的会会大大地降低其的性能其实指令必须都在...

2018-05-23 16:56:55 1886

原创 汇编-按下A键后,松开就显示全屏的A程序

设置一个新的int 9中断程序,在DOS下,按下A键之后,除非不再松开,如果松开,就显示满屏的Aassume cs:codestack segment db 128 dup(0)stack endscode segment start: mov ax,stack ;设置栈段 mov ss,ax mov sp,128...

2018-05-22 05:29:23 600

原创 在屏幕中间依次显示a-z,按下esc改变显示的颜色

利用int 9 中断程序,在屏幕中间依次显示a-z,按下esc改变显示的颜色 程序如下所示assume cs:codedata segmentdb 128 dup(0)data segmentdw 0,0data endscode segmentstart: mov ax,stack ;设置栈 mov ss,ax mov sp,128 ...

2018-05-22 04:57:31 452

原创 键盘的输入处理过程

其实键盘上的每一个键相当于一个开关,键盘中有一个芯片对键盘上的每一个键的开关状态进行扫描,当我们按下了一个键之后,开关会接通,这个芯片就会去产生一个扫描码,扫描码说明按下的键在键盘的什么位置,然后扫描码会被送入主板相关接口芯片的寄存器当中,这个寄存器的端口地址为60h,也就是说我们可以从中去读取出键盘的输入的扫描码,比如说in al,60h 就是从端口60h读出键盘的输入当我们松开按下键的时候...

2018-05-22 04:34:09 5297

原创 CPU的外中断

CPU其实除了可以执行指令,进行运算之外还可以对外部设备进行控制,能接收它们的输入,向它们进行输出,也就是说CPU除了有运算能力还应该有I/O的能力,就比如说我们按下键盘上的一个键,CPU要对它进行处理,就比如说我们在屏幕上看到的出现的’a’其实就是CPU将从键盘上输入的键所对应的字符送到显示器上的 在PC系统的接口卡和主板上,装有各种接口芯片,这些外设接口芯片的内部是有若干个寄存器的,C...

2018-05-22 01:05:43 1127

原创 访问CMOD RAM 显示当前日期时间

以”年/月/日 时:分:秒”的格式,显示当前的日期、时间” 这里需要注意的是CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元之外,不要向其他的单元写入内容,否则的话就会引起一些系统错误assume cs:code,ds:datadata segment db "YY/MM/DD HH:MM:SS" ;模板格式 db 9,8,7,4,2,0 ;存...

2018-05-20 21:18:07 420

原创 CMOS RAM芯片

在PC机当中,有一个CMOS RAM芯片,我们一般简称为CMOS,这个芯片的特征如下所示 1、包含一个实时钟和一个有128个存储单元的RAM存储器,关机后其内部的实时钟还是可以正常工作的,RAM当中的信息不会丢失2、这个芯片常保存计算机基本启动信息(如日期、时间、启动设置等)的芯片,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设...

2018-05-20 20:41:50 5135

原创 计算机外部寄存器(端口)概念

一般来说各种存储器都和CPU的地址线、数据线、控制线相连,CPU在操控它们的时候都要把它们当作内存来对待,把它们总地会去看做是一个由若干存储单元组成的逻辑存储器,这个逻辑存储器,我们把它称为内存地址空间 在PC机系统当中,和CPU通过总线相连的芯片除了各种的存储器之外,其实还有些其他的芯片,比如说下面三种1、各种接口卡(比如,网卡、显卡)上的接口芯片,它们控制接口卡进行工作2...

2018-05-20 16:27:26 4547

原创 利用中断程序在屏幕2、4、6、8行显示4句英文诗

利用中断程序在屏幕2、4、6、8行显示4句英文诗 这里先介绍一下BIOS当中的int 10h的中断程序,这个中断程序主要是拿来设置光标位置功能的mov ah,2 ;设置光标mov bh,0 ;设置在第0页mov dh,5 ;dh当中放行号mov dl,12 ;dl放列号int 10h 下面我们再看看DOS提供的int 21h中断程序,这个的功能就是在光标位置显示字符...

2018-05-20 13:30:02 427

原创 BIOS和DOS所提供的中断例程

通常在系统板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS中主要是包含了以下几部分内容1、硬件系统的检测和初始化程序2、外部中断和内部中断的中断例程3、用于对硬件设备进行I/O操作的中断例程4、其他和硬件相关的中断例程 操作系统DOS提供了中断例程,其实从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源BIOS和DOS在所提供...

2018-05-18 19:31:40 1375

原创 写一个7ch中断程序去完成显示data段以0结尾字符串

这里我们需要去用到7ch中断程序去完成jmp near ptr s指令的功能,然后用bx向中断程序去传送转移的位移,然后相当于就是去改变了IP寄存器的值assume cs:code,ds:datadata segment db 'conversation',0data endscode segment start:mov ax,cs mov ...

2018-05-18 18:50:42 366

原创 自定义loop指令-在屏幕中间显示80个!

我们需要自己定义一个loop指令,然后在屏幕中间去显示80个!,loop指令其实做的事情就是一个短转移指令做的时候就是(cx)=(cx)-1,如果cx!=0,那么就让(IP)=(IP)+8位位移,所以我们下面需要准备的就是一个是用cx来放循环的次数,然后还有就是用bx来存放位移 程序如下所示assume cs:codecode segment start:mov a...

2018-05-18 18:27:23 531

原创 利用中断程序将小写字母转换为大写字母

下面需要去转换的数据是将conversation转换为大写assume cs:code,ss:stack,ds:datadata segment db 'conversation',0data endsstack segment db 96 dub(0)stack endscode segment start:mov ax,cs ...

2018-05-18 16:04:24 804

原创 利用8086汇编写一个word型数据的平方

问题如下所示 assume cs:codecode segment start: mov ax,cs mov ds,ax mov si,offset sqr ;sqr为si的起始地址 mov cx, offset sqrend-offset sqr ;此处偏移相减sqrend减去sqr处 mov ...

2018-05-18 15:10:32 723

原创 CPU内中断-int引发中断

int指令的格式为int n,其中n为中断类型码,它的功能就是引发中断过程,执行过程如下所示1、取中断类型码n2、标志寄存器入栈,IF=0,TF=03、CS、IP入栈4、(IP)=(n*4),(CS)=(n*4+2),做的就是去执行n号中断的中断处理程序assume cs:codecode segment start:mov ax,0b800h mov ...

2018-05-18 14:13:44 858

原创 lldb+debugserver调试app

这里我们主要做的就是去调试我们的短信app,利用debugserver和lldb调试步骤1、ssh到iPhone2、debugserver -x backboard *:1234 /Applications/MobileSMS.app/MobileSMS 这个就是去启动MobileSMS,并且去开启1234端口,然后去等待任意IP地址的LLDB接入3、在Mac的命令行下去输入/App...

2018-05-18 11:55:51 832

原创 ios下的hook的原理

其实Hook就是一种改变程序执行流程的一种技术的统称,下面就简单的介绍下在ios中的几种Hook的方式1、Method Swizzle利用OC的Runtime特性,动态去改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变的目的。主要用于OC方法。2、fishhook  它是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO...

2018-05-17 22:35:24 1674

原创 MonkeyDev中hook系统NSLog函数

讲道理,利用fishhook进行hook其实就可以了 比如说我们的ViewDidLoad方法当中的方法里面有输出123,456 我们想要对其进行hook- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"123"); NSLog(@"456");}创建一个monkeyDev的项目,然后在里面写入ho...

2018-05-17 12:38:48 2722

原创 内存分配和外部碎片和内部碎片

内存分配其实最为简单的内存分配的方法就是将内存分为多个固定大小的分区,每个分区只能容纳一个进程,所以多道程序的程序数就会受到分区的限制,对于这种方法就是在一个分区空闲的时候就可以从输入队列当中选择一个进程,以便调入到空闲分区,当进程终止时,其分区可以被其他进程所使用,这种方法最开始是被IBM OS/360操作系统使用,当然现在不再使用,因为其的规模庞大,运行缓慢,没有什么人使用在可变分区方...

2018-05-16 15:51:54 3141

原创 进程交换和连续内存分配

进程交换进程需要是需要在内存当中才方便去执行,当然进程也可以暂时的从内存当中交换到备份存储中,这个备份存储通常是磁盘,因为它必须足够的大,以便可以容纳所有用户的内存镜像副本假如有一个CPU调度的算法,将另一进程换入到刚刚释放的内存空间当中,同时CPU调度器可以将时间片分配给其他已在内存中的进程,当每个进程用完时间片,它将与另一进程进行交换这样的交换策略的变种其实可以被用在基于优先级...

2018-05-16 15:12:10 1125

原创 Linux的内核模块

最近学习到了这里,也记录一下内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷...

2018-05-16 14:43:33 1322

原创 49秒的创意设计

在做提醒类的软件的时候,比如说航班延迟和准时分别用两种不同的醒目的颜色,一般都会去选择红色和绿色了,如下所示产品空间的划分这里应该是围绕着第一个用户的发布的主题去讨论的,第一行显示的是第一个用户,然后第二行显示的是第二个用户也就是最后一个发布的用户 这里就是把中间的内容先给收起来,然后看用户需不需要进行查看,让用户自行选择 以及这里的背景是给人一种个性化的感觉,目前QQ...

2018-05-16 01:41:02 227

原创 编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串

编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串程序如下所示assume cs:codecode segmentstart: mov ax,cs ;把当前的cs寄存器的内容给ax mov ds,ax ;ds段中的内容其实就是cs 源地址 mov si,offset do0 ;设置si的偏移因为我们需要拷贝程序到内存...

2018-05-15 13:29:11 2490 1

原创 CPU的单步中断

CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。也就是说如果CPU检测到TF位为1,CPU就会去转去执行1号中断处理程序 其实在我们执行Debug的t命令的时候,就用到了CPU的单步中断,Debug当中提供了单步中断的中断处理程序,在使用t命令之后,Debug会将标志寄存器的TF位设置为1,然后使得CPU工作于单步中断的方式下,也就是说CPU在执...

2018-05-15 13:13:46 1850

原创 CPU的内部的中断

任何一个通用的CPU,比如说8086,都会具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或者内部产生的一种特殊的信息,并且可以立即对所接受到的信息进行处理,这样的信息,我们就称为中断信息,在这里我们主要去讲解CPU内部产生的中断信息1、除法错误:比如说执行div指令产生的除法溢出2、单步执行3、执行into指令(本指令检测OF标志位,当OF=1时,说明已发...

2018-05-15 12:44:33 2905

原创 dsc_extractor的安装

首先我们可以自己去创建文件夹下面,然后去进行安装,安装完成之后编译得到可执行文件就可以了,下面就说一下步骤1、找个目录创建一个文件夹 利用命令行工具输入命令 mkdir dsc_extractor2、进入到这个目录下 cd dsc_extractor3、通过wget进行安装 wget http://opensource.apple.com/tarballs/dyld/dyld-210.2...

2018-05-14 17:57:32 618

原创 分析iPhone的SpringBoard重启实现

首先我们拿到SpringBoard.app的可执行文件,然后进行用IDA进行分析,然后定位了relaunch SpringBoard函数我们在下面可以看到下面调用的是beginIgnoringInteractionEvents方法就是去开始忽略所有用户交互的事件 接着调用hideSpringBoardStatusBar方法去隐藏状态栏 接着我们再去查看这个子程序 看下...

2018-05-14 15:52:20 7523

原创 OpenGL ES实现AGLKView模仿GLKView

首先我们去创建这个一个AGLKView去继承自UIView类,然后我们进行自定义操作,主要就是去模仿GLKView中的定义#import <UIKit/UIKit.h>#import <OpenGLES/ES2/gl.h>#import <OpenGLES/ES2/glext.h&am

2018-05-14 13:09:41 950

原创 汇编利用cmp指令将小写字母转换为大写字母

这里主要是先和0进行比较,如果cx为0了,那么就直接利用jcxz指令直接跳转到ret助理,然后再利用cmp指令去进行和小写a的ASCII码进行比较,比较之后如果是小于就直接再去寻找下一个字符,程序如下所示assume cs:codesg,ds:datasgdatasg segment db "Beginner's All-purpose Symbolic Instruc...

2018-05-13 09:54:24 1072

原创 标志寄存器

在CPU内部中是有一种特殊的寄存器,对于不同的处理机,特殊寄存器的个数和结构都可能不同这个特殊寄存器具有以下3种作用用来存储相关指令的某些执行结果用来为CPU执行相关指令提供了行为依据用来控制CPU的相关工作方式这种特殊的寄存器在8086CPU当中是被称为标志寄存器,在8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字。 8086CPU的标志...

2018-05-13 08:07:15 749

原创 fishhook源码分析

最近也学习了下这个fishhook库,感觉200多行代码就能实现方法的交换确实挺厉害的,下面就进行简单的分析下首先我们先来查看下fishhook.h文件#ifndef fishhook_h#define fishhook_h#include <stddef.h&a

2018-05-12 12:02:46 1555

原创 Mac OS X下权限的SGID和SUID和sticy位

不得不说Mac OS系统真的是Linux有很多相似的地方,Linux中的SGID和SUID和sticy位,在Mac OS下也是有的,下面就简单的介绍下这三个位SUID首先看下SUID,查看su命令的执行权限,su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码,运行SUID位设置的命令或脚本时,其有效UID将变为文件所有者的UID,而不是正在运行它的...

2018-05-12 00:52:17 1113

原创 操作系统死锁概念

在多道程序环境下,多道程序就是是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行,多个进程可能会竞争一定数量的资源,某个进程去申请资源去完成任务,如果这个时候资源不可用的话,那么该进程就会进入等待的状态,如果所申请的资源被其他等待的进程所占有了,那么该等待进程有可能再也无法改变其的状态资源的定义 资源类型有内存空间、CPU周期、文件、I/O设备...

2018-05-11 16:57:33 303

原创 ios-锁和空间和单例知识点

为了保证线程安全,可能会需要进行加锁,常见的锁机制大概有这么几种 NSLock; NSConditionLock; dispatch_semaphore_t; @synchronized (self) { }关于空间的描述1、栈区(stack) 临时变量,局部变量(自动分配内存)2、堆区(heap) alloc new malloc calloc(程...

2018-05-11 14:57:59 321

原创 利用方法交换重写URLWithString方法

系统自带的URLWithString:方法如果我们参数传入的包含有中文,那么url就为空,如果我们想自己定制一个这样的方法,比如说如果通过这个方法调用出来的url为nil的话,就让程序崩溃,那么我们可以在调用URLWithString:方法的过程中里面加一个断言所以我们可以这么做,创建一个NSURL的分类,然后在分类的load方法中去进行方法的交换+(void)load{ /...

2018-05-11 13:20:29 687

原创 ios-利用消息发送机制进行alloc和init的消息发送以及给父类发消息

首先我们先看一下我们平时创建一个对象是这么创建的Person * p = [[Person alloc]init];其实做的就是两件事情,一个就是去调用alloc方法,另一个就是去调用init方法,利用消息发送机制来做的话,其实就是这样子 Person * p1 = objc_msgSend([Person class], sel_registerName("alloc"))...

2018-05-11 07:22:49 339

原创 产品设计之战略层

产品设计之战略层学到的课程,记录还是需要的 对于战略层我们需要去想的是如何去定义产品,我们想要得到什么,用户群体的定位,产品使用在什么地方,产品是什么以及我们需要去清楚的知道产品的目标是什么,也就是说需要去明确我们能提供什么,我们想要去得到什么,对于产品的定义,我们可以从使用人群(目标客户群的选择),主要功能(产品的服务方向),产品特色(与竞争软件的差异化竞争),商业价值(盈...

2018-05-09 23:31:59 3227

原创 动态加载和动态链接库

动态加载 由于之前进程的整个程序和数据必须处于物理内存当中,因此进程的大小受物理内存大小的限制。为了获得更好的内存空间使用率的话,我们可以去使用动态加载。采用动态加载,一个子程序只有在调用的时候才会被加载,所有的子程序都以可重定位的方式保存在磁盘上。主程序装入内存并且去执行,当一个子程序需要调用另一个子程序的时候,调用子程序的时候回先去检查另一个子程序是否已经加载,如果没有的话,就让...

2018-05-09 15:46:48 1881

原创 操作系统内存地址映射

内存管理的机制这里主要是做个知识点的记录,方便以后查看 内存是现代计算机的运行的中心,内存是由很大的一组字或者是字节组成的,每个字或者是字节都是有它们自己的地址,以及CPU会根据程序计数器(PC)的值从内存中提取指令,这些指令可能会引起进一步对特定内存地址的读取和写入在一个典型的指令执行周期当中,首先会从内存中去读取指令。接着这个指令被解码,以及可能需要从内存中读取操作数,在指令...

2018-05-09 13:06:06 4770

原创 产品设计之结构层的设计

结构层的内容、方法、产出物 什么是流程图?如下所示 关于布局设置给人的体验感 以及其实我们在设置产品的时候完全可以根据用户的需求来决定,就比如说用户想邀请自己的朋友一起加入这个app的时候,或者说想要发送给朋友一个消息,想要知道那个朋友是否收到的这条消息的时候有个提醒的时候,这个时候就可以给它弹出一个窗口,是否允许通知的推送,这样的话,大多数用户都会欣然的去点击OK,因...

2018-05-08 21:20:57 2530 1

空空如也

空空如也

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

TA关注的人

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