内存管理(1)基本概念:1.逻辑地址:即代码中的偏移地址+段选择子2.线性地址:通过段选择子从GDT中获取的段基地址+代码中的偏移地址3.物理地址:通过分页机制转换而来的实际地址4.页面无效错误:当程序访问的页面对应的物理页面不存在时,CPU产生此异常5.写时复制:多个进程在共享代码段,数据段时,整...
分类:
系统相关 时间:
2015-07-07 21:11:13
阅读次数:
150
1.[bx]与内存单元 [bx]是指 段地址在DS中,偏移地址在bx中的内存单元2.loop 用于描述循环3.我们定义的描述性符号 "()" 寄存器: (ax/al)表示ax/al寄存器中的内容 段寄存器: ((ds)*16+(bx))表示段地址为ds内容,偏移地址为bx内容的内存单元的内...
分类:
编程语言 时间:
2015-06-30 20:21:35
阅读次数:
167
Linux 0.12 内核管理存储器其分段,用分段的机制把进程间的虚拟地址分隔开。每一个进程都有一张段表LDT。整个系统有一张GDT表。且整个系统仅仅有一个总页表。其地址翻译过程为:程序中给出的32位地址(实际上被看做段内偏移地址),再依据代码段寄存器CS中的16位段选择子,可在GDT或LDT中查找...
分类:
系统相关 时间:
2015-06-28 08:39:56
阅读次数:
223
ARM:常见跳转指令机器码:B:0xEABL:0xEB偏移地址计算过程:(目标地址 - 指令地址 - 8)/ 4 = 偏移// 减8,指令流水造成。// 除4,因为指令定长,存储指令个数差,而不是地址差。完整指令:假设上一步得到的偏移为0x00000C跳转指令为:B则完整指令为:0C 00 00 E...
分类:
其他好文 时间:
2015-06-24 22:20:04
阅读次数:
219
在C语言中,ANSI C标准允许值为0的常量被强制转换成任何一种类型的指针,而且转换结果是一个空指针,即NULL指针,因此对0取指针的操作((type*)0)的结果就是一个类型为type*的NULL指针。 但是如果利用这个NULL指针来访问type类型的成员当然是非法的。
因为&(((type*)0)->field)的意图只不过是计算field字段的地址,C语言编译器根本不生成访问type成员的代码,而仅仅是根据type的内容布局和结构体实例地址在编译期计算这个常量地址,这样就完全避免了通过NULL指针访...
分类:
其他好文 时间:
2015-06-16 16:53:23
阅读次数:
135
汇编语言基础3
一个包含多个段的程序:
ds寄存器一般存放数据段的段地址,cs:ip这两个寄存器一般存放的是代段的具体地址,es 段一个可以使用的临时存放变量的寄存器,SS:SP一般存放的就是栈的具体地址,前者位栈的段地址后者为栈的偏移地址。一般程序都有代码段,数据段,文本段,我们希望CPU 从代码段读取指令,通过使用栈来对数据段的数据进行修改,那么程序的本质就能够体现了。
这个程序...
分类:
编程语言 时间:
2015-06-16 00:00:06
阅读次数:
384
我们利用JDK中的sun.misc.Unsafe来计算下字段的偏移地址,一则验证下之前文章中的结论,再则跟jol输出结果对比下。通过上面的几段代码,我们可以成功获取类中各个字段的偏移地址,这跟jol工具的输出结果和我们的结论是一致的。有了字段的偏移地址,在加上对象的起始地,我们就能够通过Unsafe直接获取字段的值了。...
分类:
编程语言 时间:
2015-06-10 12:18:54
阅读次数:
138
注:本文目的仅为了交流学习之用,切勿商业用途,否则后果自负,本文作者概不负责。
好吧其实不是不小心,是有预谋的。手头上有个别人写的.a库,但不知道其中某个接口是如何实现的,于是想到了破解。丢到IDA里看,发现一些比较可疑的方法名。于是记下函数偏移地址,放到手机上调试。(我有个专门用来调试程序的越狱环境)关于如何在手机上反汇编调试app请点这里。
R0保存了函数的返回值。一步一步调试,并...
分类:
移动开发 时间:
2015-06-09 23:42:43
阅读次数:
4559
CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址。内存单元由2部分组成。8086CPU中,内存地址由以下组成。1:段地址2:偏移地址8086CPU中,有一个DS寄存器地址,通常用来存放数据的段地址。比如我们要读取10000H的单元内容,可以用如下的程序段进行。mov bx,1000Hmo...
分类:
其他好文 时间:
2015-05-28 13:53:43
阅读次数:
182
这周主要学习的是转移指令的相关知识和原理。offset在和汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。jmp是无条件转移指令,可以只修改IP,也可以同时修改CS和IP。CPU在执行jmp指令的时候不需要转移的目的地址,机器码中包含的的是转移的位移。Ret指令用栈中的数据,修改IP的...
分类:
其他好文 时间:
2015-05-28 00:11:38
阅读次数:
222