第16-17章 - 基址重定位表&.reloc节区 @date: 2016/11/31 @author: dlive 0x00 前言 这几天忙着挖邮箱漏洞,吃火锅,马上要被关禁闭,看书进度比较慢... 0x01 PE重定位 若加载的是DLL.SYS文件,且在ImageBase位置处已经加载了其他DLL/SYS文件,那么PE装载器就会将其加载到其他未被占用的空间.这就涉及了PE文件重定位问题,PE重定位是指PE文件无法加载到ImageBase位置,而被加载到其他地址时发生的一系列处理行为. 开发工…
第16-17章 - 基址重定位表&.reloc节区 @date: 2016/11/31 @author: dlive 0x01 PE重定位 若加载的是DLL.SYS文件,且在ImageBase位置处已经加载了其他DLL/SYS文件,那么PE装载器就会将其加载到其他未被占用的空间.这就涉及了PE文件重定位问题,PE重定位是指PE文件无法加载到ImageBase位置,而被加载到其他地址时发生的一系列处理行为. 开发工具 PE 地址 SDK/Visual C++ EXE 00400000 SDK/Vi…
@date: 2016/11/29 @author: dlive 0x00 前言 周六周日两天在打HCTF2016线上赛,没时间看书,打完比赛接着看~~ 0x01 运行时压缩 对比upx压缩前后的notepad可以看到如下特点 PE头的大小一样 节区名称改变(.text -> .UPX0, .data -> .UPX1) 第一个节区的SizeOfRawData=0,即第一个节区在磁盘上的大小为0,但是第一个节区的VirtualSize的值被设置为0x10000 notepad_upx.exe的…
第六章 栈与重定位表 本章主要介绍栈和代码重定位.站和重定位表两者并没有必然的联系,但都和代码有关.栈描述的是代码运行过程中,操作系统为调度程序之间相互调用关系,或临时存放操作数而设置的一种数据结构.重定位表则是在一个PE中的代码被加载到任意一个内存地址时,用来描述相关操作数地址变化规律的数据结构.通过重定位技术,代码运行在内存中的任意位置时,可以避免因操作数的定位错误而导致失败. 6.1栈 前面基本概念直接过... 程序在运行的时候会为系统分配一块内存区域作为栈,由栈选择子SS和栈定指针(es…
今天有一个朋友发短消息问我说“老师,为什么PE的格式要讲的这么这么细,这可不是一般的系哦”.其实之所以将PE结构放在解密系列继基础篇之后讲并且尽可能细致的讲,不是因为小甲鱼没事找事做,主要原因是因为PE结构非常重要,再说做这个课件的确是很费神的事哈.在这里再次强调一下,只要是windows操作程序,其就要遵循PE格式,再说人家看雪的网址就是www.pediy.com. 简单的讲是可以,但是怕就怕有些朋友知识点遗漏了或者错误理解意思.不能深刻体会等,这样的效果是不好的~所以,小甲鱼尽管这系列视频可…
源代码如下: typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress; DWORD SizeOfBlock; // WORD TypeOffset[1]; } IMAGE_BASE_RELOCATION; typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION; 重定位表是一个数组,这个数组的大小记载在 _IMAGE_OPTIONAL_HEADER 的 .D…
每个DLL和可执行文件都有一个首选基地址.它表示该模块被映射到进程地址空间时最佳的内存地址.在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000.对于DLL来说,链接器会将它的首选基地址设为0x10000000,然后将该地址以及代码.数据的相关地址都写入它们的PE文件中.当它们被加载时,加载程序读取首选基地址的值,并试图把它们加载到相应位置. 对于可执行文件和DLL中的代码,它们运行的时候所引用的的数据的地址,在链接的时候就已经确定.并且这些都是当exe文件或是DLL被加载…
@date: 2016/11/24 @author: dlive ​ PE (portable executable) ,它是微软在Unix平台的COFF(Common Object File Format 通用对象文集格式)的基础上制成的. ​ PE文件是指32位的可执行文件,也称PE32,64位的可执行文件称为PE+或者PE32+ ​ PE文件的种类 种类 主扩展名 可执行系列 exe ,scr 驱动程序系列 sys, vxd 库系列 dll, dcx, cpl, drv 对象文件系列 ob…
在第七章<链接>中的静态链接有对符号进行重定位PC相对引用的处理,书上对应的还有公式,但不是很好理解.现做实验对公式进行理解(公式内容如有兴趣可以参考原文)…
第十六章 squid总结: 正向代理:yum  安装后清空防火墙即可正常使用,客户端设置浏览器 透明正向代理:vim  /etc/squid/squid.conf 59行:http_port  3128  transparent 62行:注释去掉 然后firewall-config把nat打开,并清空防火墙 客户端网关指向服务端 反向代理:在主配置文件中修改两行参数(详细见后面内容) 16.1.代理缓存服务器 squid是一款高性能的代理服务软件,通常用作web网站的前置缓存服务器.代替用户向网…
@author: dlive @date: 2016/12/19 0x01 SetWindowsHookEx() HHOOK SetWindowsHookEx( int idHook, //hook type HOOKPROC lpfn, //hook procedure(回调函数) HINSTANCE hMod, //hook procedure所属的DLL句柄 DWORD dwThreadId //想要挂钩的线程ID ); 使用SetWindowsHookEx() API可以轻松实现消息钩子…
13章 这么多测试为什么不能整理出一个包括所有功能的测试呢?看着那么多测试都感觉奇怪了. 14章 怎样才能体现一个测试人员的工作价值呢?这样的判断又是否会太独断了? 15章 在时间上,会不会因不同功能板块完成快慢有影响?在后期的问题解决又有何保证措施? 16章 创新并不是每个人都行的,但有时候太执着于此是否进了死胡同呢? 17章 作为领导者的话,做到公平公正也并不像口头上那么简单,有时候是向规则妥协呢还是坚持自己的主见?…
第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解本章中讨论的一些想法和约定,特别是如果您已经完成了高级ASP.NET或C#开发. 如果没有,我鼓励你仔细阅读 - 深入地理解隐藏在MVC背后的东西可以帮助你在通读本书时更好地与MVC框架的功能联系起来. MVC的历史 模型视图控制器模式起源于20世纪70年代后期,来自施乐PARC的Smalltalk…
★PART1:中断和异常概述 1. 中断(Interrupt) 中断包括硬件中断和软中断.硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务.当I/O接口发出中断请求的时候,会被像8259A和I/O APIC这样的中断寄存器手机,并发送给处理器.硬件中断完全是随机产生的,与处理器的执行并不同步.当中断发生的时候,处理器要先执行完当前的指令(指的是正在执行的指令),然后才能对中断进行处理. 软中断是由int n指令引发的中断处理器,n是中断号(类型码). 2. 异常(Exception…
章, DOM扩展 选择符 API Selector API Level1核心方法querySelector .querySelectorAll,兼容的浏览器可以使用 Document,Element 实例调用它们,支持浏览器:IE8+,Firefox3.5+,Safari3.1+,chrome,Opera10+ querySelector方法 接收一个 CSS选择符,返回与该模式匹配的第一个元素 通过 Document类型调用该函数,会在文档范围查找匹配元素,通过 Element类型调用该函数,…
第17章      RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章节会有事半功倍的效果. 本章教程含STM32F407开发板和STM32F429开发板. 17.1  初学者重要提示 17.2  UDP的API函数 17.3  特别注意UDP个数配置 17.4  UDP配置说明(Net_Config.c) 17.5  UDP调试说明(Net_Debug.c) 17.…
第17章     EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx中文参考手册>系统配置控制器以及中断和事件章节. 上一章节我们已经详细介绍了NVIC,对STM32F4xx中断管理系统有个全局的了解,我们这章的内容是NVIC的实例应用,也是STM32F4xx控制器非常重要的一个资源.学习本章时,配合<ST…
内存映射文件主要用于以下三种情况: 系统使用内存映射文件载入并运行exe和dll,这大量节省了页交换文件的空间以及应用程序的启动时间 开发人员可以使用内存映射文件来访问磁盘上的数据文件.这使得我们可以避免直接对文件IO操作和对文件内存进行缓存 进程间通讯 17.1 映射到内存的可执行文件和DLL 当一个线程调用CreateProcess的时候,系统会执行收入步骤: 1.判断exe位置,如果无法找到exe那么不会创建进程,这时会CreateProcess返回FALSE 2.创建一个新的进程内核对象…
第17章     EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx中文参考手册>系统配置控制器以及中断和事件章节. 上一章节我们已经详细介绍了NVIC,对STM32F4xx中断管理系统有个全局的了解,我们这章的内容是NVIC的实例应用,也是STM32F4xx控制器非常重要的一个资源.学习本章时,配合<ST…
上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2.全局作用域和局部作用域 3.global和nonlocal的使用 接下来详细说明 1.作用域 作用域主要是针对函数中的变量使用而言的,也就是一个变量被定以后,他可以影响的范围,从计算机的运行角度看,如果计算机调用一个变量,应该去哪找?这里的“哪”就是作用域 2.全局作用域和局部作用域 既然是作用域…
第17章 输入.输出和文件 1. 对键盘进行输入缓冲可以让用户在将输入传输给程序之前返回并更正.C++程序通常在用户按下回车键时刷新输入缓冲区. 2. 一些I/O类 streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区.访问缓冲区.刷新缓冲区和管理缓冲区内存的类方法. ios_base类表示流的一般特征,如是否可读取.是二进制流还是文本流等. ios类基于ios_base类,其中包括了一个指向streambuf对象的指针成员. ostream类从ios类派生而来,提供了输出方法. is…
第13章,构建基于浮动的布局 使用的是float(浮动)属性 注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动. 切记:不需要给正文的div设计宽度,即使设计成固定宽度也不用 用浮动进行布局 LayoutGala网站(http://blog.html.it/layoutgala/)上提供了40种不同的CSS设计,但大多只是基本框架,里面只有<div>标签及其定位用的CSS代码 布局生成器,Cridinator(http://gridinator.com)提供了简单的…
文章17章 进.输出和文件 1.当到达输入句子.他将刷新输出缓冲区满输出电流 2.streambuf分类 它提供了用于各种操作的一个缓冲 ios_base类表示流的一般特征 ios基础的类ios_base.它包括一个点streambuf对象的指针 ostream类从ios派生.提供可输出方法 istream类从ios派生,提供可输入方法 iostream类基于ostream和istream,继承了输入和输出方法 3.包括iostream则自己主动创建了8个流对象 cin 标准输入 wcin 宽字…
原文 第17章 中介者模式(Mediator Pattern) 中介者模式  概述:   在软件开发中,我们有时会碰上许多对象互相联系互相交互的情况,对象之间存在复杂的引用关系,当需求更改时,对系统进行修改将会非常困难.为了对系统的对象进行解耦,可以引入一个间接层来管理对象之间的关系,这就是中介者模式. 结构图:             借图理解:    使用中介者              示例:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1…
第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} #index.html <h1>{{val.0}} 2.继承:一个html页面只能继承一个模板 extends 'layout.html' {{ block xxx}} ... {{endblock}} 3.组件: {{include tag.html}} 4.自定义函数: simple_tag…
ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP.NET Core中使用GraphQL - 第三章 依赖注入 ASP.NET Core中使用GraphQL - 第四章 GrahpiQL ASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量 ASP.NET Core中使用GraphQL - 第六章 使用EF Core作为持…
第17章.设备与模块 17.1设备类型 1.块设备(blkdev): 寻址以块为单位,通常支持重定位操作.通过称为“块设备节点”的特殊文件来访问. 2.字符设备(cdev): 不可寻址,仅提供数据的流式访问.通过称为“字符设备节点”的特殊文件来访问. 3.网络设备(ethernet devices): 提供了对网络的访问.它不是通过设备节点来访问,而是通过套接字API这样的特殊接口来访问. 17.2 模块 17.2.1 Hello,World (1)hello_init()函数是模块的入口点.…
第13章:软件测试 问题:对于这么多种的测试方法,怎么才能最有效的选取? 第14章:质量保证 问题:很多工程师都把大多数时间花在软件质量上.一成不变是无法创新的.如何在保证质量的情况下,又得到创新呢? 第15章:稳定和发布阶段 问题:是否要弄一个用户反馈,就是反馈些漏洞的情况并且及时发布更新版? 第16章:IT行业的创新 问题:作为大学生,我们应该如何提高自己的创新能力?如何对项目进行创新? 第17章:绩效和职业道德 问题:公司都是以绩效和职业道德来恒定员工的吗?…
C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 启用编辑继续 收集调试信息,将影响性能 Code Compare这是扩展与更新里面的插件,安装之后才会显示,用来比较代码是否相同 nuget包源配置,提供了nuget更新的数据源 目标框架的设置影响到项目基础框架的引用,不同目标框架的项目之间不能互相引用. 不安全代码和警告等级可能会影响生成 特定…
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库系统一旦出现问题无法提供服务,所有系统都可能无法继续工作,而不像软件中部分系统出现问题可能影响的仅仅只是某个功能无法继续服务.所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的.本章内容将针对如何构建一个高可用的 MySQL 数据库系统来介绍各种解决方案以及方案之间的比较. 17.1 利用…