- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 神奇的编译器
先看一段代码:#include int main(void){ void *p; p = malloc(10); printf(" p = %08X \n", p); printf(" p + 1 = %08X \n", (p+1)); printf("(char*)p + 1 = %08X \n", ((
2016-01-17 16:16:39
560
原创 搭建NFS共享文件夹
因为开发调试的需要,要在两台机器共享资源,最后选择NFS做共享文件夹。实际的两台机器都是ubuntu14.04系统。服务端(共享端)操作:第一步:安装NFS服务器sudo apt-get install nfs-kernel-server第二步:配置NFS服务以共享/home/damon/nfs目录为例,首先修改该文件夹权限sudo chmod 777 /home/
2016-01-14 09:40:13
3537
原创 qemu-system-x86_64: drive with bus=0, unit=0 (index=0) exists 错误原因
最近在使用qemu的时候有出现drive with bus=0, unit=0 (index=0) exists的错误的情况。网上也给出了很多的解决方法,总结一下:1)大部分的原因是参数不对,可能少了“-”符号之类的;2)参数是正确的,但是还是会出现这种情况,可以把参数重新用手动输入的方式敲,不要直接复制,因为复制过程中可能复制了一些我们没注意到的字符导致程序不识别;3)可以用ro
2015-12-09 09:33:21
11158
1
原创 QEMU简介(三)
虚拟机说:”配置更高“。 在购买PC的时候,一般希望能买一个配置比较好的电脑,一般电脑配置则是看CPU、内存、硬盘的相关属性判定。例如希望CPU是主频更高,同主频的情况下希望是多核心的,内存则是希望能越大越好。而对于虚拟机也可以通过qemu的配置进行这些参数的修改。 CPU配置 qemu可以通过参数-smp设置客户机的CPU个数,已经每个CPU上运行的sock
2015-12-07 14:28:20
6789
原创 QEMU 简介(二)
“虚拟机说要有硬盘”。 如是我们通过qemu为客户机分配一个硬盘用于安装操作系统,另外分配一个光驱用于存放系统安装盘。 1)创建硬盘 首先使用qemu-img工具创建一个可以用于qemu的虚拟硬盘,从字面意思可以看出下面的命令创建了一个20G大小的文件centos.img。# qemu-img create centos.img 20G 2)分配物理光驱
2015-12-06 16:14:21
1814
原创 QEMU 简介(一)
QEMU是运行在用户层的开源全虚拟化解决方案,可以在Intel X86机器上虚拟出完整的操作系统,其性质与VMware player类似,由于其工作在用户层,所以很多硬件的特权指令、内核操作无法实现,所以在性能上表现比较差,一般都会使用KVM作为底层接口完成虚拟化。其运行架构如图所示(图片来自网络): 在ubuntu系统上通过apt-get安装sudo apt-get i
2015-12-05 22:06:30
6222
原创 fork与vfork区别
最近调试一个项目,发现在vfork创建的子进程下断点失败,于是研究了一下vfork和fork,然后得此文。pid_t pid = vfork();if (pid < 0) { return false;}else if (pid == 0) { //断点失败}首先说下为什么断点失败,因为断点其实是在对应进程的位置使用int 3使主进程停住,而使用vfork/fork
2015-10-14 18:18:37
2175
1
原创 内存破坏之——栈内存
本文结合Mario Hewardt和Daniel Pravat写的《Advanced Windows Debugging》第五章所讲的内容稍微进行整合总结而成。1、 栈简介 堆栈(英语:stack),也可直接称栈。台湾作堆叠,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英语:top)进行加入资料(英语:push)和输出
2015-08-23 23:50:53
1229
原创 使用Winhex查看U盘数据
文件系统是一种存储和组织数据的方法,它使得对数据的存取和查找变得容易(1)。凡是要接入计算机系统的存储设备都需要有文件系统的支持,否则计算机将无法识别设备中的数据。本文以U盘为例,在Windows7系统上使用winhex工具查看U盘的二进制数据,初步的认识操作系统文件和U盘数据的对应关系。 WinHex是一款以通用的十六进制编辑器为核心,专门用来对付计算机取证、数据恢复、低级数据处理、以
2015-08-23 23:20:54
9168
转载 SOLARIS 10/11的网络配置
那天突然需要对Solaris10进行网络配置,找了很多的资源和方法,转载一个比较简洁明了的配置方法,原博客地址:http://www.cnblogs.com/jingsonghu/archive/2007/04/18/718886.htmlSoalris系统安装完成以后,重新启动计算机。计算机引导过程中回显示网卡名,如e1000g0。1. 在/etc目录下创建一个名为hostname.
2015-07-20 22:19:39
1323
原创 X86函数内存栈
本文描述的是在intel X86_64体系架构中,C语言函数在执行过程中的内存栈结构情况。其它体系会有所不同,仅供参考,实验在Ubuntu14.04 X64中使用,考虑到寄存器的熟悉程度,编译的可执行程序是32位的。 源码如下:#includevoid func(int a, int b){ int sec[5]; sec[2] = a; retur
2015-06-13 12:02:33
594
原创 SPARC 汇编mov常量到寄存器
使用 mov const,%r1 只能将13位以下的常量加载到r1寄存器装载32位常量到寄存器sethi %hi(const),%r1or %r1,%lo(const),%r1装载64位常量到寄存器sethi %uhi(const), %rtmpor %rtmp,%ulo(const),%rtmpsllx %rtmp,32,%rtmpsethi
2015-05-15 17:41:34
1313
原创 SPARC 函数调用寄存器变化
SPARC 提供32个通用寄存器,可以分为四组全局寄存器:%g0----%g7输入寄存器: %i0----%i7本地寄存器: %l0----%l7输出寄存器:%o0----%o7寄存器窗口会通过save和resotre命令压入或弹出。当执行save操作时,输出寄存器会变成输入寄存器,并创建新的local和输出寄存器。例如:可以看出输出寄存
2015-05-15 17:30:32
1068
转载 VMware 共享文件夹 error: ‘struct dentry’ has no member named ‘d_alias’
原文链接 http://blog.csdn.net/mr__g/article/details/44085761出现情况:ubuntu 14.04 自动更新软件,VMware共享文件夹的功能失败,尝试重新安装VMware tools,第一条错误为 “error: ‘struct dentry’ has no member named ‘d_alias’”,然后共享文件夹功能不能使用
2015-05-13 10:10:55
4495
转载 Unable to locate package错误解决办法
新装了VMWare Player,结果装上Ubuntu12.04后安装软件都提示:Unable to locate package错误,解决方法非常简单,终端输入以下命令即可:[cpp] view plaincopyprint?sudo apt-get update sudo apt-get update 究其原因,应该是刚安装,软件源还来不
2014-09-13 22:19:41
1032
翻译 内存分配方式比较
原文连接:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366533(v=vs.85).aspx下面简要比较一下各种内存分配方式:CoTaskMemAllocGlobalAllocHeapAllocLocalAllocMallocNewVirtualAlloc GlobalAll
2014-06-16 23:10:09
775
原创 <深入浅出>根据函数调用过程谈栈回溯原理
通过分析函数调用过程的堆栈变化,可以看出在被调函数的EBP寄存器地址存放的是调用函数的EBP寄存器地址,EBP地址+4存放的是函数调用完成后的下一条指令存放地址,该指令的前一条指令则是调用函数的指令。说起来有点拗口,接下来代码分析一下:分析使用的源码如下:
2014-06-07 18:02:45
5844
原创 <深入浅出>函数调用过程堆栈变化分析
总是被问及函数调用过程中堆栈的变化以及栈回溯的原理,最近好好的研究了一下函数调用过程中各个寄存器和堆栈状态的变化,在这边分享一下,如果有不对的地方,希望得到指正,本文使用VS2008工具运行下面这段代码执行,并将各个过程中堆栈数据的变化记下。代码如下:
2014-05-26 10:54:42
1354
原创 <读书笔记>Windows内核安全——第六章 磁盘过滤
本章目标:完成一个磁盘卷设备的上层类过滤驱动,该过滤驱动的功能是实现对卷的还原,即开启该驱动的功能之后,对还原卷的写操作将只适用于当前,重启电脑后所写入的数据都将清零,类似于还原卡之类的功能。1、磁盘卷设备OK,根据章节的主题。首先要知道什么是磁盘卷设备,根据《windows internals》一书中的讲解,Windows的存储结构自上而下分成以下各个部分,如图所示:(擦,一个图
2014-05-17 09:38:43
1566
转载 使用 Lookaside List 分配内存
本文转自:http://www.mouseos.com/windows/kernel/lookaside.html
2014-05-15 15:46:13
813
原创 <读书笔记>Windows内核安全——第五章磁盘的虚拟
本章主要说的是WDK中的ramdisk的工程,该工程实现了一个非分页内存(nopaged memory)作为磁盘虚拟空间,虚拟了一个FAT虚拟盘。该虚拟盘有以下特点:1)性能比一般磁盘高,因为直接是操作的飞分页内存,所以读写速度比较快;2)占用了大量的内存,因为该工程的虚拟空间使用的飞分页内存,所以占用了大量的内存;3)该磁盘每次重启电脑后数据都会丢失,不具有易失性。该工程使用WDF模型开
2014-03-29 11:40:09
1196
原创 <读书笔记>Windows内核安全 —— 第四章 键盘的过滤
本章讲了几种过滤键盘的方法,说实话越往后越深,写的很全,后面我没看懂,下面是我看懂的部分记录了下来。 文章开头讲了几个知识点: 1) 符号链接,用一个不同的明智代表一个设备对象,上层可以通过该名称访问相应的设备对象。 2) ZwCreateFile,在内核中用于打开文件(设备对象)的函数,是应用层的Createfile在内核层的实现
2014-03-25 23:25:15
959
原创 Windows 自旋锁分析
1、 自旋锁(spinlock)自旋锁(KSPIN_LOCK)只能用于内核模式的同步机制,定义为KSPIN_LOCK,自旋锁可以应用于IRQL>=DISPATCH_LEVEL保护并发操作的共享数据和资源的SMP(对称多处理器)机器上。包括驱动在内的很多组件都会使用自旋锁,例如:大部分文件系统的驱动中会使用互锁工作队列用来存放文件系统工作线程和FSD(file system driver)
2014-03-20 19:32:02
2353
原创 <读书笔记>Windows内核安全 ---串口过滤驱动(3) 相关知识总结
1、 内核中字符串的用法在Windows内核环境不要使用printf之类的字符串处理函数,一定要是使用内核已经定义了相应API的函数来处理。// Step1WCHAR wName[32];UNICODE_STRING strName;ULONG id = 1;// Step2 初始化WCHAR STRINGstatus = RtlStrin
2014-03-15 10:36:53
1372
原创 <读书笔记>Windows内核安全 ---- 串口过滤(2)
上篇讲到书中实现串口过滤的方式,不过想想这里面有些不是很灵活的地方,例如这个针对已经有串口的电脑才能使用,如果是USB转串口类型需要先接入USB之后,启动该过滤驱动才能实现过滤的作用,而且对串口的编号枚举是从1~32之间进行处理,那假设真的会有32以后的呢(当然从未见过这样变态的串口号),不过串口的高级设定里面是可以显示到32以后的,那这样就带来了一些问题,这些设备该如何去使用该驱动呢。
2014-03-09 12:24:57
1214
原创 <读书笔记> windows内核安全 --- 串口过滤(1)
一直从事windows驱动相关的工作,不过没有怎么梳理过整体的知识系统,最近又把这本寒江独钓再看一遍,并将一些所得所想记录下来,梳理一下相关内容。 串口是啥?串口就是串口呗,呵呵。随着PC机的更新换代,很多的电脑已经没有串口的身影,尤其是笔记本电脑,很少看见有带串口的电脑。没有归没有,但是用处还是挺大的,很多开发板都是通过串口将调试信息反馈到PC,给开发人员多了一种调试方法,还有驱
2014-03-02 14:00:07
1193
原创 TTL电平 RS232电平 CMOS电平
TTL电平:+5V等价于逻辑“1”,0V等价于逻辑“0” TTL输出高电平>2.4V,输出低电平=2.0V,输入低电平输出 L: 2.4V。 输入 L: 2.0VTTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。CMOS电平:输出 L: 0.9*Vcc。输入 L: 0.7*
2013-06-05 17:53:45
753
转载 ControlSet001、ControlSet002以及CurrentControlSet
在注册表HKLM\system注 册表项中包括用于windows启动的三个控件组(额外还可能存在一个备份控件组),在初始状态下,它们分别是ControlSet001、 ControlSet002以及CurrentControlSet。这些控件组中包含了操作系统配置的信息,比如服务、驱动、系统控制、枚举信息等等。 默认情况下,ControlSet001是系统真实的配置信息,但是为了避
2012-08-27 13:55:45
430
原创 win98进入dos
虽然是一个很老的话题,但是DOS还是没有真正死亡的情况下还是说一下吧; 98系统可以通过两种方式进入DOS环境,一是开机按F8,二是启动98后按开始重启进入MS-DOS两种方法,但是这里一定要说明的是,第二种方法进入的觉得不是dos系统,而是一个运行在98上的dos模拟软件而已,所以测试DOS程序的话一定要开始按F8进入。至于差别就是windows和dos的差别了,不管是从内存管理还是
2012-08-20 20:26:55
2445
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人