自定义博客皮肤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)
  • 收藏
  • 关注

原创 dpkg查看软件包和共享库信息

0x01 查看.so文件是由哪个软件包提供的dpkg -S /usr/lib/libz.so输出如下:zlib1g-dev: /usr/lib/libz.so0x02 查看软件包的详细信息apt-cache show zlib1g-dev输出如下:Description: compression library - development zlib is a library implementing

2016-03-18 19:50:54 2216

原创 可装载内核模块-Loadable Kernel Module (LKM)

0x01 可装载模块分类设备驱动 文件系统 系统调用0x02 版本检查Linux 的迅速发展致使相邻版本的内核之间亦存在较大的差异,即在版本补丁号(Patch Level,即内核版本号的第四位数)相邻的内核之间。为此 Linux 的开发者为了保证内核的稳定,Linux 在加载模块到内核时对模块采用了版本校验机制。1,Invalid module format -> disagrees about

2016-03-15 19:51:10 1638

原创 聚内核与微内核

0x01 聚内核聚内核被实现为运行在单一的地址空间里的单一的进程。因此,这种内核通常以一个静态的二进制文件保存在磁盘中。所以内核的服务都存在并执行于一个大的内核地址空间里。在内核的内部进行通信显得直接了当,因为所有运行在内核态的代码都在相同的地址空间里:内核可以直接调用函数,就像用户空间的应用程序一样。这个模型的支持者们以聚内核的简洁和性能为理由。多大数Unix系统都采用聚内核的设计方法。0x02

2016-03-15 19:42:52 512

原创 查看运行中Linux的内核配置选项

0x01 查看内核配置选项zcat /proc/config.gz 需要开启内核配置项CONFIG_IKCONFIG才会生成这个文件

2016-03-15 19:41:33 2589

原创 软件hack方法(Ollydbg)

1,JE/JNE改为JMP 2,填充NOP 3,改为RETN 4 (4为入参的字节数,为了恢复堆栈,VB中应该是stdcall才会这样) 4,注意修改EAX,是存放函数返回值的地方 5,注意修改ESP,恢复堆栈(stdcall) 6,查找MessageBox调用(inter module calls) 7,查找String调用(All reference strings)

2016-03-14 20:15:55 356

原创 动态链接

0x01 全局偏移表GOTGOT(Global Offset Table) .got位于数据段中,内容是指向全局变量的指针数组0x02 延迟绑定PLTPLT(Procedure Linkage Table) .got.plt位于数据段中,保存函数引用的地址 所有对于外部函数的引用全部被分离出来放到了.got.plt中 .got.plt的前3项具有特殊意义:

2016-03-14 20:00:09 241

原创 可执行文件中和动态链接有关的段section

0x01 .interp内容是一个字符串,保存了动态链接器的路径,如/lib/ld-linux.so.2 有几种查看方式: objdump -s a.out readelf -l a.out | grep interpreter0x02 .dynamic保存了动态链接器所需的基本信息,具体可以看elf.h文件或LSB手册: 依赖于哪些共享对象

2016-03-14 19:58:05 435

原创 Windows和Linux的进程地址空间分布

Windows的进程地址空间分布 Linux的进程地址空间分布

2016-03-14 19:55:57 798

原创 C程序的参数和环境变量

C程序的参数和环境变量

2016-03-14 19:54:15 368

原创 FILE,fd和内核对象

fd是打开文件表的下标

2016-03-14 19:52:16 258

原创 CRT (C RunTime)执行流程

1、初始化和OS版本有关的全局变量 2、初始化堆 3、初始化IO 4、获取命令行参数和环境变量 5、初始化C库的一些数据 6、调用main并记录返回值 7、检查错误并将main的返回值返回另外,还需要支持调试功能

2016-03-14 19:49:47 630

原创 两个特殊的段.init和.finit

.init中的代码在main之前执行 .finit中的代码在main之后执行为了支持C++的全局/静态对象的构造和析构其具体实现和crti.o、crtn.o有关gcc的参数-nostartfile和-nostdlib可以取消链接默认的启动文件和C运行库可以使用attribute((section(“.init”)))来将函数放到.init段中,但是普通函数放在.init中会破坏它的结构,因为函数的

2016-03-14 19:49:04 1209

原创 TLS线程局部存储

0x01 TLS (Thread Local Storage)为线程单独提供的私有空间 0x02 gcc中的隐式TLS用法隐式TLS __thread int number;显式TLS pthread_key_create pthread_getspecific pthread_setspecific pthread_key_delete0x03

2016-03-13 13:21:44 503

原创 FILE的缓冲模式

0x01 关于这个问题三种缓冲模式: 无缓冲,如stdout 行缓冲,如stderr 全缓冲0x02 文件描述符0,stdin1,stdout2,stderr0x03 缓冲的设置0x04 代码实现stdout重定向到文件 函数dup2,用于复制文件句柄 dup2(int oldhandle, int newhandle);函数f

2016-03-13 13:10:00 295

原创 共享库查找顺序

共享库查找顺序今天开始尝试用Markdown导入一下我在有道云笔记的学习笔记,这是第一篇0x00以下内容的标题序号为查找顺序0x01 环境变量LD_PRELOAD这个不是共享库的路径,而是指定的共享库文件,会最先被装载(无论程序是否依赖他们),由于全局符号介入这个机制,这些库中符号可能会覆盖用户代码或标准C库中的同名全局符号(变量或函数)0x02 环境变量LD_LIBRARY_PATH由冒号隔开的共

2016-03-13 13:00:41 280

原创 汇编+C点亮led-用uboot的go命令运行

main.c#include "led.h"static void delay(){ unsigned int i = 0; for(i = 0; i < 0xffffff; i++);}int main(){ led_init(); while(1) { led1_on(); delay(); led1_of

2015-08-26 20:30:43 947

原创 汇编+C点亮led-以替代uboot的方式执行

main.c#include "led.h"static void delay(){ unsigned int i = 0; for(i = 0; i 50000; i++);}int main(){ led_init(); while(1) { led1_on(); delay();

2015-08-25 21:03:59 449

原创 纯汇编点亮led-以替代uboot的方式执行

led.S#define GPIO_BASE 0x01C20800#define GPIO_PH_CFG2_BASE (GPIO_BASE + 0x104)#define GPIO_PH_DAT_BASE (GPIO_BASE + 0x10C).global _start_start: b resetreset: ldr r0, =GP

2015-08-25 20:49:12 469

华为交换机各种配置实例

华为交换机各种配置实例华为交换机各种配置实例华为交换机各种配置实例

2011-03-29

空空如也

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

TA关注的人

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