自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 ARM 汇编指令集

1. 跳转指令    跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转:    1) 使用专门的跳转指令。    2) 直接向程序计数器PC 写入跳转地址值。   通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用    MOV  LR,PC     等类似指令,可以保存将来的返回地址值,从

2013-07-31 16:03:16 7549 1

原创 ARM汇编编程规则

1. 基本概念

2013-07-31 11:36:01 4435

原创 GNU ARM 汇编伪指令(Assembler Directives)

1. GNU ARM 汇编快速入门    任何汇编行都是如下结构:[:] [} @ comment[:] [} @ 注释      GNU ARM 汇编中,任何以冒号结尾的都被认为是一个标签,而不一定非要在一行的开始。下面是一个简单的例子,这段汇编程序定义了一个"add"的函数,该函数返回两个参数的和:.section .text, “x”.global add

2013-07-31 10:10:03 7710

原创 使用ptrace向已运行进程中注入.so并执行相关函数

1. 简介    使用ptrace向已运行进程中注入.so并执行相关函数,其中的“注入”二字的真正含义为:此.so被link到已运行进程(以下简称为:目标进程)空间中,从而.so中的函数在目标进程空间中有对应的地址,然后通过此地址便可在目标进程中进行调用。     到底是如何注入的呢?     本文实现方案为:在目标进程中,通过dlopen把需要注入的.so加载到目标进程的空间中。

2013-07-30 17:28:57 18897 7

转载 dlopen中几个flag的区别:RTLD_LAZY RTLD_NOW RTLD_GLOBAL

void *dlopen(const char *filename, int flag);其中flag有:RTLD_LAZY RTLD_NOW RTLD_GLOBAL,其含义分别为:RTLD_LAZY:在dlopen返回前,对于动态库中存在的未定义的变量(如外部变量extern,也可以是函数)不执行解析,就是不解析这个变量的地址。RTLD_NOW:与上面不同,他需要在d

2013-07-30 11:23:40 35924

原创 Android ptrace简介

1. ptrace 本身的实现1.1 ptrace用户态定义见bionic/libc/bionic/ptrace.cextern long __ptrace(int request, pid_t pid, void *addr, void *data);long ptrace(int request, pid_t pid, void * addr, void * data){

2013-07-29 16:27:59 14080 1

转载 Dalvik虚拟机的目录结构

为了挖掘Dalvik虚拟机的秘密,需要仔细分析Dalvik的每一个目录,每一个文件,才能把它的细节了然于胸。下面就开始吧! Android.mk这个文件是虚拟机编译的makefile文件。 dalvikvm这个目录是虚拟机命令行调用入口文件的目录,主要用来解释命令行参数,调用库函数接口等。 dexdump这个目录是生成dex文

2013-07-29 14:11:42 2300

原创 wpa_supplicant与kernel的接口

1. 接口定义wpa_driver_opsstruct wpa_driver_ops { /** Name of the driver interface */ const char *name; /** One line description of the driver interface */ const char *desc; /** * get_bssid -

2013-07-25 10:48:39 10539 2

原创 Android中statfs使用注意事项

1. 问题描述    在Android中初次使用statfs计算出的可用空间总是不对,经仔细析,发现是数据类型的问题。2. 关键数据结构定义见sys/vfs.h/* note: this corresponds to the kernel's statfs64 type */struct statfs { uint32_t f_type; uin

2013-07-17 16:29:07 5793 1

转载 dos2unix批量转换的脚本

在windows平台上使用source insight开发时,常常会有文件格式的问题,我们知道dos2unix可以完成从dos格式到unix格式的转换,但是最好能够有一个现成的批量转换脚本。#!/bin/shforeachd () {  echo $1  for file in $1/*  do    if [ -d $file ]    then     

2013-07-16 17:43:33 2697

原创 IEEE802.11协议基础知识

1. 无线接入过程      STA (工作站)启动初始化、开始正式使用、AP 传送数据幀之前,要经过三个阶段才能接入:      (1) 扫描(SCAN)       (2) 认证(Authentication)       (3) 关联(Association) 1.1 扫描(SCAN)      1) 若无线站点 STA 设成 Ad-hoc (无AP)模式:STA

2013-07-12 10:07:25 25746 3

原创 Linux Wireless子系统初始化

1. cfg80211_initnet/wireless/core.cstatic int __init cfg80211_init(void){ int err; // 注册网络命名空间 err = register_pernet_device(&cfg80211_pernet_ops); if (err) goto out_fail_pernet;

2013-07-11 15:02:27 7080

原创 中断处理“下半部”机制

1. 中断处理的tasklet (小任务)机制中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,Linux内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例如,假设一个数据块已经达到了网线,当中断控制器接受到这个

2013-07-10 09:00:47 18638 3

原创 Linux Wireless架构总结

1.  无线网络驱动(ath9k_htc)     ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,其代码如下:static struct usb_driver ath9k_hif_usb_driver = { .name = KBUILD_MODNAME, .prob

2013-07-08 18:07:03 34790 13

原创 Linux Wireless基础知识

1. 基本概念    • cfg80211:  用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态)    • mac80211: 是一个driver开发者可用于为SoftMAC无线设备写驱动的框架 (Kernel态)    •

2013-07-08 14:30:30 23762 2

原创 Linux--Socket Buffer--Netowrk Devices--Network Drivers

1. ISO参考模型与TCP/IP参考模型2. 在kernel中如何管理网络包(Network Packets)2.1 Socket Buffers       Socket Buffers 由以下两部分组成:       1) Packet data: 它是在网络上传输的数据,其存储位置对应的PDU (Protocol Data Unit)       2)

2013-07-05 14:14:31 7937 1

原创 打印stack信息

1. Kernel态执行dump_stack就可打印stack信息.asmlinkage void __div0(void){ printk("Division by zero in kernel.\n"); dump_stack(); // dump current task stack}

2013-07-04 09:06:45 2974

原创 获取正在显示的activity名称

1. 在AndroidManifest.xml中增加权限2. 实现函数 String getTopActivity() { ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE); List runningTaskInfos = manager.ge

2013-07-03 11:36:37 4230 1

Linux下获取Wifi信号强度和速率

在Linux用户态获取所有WiFi相关信息源码

2017-06-14

空空如也

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

TA关注的人

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