当前位置:云顶娱乐app下载 > 云顶集团4008 > 布局本地服务器【云顶集团4008】,输入表结商谈

布局本地服务器【云顶集团4008】,输入表结商谈

文章作者:云顶集团4008 上传时间:2019-10-05

Constant

Value

Description

IMAGE_REL_BASED_ABSOLUTE

  0

The base relocation is skipped. This type can be used to pad a block.

IMAGE_REL_BASED_HIGH

  1

The base relocation adds the high 16 bits of the difference to the 16bit field at offset. The 16-bit field represents the high value of a 32-bit word.

IMAGE_REL_BASED_LOW

  2

The base relocation adds the low 16 bits of the difference to the 16-bit field at offset. The 16-bit field represents the low half of a 32-bit word.

IMAGE_REL_BASED_HIGHLOW

  3

The base relocation applies all 32 bits of the difference to the 32-bit field at offset.

IMAGE_REL_BASED_HIGHADJ

  4

The base relocation adds the high 16 bits of the difference to the 16-bit field at offset. The 16-bit field represents the high value of a 32-bit word. The low 16 bits of the 32-bit value are stored in the 16-bit word that follows this base relocation. This means that this base relocation occupies two slots.

IMAGE_REL_BASED_MIPS_JMPADDR

  5

The relocation interpretation is dependent on the machine type.

When the machine type is MIPS, the base relocation applies to a MIPS jump instruction.

IMAGE_REL_BASED_ARM_MOV32

  5

This relocation is meaningfull only when the machine type is ARM or Thumb. The base relocation applies the 32-bit address of a symbol across a consecutive MOVW/MOVT instruction pair.

IMAGE_REL_BASED_RISCV_HIGH20

  5

This relocation is only meaningful when the machine type is RISC-V. The base relocation applies to the high 20 bits of a 32-bit absolute address.

 

  6

Reserved, must be zero.

IMAGE_REL_BASED_THUMB_MOV32

  7

This relocation is meaningful only when the machine type is Thumb. The base relocation applies the 32-bit address of a symbol to a consecutive MOVW/MOVT instruction pair.

IMAGE_REL_BASED_RISCV_LOW12I

  7

This relocation is only meaningful when the machine type is RISC-V. The base relocation applies to the low 12 bits of a 32-bit absolute address formed in RISC-V I-type instruction format.

IMAGE_REL_BASED_RISCV_LOW12S

  8

This relocation is only meaningful when the machine type is RISC-V. The base relocation applies to the low 12 bits of a 32-bit absolute address formed in RISC-V S-type instruction format.

IMAGE_REL_BASED_MIPS_JMPADDR16

  9

The relocation is only meaningful when the machine type is MIPS. The base relocation applies to a MIPS16 jump instruction.

IMAGE_REL_BASED_DIR64

10

The base relocation applies the difference to the 64-bit field at offset.

强有力的windbg定位内部存款和储蓄器败露,两句发号施令搞定!

首首先登场陆 下载安装phpstudy,特别轻松不详解;

在那些IID数组中,并未提出有多少个项(正是没有通晓指明有稍许个链接文件),但它提起底是以一个全为NULL(0) 的 IID 作为完毕的标识。

 

偏移类型的意义如下:

4.安顿站点域名

上面只摘录特别首要的字段:

  • 按Win+1,Win+2……就能够分别打开职分栏的前后相继。

VirtualAddress 为 0x一千,SizeOfBlock 为 0x64。第三个条约为 0x338C,高四人为 0x3,offset为 0x38C,即偏移地址为 0x138C (由 0x一千 + 0x38C得来)应用于此地址上全部32个人。展开C32Asm反汇编查看:

云顶集团4008 1

在 PE文件头的 IMAGE_OPTIONAL_HEADE福睿斯 结构中的 DataDirectory(数据目录表) 的第一个成员便是指向输入表的。每种被链接进来的 DLL文件都各自对应多少个IMAGE_IMPORT_DESCEscortIPTOEvoque (简称IID) 数组结构。

新建文件夹

另外中文翻译:

3>.this over  (小编将配备时代风尚程截图了,下方流程)

FirstThunk

它含有由IMAGE_THUNK_DATA定义的 first thunk数组的虚地址,通过loader用函数虚地址开始化thunk。

在Orignal First Thunk缺席下,它指向first thunk:Hints和The Function names的thunks。

 

上边来阐明下OriginalFirstThunk和FirstThunk。就个人知道来讲:

