在定位某些crash问题的时候,有时候遇到一些问题很诡异。有时候挂在了系统库里面。这个时候定位crash问题往往是比较头疼的。那么这个时候学会一些汇编知识,利用汇编调试技巧进行调试可能会起到意想不到的效果。 学习汇编语言不只是帮助定位crash而已,学习汇编可以帮助你真正的理解计算机。毕竟CPU上跑 ...
分类:
移动开发 时间:
2018-06-04 00:56:04
阅读次数:
357
寄存器 汇编指令栈栗子 逆向工程绕不过的一部分就是汇编指令的分析。我们iPhone里面用到的是ARM汇编,但是不同的设备也有差异,因CPU的架构不同。 从iPhone5s之后的苹果手机都是ARM64位操作系统了,所以我们直接从ARM64汇编指令开始。 寄存器 我们都知道CPU的典型构成中有寄存器、控 ...
分类:
其他好文 时间:
2018-06-01 00:16:05
阅读次数:
413
函数本质 SP和FP寄存器 sp寄存器在任意时刻会保存我们栈顶的地址. fp寄存器也称为x29寄存器属于通用寄存器,但是在某些时刻我们利用它保存栈底的地址!() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp ARM64里面 对 ...
分类:
其他好文 时间:
2018-05-09 20:53:43
阅读次数:
146
1)从nodejs v4版本开始已经发布了适用于嵌入式的运行环境,我的板子是cortex a5, armv7体系结构的,用最新版node-v9.9.0-linux-armv7l.tar.gz node-v9.9.0-linux-arm64.tar.gz 21-Mar-2018 20:05 17909 ...
分类:
Web程序 时间:
2018-04-04 12:47:29
阅读次数:
705
近期升级了系统到Mac OS X 10.10 而且更新了XCode6.1和iOS 8.1 之前app用到的libmp3lame.a静态库。也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。须要又一次编译 查阅了下资料,依照例如以下步骤,并做了些凝视和修改 1.http://s ...
分类:
移动开发 时间:
2018-02-15 11:54:12
阅读次数:
319
一、前言 同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务。具体的cpu体系结构选择的是ARM64。 二、memory type region的构建 memory ty ...
分类:
系统相关 时间:
2018-02-13 23:41:28
阅读次数:
612
一、前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程。想要了解一些概述性的、框架性的东西可以参考内存初始化文档。 本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARM ...
分类:
移动开发 时间:
2018-02-13 23:37:44
阅读次数:
274
一、前言 Linux VM subsystem在很多场合都需要对TLB进行flush操作,本文希望能够把这个知识点相关的方方面面描述清楚。第二章描述了一些TLB的基本概念,第三章描述了ARM64中TLB的具体硬件实现,第四章描述了linux中和TLB flush相关的软件接口。内核版本依然是4.4. ...
分类:
其他好文 时间:
2018-02-13 23:36:31
阅读次数:
216
1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?、 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手;从源代码的目录结构入手;从kernel的启动过程入手;从大的功能模块入手;等等。不管怎样,每条都是正途(条条大路通罗马嘛)。 而 ...
分类:
系统相关 时间:
2018-02-13 22:55:29
阅读次数:
335
1. 前言 本文将介绍ARM64架构下,Linux kernel和启动有关的配置项。 注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”。 2. K ...
分类:
系统相关 时间:
2018-02-13 22:49:57
阅读次数:
306