千赢娱乐手机登录_ qy8com千赢手机版_千赢网页手机版
做最好的网站

千赢娱乐手机登录

当前位置:千赢娱乐手机登录 > 千赢娱乐手机登录 > PE结构分析,VPS自定义安装Windows

PE结构分析,VPS自定义安装Windows

来源:http://www.modeLspro.net 作者:千赢娱乐手机登录 时间:2019-11-15 15:19

最近公司有几个项目是需要在Windows VPS服务器中运行调试的,但是公司给予的成本有限,所以只能在Linux VPS中考虑,毕竟Linux服务器相比Windows系统便宜很多。开始我们运维部门考虑的是安装VNC远程桌面,安装是可以的,但是链接后很慢,而且打开相当的慢。然后我们考虑在KVM VPS服务器中DD安装Windows系统,后来看到Vultr VPS有支持自定义安装Windows系统,可以自己挂载ISO系统后安装。

源代码如下:

转自:

1、可以自定义ISO系统

typedef struct _IMAGE_BASE_RELOCATION {
    DWORD   VirtualAddress;
    DWORD   SizeOfBlock;
//  WORD    TypeOffset[1];
} IMAGE_BASE_RELOCATION;
typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;

在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文本文件,但是由于Microsoft开发记事本的团队使用了一个非常怪异的行为来保存UTF-8编码的文件,它们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,所以我们就会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报出语法错误,等等。

图片 1

重定位表是一个数组,这个数组的大小记载在 _IMAGE_OPTIONAL_HEADER 的

下面为一段测试程序,由记事本编辑的文本文件导致文件开头前三个字符乱码。

这里我们需要先找到Windows系统的ISO。

.DataDirect‌​ory[IMAGE_DIRECTORY_E‌​NTRY_BASERELOC].Size 成员中

图片 2

2、开通服务器的时候选择自定义系统ISO

结构图如下,图片中 0 和 000 都表示16进制数,转换到二进制是  0000 和 0000 0000 0000:

#include <stdio.h>
#define MAX_LEN 100

int main()
{
    char strLine[MAX_LEN];
    int i = 0;
    memset(strLine,0x0,MAX_LEN);

    FILE * fp;
    fp = fopen("eng_query.txt","r");
    if(NULL == fp)
    {
        printf("open file fail.n");
        return -1;
    }

    while(fgets(strLine,MAX_LEN,fp))
    {
        printf("str = %s",strLine);//将每行字符串打印出来
        for(i=0; i<strlen(strLine); i  )//将每各字符串中的字符以十六进制格式打印出来
        {
            printf("%x  ",strLine[i]);
        }
        printf("nn");
    }
    fclose(fp);
    return 0;
}

图片 3

图片 4

图片 5

我们在开通服务器的时候直接将上传的IOS系统引导挂载进去就可以,然后登入VNC引导安装就可以。这种方法比KVM VPS服务器DD安装简单很多。网上有很多安装教程,我这里找几个可以参考的:

每个元素的大小都记载在 SizeOfBlock 中,这个元素是由 一个 _IMAGE_BASE_RELOCATION 结构体和一个TypeOffset 数组组成的。TypeOffset 数组的每个元素占2个字节,其中,高4位是偏移类型(type),低12位表示需要重定位的地址(Offset),即,它与 VirtualAddress 相加即是指向 PE 映像中需要修改的那个代码的RVA。

 

本文由千赢娱乐手机登录发布于千赢娱乐手机登录,转载请注明出处:PE结构分析,VPS自定义安装Windows

关键词: qy8千亿国际