加密与解密7
来源:互联网 发布:免费画图软件 编辑:程序博客网 时间:2024/05/16 12:03
1,PE相关名词解释
1,入口点(OEP),程序在执行第一行代码地址的值
2,文件偏移地址 当PE文件存储在硬盘上的时候,各个数据的地址称作文件的偏移地址。文件的偏移地址从PE文件的第一个在第一个字节开始计数,总为0
2,虚拟地址(VA)由于windows程序运行在保护模式下,所以应用程序访问存储器所使用的逻辑地址称为虚拟地址,又称内存偏移地址
3,基地址 文件执行时候被映射到指定内存中,这个初始内存地址称为基地址
按照默认设置,用c++建立的exe文件基地址是00400000h,dll文件基地址是10000000h,但是这个值在编译器可以设定
4,可执行文件格式就是PE文件。PE格式定义的主要地方位于我们的头文件winnt.h
dos头:
(注:最左边是文件头的偏移量。) IMAGE_DOS_HEADER STRUCT {
+0h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记
+2h WORD e_cblp // Bytes on last page of file
+4h WORD e_cp // Pages in file +6h WORD e_crlc // Relocations
+8h WORD e_cparhdr // Size of header in paragraphs
+0ah WORD e_minalloc // Minimun extra paragraphs needs
+0ch WORD e_maxalloc // Maximun extra paragraphs needs +0eh WORD e_ss // intial(relative)SS value DOS代码的初始化堆栈SS
+10h WORD e_sp // intial SP value DOS代码的初始化堆栈指针SP
+12h WORD e_csum // Checksum
+14h WORD e_ip // intial IP value DOS代码的初始化指令入口[指针IP]
+16h WORD e_cs // intial(relative)CS value DOS代码的初始堆栈入口
+18h WORD e_lfarlc // File Address of relocation table
+1ah WORD e_ovno // Overlay number +1ch WORD e_res[4] // Reserved words
+24h WORD e_oemid // OEM identifier(for e_oeminfo)
+26h WORD e_oeminfo // OEM information;e_oemid specific
+29h WORD e_res2[10] // Reserved words
+3ch DWORD e_lfanew // Offset to start of PE header 指向PE文件头
} IMAGE_DOS_HEADER ENDS
PE格式详细讲解2 - 系统篇02
让编程改变世界
Change the world by program
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段。下边小甲鱼将为大家详细讲解哈~
首先是IMAGE_NT_HEADERS 结构的定义:(啥?结构不会,先看看小甲鱼童鞋的《零基础入门学习C语言》关于结构方面的章节吧~)
IMAGE_NT_HEADERS STRUCT {+0h DWORDSignature +4h IMAGE_FILE_HEADER FileHeader +18h IMAGE_OPTIONAL_HEADER32OptionalHeader } IMAGE_NT_HEADERS ENDS
Signature字段:
在一个有效的 PE 文件里,Signature 字段被设置为00004550h, ASCII 码字符是“PE00”。标志这 PE 文件头的开始。
“PE00” 字符串是 PE 文件头的开始,DOS 头部的 e_lfanew 字段正是指向这里。
如下图所示:
IMAGE_FILE_HEADER 结构
IMAGE_FILE_HEADER 结构typedef struct _IMAGE_FILE_HEADER {+04hWORD Machine; // 运行平台+06h WORD NumberOfSections; // 文件的区块数目+08hDWORD TimeDateStamp; // 文件创建日期和时间+0Ch DWORD PointerToSymbolTable; // 指向符号表(主要用于调试)+10h DWORD NumberOfSymbols; // 符号表中符号个数(同上)+14h WORD SizeOfOptionalHeader; // IMAGE_OPTIONAL_HEADER32 结构大小+16h WORD Characteristics; // 文件属性} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
该结构如下图所示:
下边,小甲鱼童鞋为大家详细解释各个成员的含义和用法:
(1)Machine:可执行文件的目标CPU类型。
- IMAGE_FILE_MACHINE_I386
- 0x014c
- IMAGE_FILE_MACHINE_IA64
- 0×0200
- IMAGE_FILE_MACHINE_AMD64
- 0×8664
(2)NumberOfSection: 区块的数目。(注:区块表是紧跟在 IMAGE_NT_HEADERS 后边的)
(3)TimeDataStamp: 表明文件是何时被创建的。
这个值是自1970年1月1日以来用格林威治时间(GMT)计算的秒数,这个值是比文件系统(FILESYSTEM)的日期时间更加精确的指示器。如
何将这个值翻译请看:传送门
提示:VC的话可以用_ctime 函数或者 gmtime 函数。
(4)PointerToSymbolTable: COFF 符号表的文件偏移位置,现在基本没用了。
(5)NumberOfSymbols: 如果有COFF 符号表,它代表其中的符号数目,COFF符号是一个大小固定的结构,如果想找到COFF 符号表的结束位置,则需要这个变量。
(6)SizeOfOptionalHeader: 紧跟着IMAGE_FILE_HEADER 后边的数据结构(IMAGE_OPTIONAL_HEADER)的大小。(对于32位PE文件,这个值通常是00E0h;对于64位PE32+文件,这个值是00F0h )。
(7)Characteristics: 文件属性,有选择的通过几个值可以运算得到。( 这些标志的有效值是定义于 winnt.h 内的 IMAGE_FILE_** 的值,具体含义见下表。
普通的EXE文件这个字段的值一般是 0100h,DLL文件这个字段的值一般是 210Eh。)小甲鱼温馨提示:多种属性可以通过 “或运算” 使得同时拥有!
The characteristics of the image. This member can be one or more of the following values.
- IMAGE_FILE_RELOCS_STRIPPED
- 0×0001
- IMAGE_FILE_EXECUTABLE_IMAGE
- 0×0002
- IMAGE_FILE_LINE_NUMS_STRIPPED
- 0×0004
- IMAGE_FILE_LOCAL_SYMS_STRIPPED
- 0×0008
- IMAGE_FILE_AGGRESIVE_WS_TRIM
- 0×0010
- IMAGE_FILE_LARGE_ADDRESS_AWARE
- 0×0020
- IMAGE_FILE_BYTES_REVERSED_LO
- 0×0080
- IMAGE_FILE_32BIT_MACHINE
- 0×0100
- IMAGE_FILE_DEBUG_STRIPPED
- 0×0200
- IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
- 0×0400
- IMAGE_FILE_NET_RUN_FROM_SWAP
- 0×0800
- IMAGE_FILE_SYSTEM
- 0×1000
- IMAGE_FILE_DLL
- 0×2000
- IMAGE_FILE_UP_SYSTEM_ONLY
- 0×4000
- IMAGE_FILE_BYTES_REVERSED_HI
- 0×8000
- 加密与解密7
- 加密与解密
- 脚本加密与解密
- 加密与解密
- 加密与解密
- 加密与解密
- 数据加密与解密
- javascript加密与解密
- 数据加密与解密
- 数据加密与解密
- 加密与解密
- 加密与解密
- 加密与解密
- 加密与解密
- RGSSAD加密与解密
- DESCryptoServiceProvider 加密与解密
- js加密与解密
- 加密与解密DataSet
- Jquery mobile 总结
- C语言程序设计
- 手机阅读行业SWOT分析
- 提升基于英特尔®架构的 Android* 模拟器的速度
- Linux路由表的抽象扩展应用于nf_conntrack
- 加密与解密7
- Precision和Recall
- 【P000-006】 指标数据模块——抽象
- OpenCV 使用摄像头
- 电路设计点滴
- 越南:16名中国人拒绝遣返引发枪战7人死亡(图)
- 分布式文件系统研究-fastDFS(一)
- scikit-learn
- 九度OL题目1547:出入栈