- 博客(18)
- 收藏
- 关注
原创 代码混淆/程序保护(对抗反汇编)原理与实践
所谓对抗反汇编技术,就是在程序中使用特殊构造的代码或数据,让反汇编工具产生不正确的指令。恶意代码使用该技术,可以一定程度上阻碍相似性检测算法和启发式反病毒检测。一、反汇编算法的局限性反汇编软件在拿到一堆机器码时,采用什么样的思维和算法来“断词断句”,又基于哪些假设,都会决定最终的解析结果。运用不同的反汇编器,同样的字节码会被“翻译”出完全不同的指令序列。而对抗反汇编技术就是利用了反汇编器算法的天生漏
2016-12-25 18:43:31
11839
1
原创 缓冲区溢出漏洞攻击——Shellcode编写
一、实验内容利用一个程序漏洞,编写shellcode,达成效果:蹦出对话框,显示“You have been hacked!(by JWM)”二、实验原理因为输入了过长的字符,而缓冲区本身又没有有效的验证机制,导致过长的字符覆盖了返回地址。如果覆盖的返回地址是一个有效地址,而在该地址处又有有效的指令,那么系统就会毫不犹豫地跳到该地址处去执行指令。本次实验中用到了跳板(jmp esp)由于操作系统每次
2016-12-19 20:53:49
13418
3
原创 Linux内核分析期末总结
pianogirl 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000总博客列表:pianogirl123一、引子1、Linux操作系统的缩影————mykernelmykernel这样一个短小精悍的模拟内核,时常给我提供了看问题的角度和思路。当被庞杂的Linux内核代码弄得一头雾水时,我就去
2016-04-30 17:06:03
3871
1
原创 《深入理解计算机系统》——第7章(链接)
链接链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程。(这个文件可被加载或拷贝到存储器并执行)链接可以执行于编译,加载或运行时。静态链接:两个主要任务:1 符号解析:将目标文件中的每个全局符号都绑定到一个唯一的定义2 重定位:确定每个符号的最终存储器地址,并修改对那些目标的引用符号表:typedef struct{ int name; //字符串表中的字节偏移,指向符号的以NULL结尾
2016-04-16 19:24:27
593
原创 《Linux内核设计与实现》——第4章(进程调度)
Linux内核分析第四章读书笔记调度程序:在可运行态进程之间分配有限处理器时间资源的内核子系统多任务多任务操作系统:同时并发地交互执行多个进程的操作系统Linux提供了抢占式的多任务模式,对进程强制的挂起动作即抢占策略进程可分为:I/O消耗型 和 处理器消耗型I/O消耗型指进程的大多数时间用来提交I/O请求或等待I/O请求处理器消费型进程把时间大多数用在执行代码上,其调度策略往往是尽量降低它们的调度
2016-04-16 19:22:36
604
原创 Linux内核分析——进程切换与系统一般执行过程
一、进程的调度与切换1、进程分类第一种分类:I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成CPU密集型(CPU-bound) 计算密集型 需要大量的CPU时间进行运算第二种分类:批处理进程 不必与用户交互,通常在后台运行 不必很快响应 典型:编译程序,科学计算实时进程 有实时需求,不应被低优先级的
2016-04-16 18:46:19
859
原创 Linux内核分析——可执行程序的装载
pianogirl 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、从源代码到可执行程序1.可执行程序是怎么来的过程如下:预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件编 译:gcc –S hello.i –o hello.s;
2016-04-06 21:48:14
862
转载 《Linux内核设计与实现》——第3章(进程管理)
一、进程1.进程进程就是处于执行期的程序。 进程就是正在执行的程序代码的实时结果。 进程是处于执行期的程序以及相关的资源的总称。 进程包括代码段和其他资源。2.线程执行线程,简称线程,是在进程中活动的对象。 内核调度的对象是线程而不是进程。 Linux对线程并不特别区分,视其为特殊的进程。3.虚拟处理器和虚拟内存在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存。 (什么意思??
2016-04-06 21:25:55
676
原创 Linux内核分析——进程的描述和创建
pianogirl 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、进程的描述1、struct task_struct(PCB)task_struct内容非常庞大,大致分为:进程描述信息: PID、家族…进程控制、调度信息: 当前状态、调度信息、计时信息…资源信息:
2016-04-03 22:10:34
741
原创 《Linux内核设计与实现》——第18章(调试)
一、准备开始在这一章里,调试的主要思想是让bug重现,但是在内核中这并不是很容易做到的。因此,在跟踪bug的时候,掌握的信息越多越好。二、内核中的bug内核bug的原因可能有:错误代码同步时发生的错误,例如共享变量锁定不当错误的管理硬件……内核bug发作的症状可能有:降低所有程序的运行性能毁坏数据使得系统处于死锁状态……内核开发比起用户开发要多考虑一些独特的问题,比如:定时限制
2016-03-27 21:14:45
547
原创 《Linux内核设计与实现》——第5章(系统调用)
一、通过系统调用与内核通信1. 什么是系统调用让应用程序受限的访问硬件设备提供创建新进程并与已有进程通信的机制提供申请操作系统其他资源能力 在Linux中,系统调用是用户空间访问内核的唯一手段。 除异常和陷入外,他们是内核唯一的合法入口。 2. 作用是用户空间进程和硬件设备之间的中间层硬件的抽象接口:用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,简化了用户
2016-03-27 20:39:28
618
原创 Linux内核分析——系统调用(下)
pianogirl 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、给MenuOS增加自定义fork菜单1、增加菜单移植一下其他菜单的创建过程: 2、用qemu启动这个新的MenuOS本地虚拟机环境: 【Makefile中有几个地方需要因地制宜地改动一下】 1. qemu命令
2016-03-27 20:38:40
537
原创 Linux内核分析——系统调用(上)
pianogirl 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、用户态、内核态、中断处理机制intel x86 CPU有四个权限分级,0-3。Linux只取两种,0是内核态,3是用户态。区分权限级别使得系统更加稳定。1.内核态高执行级别,代码可以执行特权指令,访问任意的物理地址。
2016-03-19 17:36:47
770
原创 《Linux内核设计与实现》——第1、2章(内核简介)
Linux内核设计与实现——内核简介(1、2章)一、UnixUnix特点:简洁绝大部分东西都被当做文件对待。这种抽象使对数据和对设备的操作都是通过一套相同的系统调用借口来进行的:open(),read(),write(),lseek()和close()出色的平台可移植性——内核和相关的系统工具软件用C语言编写而成进程创建迅速进程间通信原语简单稳定Unix是一个强大、健壮和稳定的操作系统。
2016-03-16 21:19:40
885
原创 Linux内核分析——构造一个简单的Linux内核MenuOS
pianogirl 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、Linux内核源代码http://codelab.shiyanlou.com/xref/linux-3.18.6/值得关注的几个目录:/arch- 该目录中包含和硬件体系结构相关的代码,每种平台占一个相应的目录。- 和32
2016-03-12 18:22:26
1343
原创 Linux内核分析——操作系统进程调度
pianogirl 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、函数与堆栈 事实证明,上一篇博客中对函数与堆栈的理解是正确的。每一个函数都有一个框架,独立的栈空间。即,压入栈中的每一个函数都有一个帧栈,每个帧栈都以ebp为分界线。经过了三个步骤: 1)建立被调用函数的堆栈框架
2016-03-06 16:12:11
950
1
原创 Linux内核分析——x86汇编基础
pianogirl 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、计算机是如何工作的 我们平时使用的计算机属于“冯·诺依曼结构”,将程序和数据一起存储在内存中,CPU从内存中不断地取指令并执行指令。除此以外还有“哈佛结构”。 CPU能够执行的指令是二进制指令,为便
2016-02-28 19:26:51
1334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人