- 博客(31)
- 资源 (3)
- 收藏
- 关注
原创 LEX规则
匹配最长当长度相同,匹配最早出现的模式当无任何模式匹配时,默认的处理方式是输出文本当匹配是,默认的处理”;"相当与空语句{ ; }%s:普通状态%x:排它性状态
2013-11-02 22:34:21 1416
转载 UNIX/LINUX 平台可执行文件格式分析
原文链接:UNIX/LINUX平台可执行文件格式分析简介: 本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format
2013-10-16 21:01:38 638
转载 C中的预编译宏定义
C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理.
2013-10-15 23:34:37 656
原创 unix高级环境编程 系统数据文件与信息 --chap6
unix口令文件(POSIX.1称为用户数据库)/etc/passwd加密口令字段包含一个占位符,将实际的加密口令存放在另一个位置(maybe:/etc/shadow)口令文件中的字段可为空,若加密口令字段为空,则意味没有设置口令shell字段包含一个可执行程序,被用作该用户登录shell;为了阻止一个特定的用户登录系统,可将此字段设为/dev/null、/bin/false、/bin
2013-10-05 22:18:54 591
原创 unix 环境高级编程 chap5 - 标准I/O
流的定向:标准I/O文件流可用于单字节或多字节字符集; 流的定向决定了所读、写的字符是单字节还是多字节的;当流最初被创建时,它并没有定向;在未定向的流上使用一个多字节I/O函数,则将该流的定向设为宽定向的;如使用一个单字节I/O函数,则将流的定向设为字节定向的;fwide:设置一个流的定向freopen:清除一个流的定向在UNIX系统中,标准I/O最终都是要调用系统提供的I/O函数(如
2013-10-04 14:27:15 467
原创 unix环境高级编程 chap4 文件与目录
概述:通过stat结构的每个成员以了解文件的所有属性,并说明修改这些属性的函数;介绍unix文件系统的结构以及符号链接、对目录进行操作的函数。stat.st_mode:包含文件类型、设置用户ID位和设置组ID位、文件访问权限这三类的信息;文件的类型以及文件类型测试宏:普通文件(exp:二进制可执行文件)目录文件:包含其他文件的名字及指向与这些文件有关信息的指针(inod
2013-10-03 13:39:15 772
原创 unix 网络编程 chap11
域名系统:提供主机名与IP地址之间的映射;主机名可以是个简单的名字(如:BSDI)也可以是一个完全限定名(Fully Qualified Domain Name)DNS中的每个条目成为一个资源记录(resource record,RR),其中RR有各种类型(参见域名系统);对于即支持IPV4又支持IPV6的主机名的命名约定/??解析器(通常以函数库的形式提供,客户通过函数调用与之交互)与名
2013-09-14 23:21:47 596
原创 unix 网络编程chap5
概述:本章讨论了一个tcp客户/服务器回射网络应用程序,并通过讨论各种边界条件来更好的理解网络层发生了什么以及它们如何反应在套接字API上;详情:TCP回射服务器通过为每个新的客户fork一个子进程来为新的客户服务;
2013-09-11 22:53:30 964
原创 chap3 文件I/O
标准输入、标准输出、标准错误 STDIN_FILLENO STDOUT_FILENO STDERR_FILENO文件共享:进程描述符表中的文件描述符表(文件描述符标志)、每个打开的文件有文件表(文件状态标志,文件偏移)、每个打开的文件I-node节点表三者的关系; 文件共享在多进程的环境下就涉及到了原子操作;强制刷新缓冲区:sync fsynnc fdatasync 三个函数的区别fcntl io
2013-09-08 12:29:19 550
原创 chap1
当前工作目录(current working directory)不带缓冲的I/O,open,read,write,lseek,close等; 都使用文件描述; in defines STDIN_FILENO STDOUT_FILENO STDERR_FILENO标准I/O;带缓冲; 时间:日历时间time_t; 进程时间clock_t
2013-09-08 12:17:33 443
翻译 art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---04
编码ADD指令:一些例子 弄清楚使用如此复杂的体系来编码一条指令,一些小例子很有必要。所以现在来看看如何使用不同的寻址模式来编码一条X86的ADD指令。ADD指令有四个操作码$00,$01,$02,$03 ,使用哪个操作码取决于操作码中的s位及d位。(如Figure 5.15所示) 下面的每个格式描述了如何编码使用不同寻址模式的ADD指令。 寄存器直接寻址
2012-01-07 11:35:23 566
翻译 art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---03
扩展Y86指令集 Y86CPU仅仅适合于模拟如何来编码机器指令。然而,像其它好的CPU一样,它提供了可扩展性。因此,你可以通过增加新的CPU指令来改良这个CPU. 有两种标准的方式来增加一个CPU指令集中指令的数目。两种途径都要求有未定义的操作码。既然Y86还有一些未定义的操作码,因此我们可以很容易的来扩展它的指令集。 第一种方
2012-01-06 21:50:49 527
翻译 art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---02
The Y86 Hypothetical Processor Y86------假想的处理器 由于在过去的几年来,80X86处理器功能上的增加、计算机机构的发展及intel在1978年提出的处理器设计目标,使得80X86指令的编码变得非常复杂甚至于在某些方面不符合逻辑。因此,讨论如何设计及编码指令集时80X86并不是一个很好的例子。然而,既然这是讨论80X86
2011-12-30 21:51:23 716
翻译 art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---01
在本LESSON中,我将把Opcode (Opcodes)翻译为操作码!!! 本章节讨论了80X86指令集的低级实现,描述了INTEL工程师怎么样决定用数值来编码指令以及当他们设计CPU时,所做的权衡。同时,展示了设计时所做努力的历史被景以便你更好的理解他们不能不做的一些在设计上的妥协。 指令设计的重要性 在本小节, 我们将探讨
2011-12-29 17:47:13 588
翻译 art of disassembly----chapter01----lesson11---how is a disassembler working----03
取得机器码字节流PE file wrapper object在前面的章节中我们提到过要使用一个独立功能的对象来提供数据流这个服务,也决定了在这个项目中,我们将用一个似类于PE dump的对象来完成这个功能。非常幸运的是,我们有很多的PE dumper例子程序。(我使用Matt Pietrek's PEDUMP作为切入点)根据需求,我们的对象需要有这样的能力:从用
2011-12-27 15:59:36 385
翻译 art of disassembly----chapter01----lesson11---how is a disassembler working----02
Mapping of "processing" tasks to objects 将处理过程映射成对象在一个纯面象对象的设计中,这个映射并不恰当,因为我把处理过程处理成对象。然而,我坚持解析任务由"parser"完成,解码任务由"decoder"完成,:如下图: 绿色的矩形就是代表着对象,Parser以机器字节流作为输
2011-12-27 15:19:23 376
翻译 art of disassembly----chapter01----lesson11---how is a disassembler working----01
关于此文档的内容: 此文件是关于设计及实现一个WIN32的反汇编器。它读取winodws32位下的可执行程序的机器码然后将其反汇编,并显示出来。关于此文档的目的: 除作为我个人的学习比较以外,本文档更着重于为那些对写反汇编器感兴趣的人而写。我可提供了一些源代码以供下载。代码中有一些我写的简单的注释,但是有相当的一部分还是难以理解的,除非你对整体的设计
2011-12-20 16:24:22 378
翻译 art of disassembly---chapter01---lesson6---Link lists
I think There is no need to translate lesson 4 5 6 So..Let's continue with This 链表 虽然链表听起来好像很难很吓人的样子,不过不要担心,当你亲自有一些小实践后你就会发现原来链表也不过如此。当我第一次学到这种奇怪的数据存储方式的时候,我真的在默想我以后一定不会使用这种方式。现在我们观念
2011-12-17 14:07:40 385
翻译 art of disassembly----chapter01---lesson3
在开发的过程之中我们可能会碰到什么问题呢? 第一个很主要的也是最大的问题就是时间。写一个反汇编器是需要大量的时间。很多人在抱怨写一个反汇编器就是在浪费时间罢了。OH....那就让我们来浪费时间吧。从这个过程中你得到的知识那是无可估量的。 另一个问题就是我们的反汇编器必须能识别机器码(opcodes)和助记符(mnemonics)。我们很容易能用
2011-12-16 19:59:20 370
翻译 art of disassembly---chapter01---lesson2
写一个反汇编器到底需要哪些知识呢?这个问题说不大准。你需要同你有好的编程能力一样,有扎实的理论知识.这有个列表,这些是你必须要知道的: 1、WIN32环境下汇编 2、面向对象程序设计,及了解它的原理 3、对分析算法、分析程序有很好的理解 4、了解PE文件格式 5、SEH是怎么实现的 6、链表
2011-12-16 19:38:01 349
原创 art of disassembly-------chapter01--lesson1----04
看完导入表后,我们就来看看导出表吧~~! 当PE加载器加载一个PE文件到在内存里,它同时也会加载PE文件所使用的所有DLL文件到进程的地址空间中。它从主程序得到外部函数的信息然后到DLL文件中去搜索相应函数的入口地址。那么PE加载器是到DLL文件的什么地方去找到相对应外部函数的入口地址呢?答案就是在导出表中。 当一个DLL/EXE文件
2011-12-15 13:51:24 500
原创 ListView笔记
在ListView中,字段是主要的输入点。在报告模式(Report View),这里有字段和分字段。字段是最左边的行,分字段是剩余的行。Column1 Column2 Column3 Column4 Column5Item1 Subitem1 Subitem2 Subitem3 Subitem4Item2 Subitem1 Subitem2 Subitem3 Subitem4
2011-12-14 15:29:13 304
原创 the art of disassembly chapter01-----lesson1--03
ILet's continue....现在来了解一下节表:节表是一个结构的数组,这个数组的长度由FileHeader结构中的NumberOfSections来指定,下面来给出这个结构的定义IMAGE_SIZEOF_SHORT_NAME EQU 8IMAGE_SECTION_HEADER STRUCTName1 db IMAGE_SIZEOF_SHORT_NAME dup
2011-12-13 14:49:36 559
原创 the art of disassembly chapter01---lesson1--02
现在来详细的学习一下PE文件头吧,下面再次给出PE文件头的结构:IMAGE_NT_HEADERS STRUCTSignature dd ?FileHeader IMAGE_FILE_HEADER OptionalHeader IMAGE_OPTIONAL_HEADER32I
2011-12-11 22:41:44 449
原创 the art of disassembly charpter01---lesson1---01
(1)overview of the pe format PE文件的整体概况: DOS MZ HEADERS DOS STUB
2011-12-09 22:21:09 444
原创 汇编小记
格式为:变量名 EQU THIS BYTE将变量重新定义为字节THIS是修改属性运算符.该运算符(借助于EQU) 可以指定一个操作数的段地址和偏移地址与下一个存储单元相同.
2011-10-28 19:56:58 425
原创 MASM中的@@标号
MASM中的@@在DOS时代,为标号起名是个麻烦的事情,因为汇编指令用到跳转指令特别多,任何比较和测试等都要涉及跳转,所以在程序中会有很多标号,在整个程序范围内起个不重名的标号要费一番功夫,结果常常用addr1和addr2之类的标号一直延续下去,如果后来要在中间插一个标号,那么就常常出现addr1_1和loop10_5之类奇怪的标号。 实际上,很多标号会使用一到两次,而且不
2011-10-25 20:42:44 800
原创 Gamlers
Time Limit: 1 Second Memory Limit: 32768 KBn 个赌徒决定玩一个游戏.在游戏开始时,每个赌徒把他们的赌注盖在桌子上,助手得确定没有任何两人有相同的赌注数目。如果有人没钱了,他是可以借一些筹码,但是他的赌注是视为无效的。假设
2011-09-24 21:14:13 385
原创 MFC 第二章学习笔记
关于GDI对象的删除首先,C++对象与GDI对象是两个不同的东西,在MFC中,若是由CGdiObject类派生而来的类,则其C++对象中包含了GDI的对象1、对于CGdiObject object其中包含一个函数DelteObject()此函
2011-08-01 20:22:54 506
原创 消息映射的作用机制---MFC学习 2
MFC中,通入消息映射表来影响程序接收到的各种各样的消息。要使用消息映射的类,其必须直接或间接的派生于CCmdTaget类,所有的派生于CCmdTarget类的子类都可以使用消息映射。使用方法如下三步: 1、在类中声明消息映射DECLARE
2011-07-25 13:53:36 725
原创 MFC如何进入程序进入点(MFC学习)----1
当在全局范围内定义了一个全局变量的应用程序类对象时,在程序的所有源代码被执行前,此对象已在内在中创建,在创建此对象时,调用构造函数完成一系列的初始化后。。。由编译器连编入程序的的_tWinMain(hInstance,hPrevInstance,lpCmdLIne,nCmdSho
2011-07-25 11:45:56 1535
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人