1. 在文件中时,他们都分别针对贰个汉兰达VA地址。那一个地址转变来文件中,分别对应四个以 IMAGE_THUNK_DATA 为元素的的数组,那三个数组是以三个填写为 0 的IMAGE_THUNK_DATA作为完毕标记符。固然他们那七个表地方不一致,但实际上内容是大同小异的。此时,每种IMAGE_THUNK_DATA 成分指向的是一个记录了函数名和相对应的DLL文件名的 IMAGE_IMPORT_BY_NAME结构体。

  1. 为何会有五个一样的数组呢?是有缘由的:

OriginalFirstThunk 指向的数组经常堪当  hint-name table,即 HNT ,他在 PE 加载到内部存款和储蓄器中时被保存了下去且长久不会被改变。可是在 Windows 加载过 PE 到内部存款和储蓄器之后,Windows 会重写 FirstThunk 所指向的数组成分中的内容,使得数组中每种 IMAGE_THUNK_DATA 不再代表针对带有函数描述的 IMAGE_THUNK_DATA 成分,而是径直针对了函数地址。此时,FirstThunk 所指向的数组就称为输入地址表(Import Address Table ,即平日说的 IAT)。

重写前:

云顶集团4008 2

重写后:

 云顶集团4008 3

(以上两张图片来源于:)

typedef struct _IMAGE_THUNK_DATA32 {
    union {
        DWORD ForwarderString;      // PBYTE  指向一个转向者字符串的RVA
        DWORD Function;             // PDWORD 被输入的函数的内存地址
         DWORD Ordinal;              // 被输入的 API 的序数值
         DWORD AddressOfData;        // PIMAGE_IMPORT_BY_NAME   指向 IMAGE_IMPORT_BY_NAME
    } u1;
} IMAGE_THUNK_DATA32;
typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;

根据 _IMAGE_THUNK_DATA32 所指设想地址转到文件地方能够博得实在的 _IMAGE_IMPORT_BY_NAME 数据

typedef struct _IMAGE_IMPORT_BY_NAME {
    WORD   Hint;     // 序号 

    CHAR   Name[1];  // 实际上是一个可变长的以0为结尾的字符串

} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

 

举个例子有前后相继:

云顶集团4008 4

文字版:

#include <windows.h>
int WINAPI WinMain(_In_ HINSTANCE hInstance, 
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPSTR lpCmdLine,
    _In_ int nShowCmd)
{
    MessageBoxA(0, "hello", "my message", MB_OK);
    SetWindowTextA(0, "Si Wang");

    return 0;
}

此程序行使了五个 Windows API : MessageBoxA 和 SetWindowTextA

编译获得程序(为简化表明,区段地点由软件总结出):

云顶集团4008 5

云顶集团4008 6

作者们试着找寻 MessageBoxA。首先剖判 PE 头文件,找到导出表在文书中的地点:

云顶集团4008 7

输入表地点在 .rdata 区段内, 0x2264 – 0x三千 = 0x0264 获得偏移量。加上文件地方 0x0E00 得到实质上文件偏移量(0x0E00 + 0x264 = 0x1064):0x1064。

接下去翻看 0x1064 处:

云顶集团4008 8

能够博得四个 DLL 的陈述,最终二个_IMAGE_IMPORT_DESC奔驰G级IPTOEnclave以0填充表示甘休:

那正是说只要一个个翻看各种DLL对应的多寡就能够找到,可是从前本身把装有的数据都看了下,在率先个DLL中

基于第贰个DLL描述的 OriginalFirstThunk 的 0x2350 转变能够领略,_IMAGE_THUNK_DATA32 在文件的 0x1150处,FirstThunk 指向的数量一致:

云顶集团4008 9

于是乎就得到了文本中的 MessageBoxA 的新闻。

谈到底,在内部存储器中 FirstThunk 所指地方上的_IMAGE_布局本地服务器【云顶集团4008】,输入表结商谈输入地点表。THUNK_DATA32 数组被 Windows 加载后被重写后就成了轶事中的 IAT ,Import Address Table,输入地址表。使用 OllyDbg 查看运营时情状:

云顶集团4008 10

在这里打开命令窗口

找到数据:

云顶集团4008 11

OriginalFirstThunk

它指向first thunk,IMAGE_THUNK_DATA,该 thunk 拥有 Hint 和 Function name 的地址。

 

本文由云顶娱乐app下载发布于云顶集团4008,转载请注明出处:布局本地服务器【云顶集团4008】,输入表结商谈

关键词: