
embedded
文章平均质量分 86
xianjian_x
kxapiss@163.com
展开
-
基于arm的C++反汇编 基本数据类型
基本数据类型Cpp中的引用常量常量的定义基本数据类型 反汇编一个基本的知识点就是掌握数据类型,包括整形和浮点类型在内存中是如何存放的,这里要知道原码,反码,补码,以及IEEE浮点标准,这部分与处理器架构无关,《C++反汇编与逆向分析技术揭秘》 第二章已经有详细讲解,这里略过。 在此推荐下我曾经写过的一个进制转换的工具 来学习数据类型 。 Cpp中的引用原创 2016-05-20 17:42:22 · 2306 阅读 · 1 评论 -
基于arm的C++反汇编 数组和指针的寻址
数组在函数内数组作为参数数组作为返回值下标寻址和指针寻址下标值为整型常量的寻址下标值为整型变量的寻址下标值为整型表达式的寻址数组越界多维数组存放指针类型数据的数组指向数组的指针变量 虽然数组和指针都是针对地址操作,但它们有许多不同之处。数组是相同数据类型的数 据集合,以线性方式连续存储在内存中;而指针只是一个保存地址值的4字节变量。在使用中,数组名是一个地址常量值,保存数组首元原创 2016-05-24 10:37:22 · 6470 阅读 · 0 评论 -
基于arm的C++反汇编 函数的工作原理
栈帧的形成和关闭各种调用方式的考擦使用 fp或sp寻址函数的参数 与返回值arm指令中立即数存放位置gdbserver 调试环境栈帧的形成和关闭栈在内存中是一块特殊的存储空同, 它的存储原则是“先进后出”, 即最先被存储的数据最后被释放, 汇编过程通常使用 push 指令与 POP指令对栈空间执行数据压入和数据弹出操作。栈结构在内存中占用一段连续的存储空间, 通过sp与 fp这两个栈指针寄原创 2016-05-23 19:04:14 · 7547 阅读 · 0 评论 -
Linux framebuffer显示bmp图片
帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。 framebuffer是LCD对应的一种HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实施的。这些都是由Framebuffer设备驱动来完成的。 帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显示卡,原创 2015-11-23 12:35:13 · 12643 阅读 · 3 评论 -
基于arm的C++反汇编 qemu-arm环境搭建
看雪高手写了在windows 上基于x86架构的 C++ 反汇编分析,但是没有人弄过在linux下基于arm架构的C++反汇编教程,这里尝试分析下,可以看到不管在win下还是linux下,不管基于x86还是基于arm 都遵循同样的C++标准,内存布局都是一样的。 首先第一步搭建环境,为了方便这里不再从头编译而是使用网络上现成的二进制工具,参考Architectures/ARM/HowToQemu1原创 2016-05-20 13:35:55 · 2156 阅读 · 0 评论 -
mips体系堆栈回溯分析与实现
在上家公司做 linux 驱动开发主要基于mips架构,在内核下有一个好玩的函数 dump_stack, 只要调用到这个函数就能把函数的调用栈给打印出来,十分方便,不再需要kgdb断点了。 现在做电视机顶盒开发,各种软硬件平台 arm mips linux ecos 都有,有时候想要获得一个函数从哪里调用来的单凭静态分析根本不行,如果动态运行那就要在每个调用前面加入打印,修改量巨大而且容易出原创 2015-08-28 17:16:16 · 11056 阅读 · 9 评论 -
基于arm的C++反汇编 结构体和类
在C++中,结构体和类都具有构造函数、析构函数和成员函数,两者只有一个区別:结构体的访问控制默认为public,而类的默认访问控制是private。对于C++中的结构体而言, public, private、protected的访问控制都是在编译期进行检査,当越权访问时,编译过程中会检査出此类错误并给予提示。编译成功后,程序在执行的过程中不会在访问控制方面做任 何检査和限制。因此,在反汇编中,C++原创 2016-05-25 21:26:01 · 1968 阅读 · 0 评论 -
linux内核调试环境搭建-2 用busybox搭建
下载linux内核:$cd ~/work/$wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.9.tar.bz2解压$tar -jxvf linux-2.6.35.9.tar.bz2拷贝现有系统的内核配置选项$ cp /boot/config-2.6.35-22-generic .config...原创 2012-11-07 20:57:52 · 7768 阅读 · 2 评论 -
extern 的使用
在一个比较大的工程中有时候需要在多个文件之间共享些全局变量。此时需要在一个文件中定义变量,然后在其它文件中用extern 声明这些全局 变量。比如有两个文件 a.c b.c。在a.c 里面定义变量 int var1.,在b.c里面用extern int var1. 但这样做有时候会导致 编译到 b.c 的时候会提示 全局变量 未定义。把b.c里面的 extern原创 2014-07-15 11:27:51 · 1778 阅读 · 0 评论 -
Volatile相关知识
区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。不懂得volatile内容将会带来灾难。volatile的作用 volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,要求每次直接读值.非常典型的就是寄存器的值可能被人为的从硬件上改变,所以必须要求 要求每次直接读值转载 2013-04-11 17:05:06 · 980 阅读 · 0 评论 -
gcc编译器各种warning 解决方式
gcc 各种 warning 的解决方式原创 2013-05-06 16:24:31 · 12582 阅读 · 0 评论