找回密码
 加入
搜索
查看: 2505|回复: 2

请问有谁能帮忙把这段C语言程序转换成AutoIT

  [复制链接]
发表于 2008-9-10 20:25:04 | 显示全部楼层 |阅读模式
请问有谁能帮忙把这段C语言程序转换成AutoIT



// ReadBIOS.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "ReadBIOS.h"
#define MAX_LOADSTRING 100

typedef struct _UNICODE_STRING {
  USHORT  Length;//长度
  USHORT  MaximumLength;//最大长度
  PWSTR  Buffer;//缓存指针,访问物理内存时,此处指向UNICODE字符串"\device\physicalmemory"
} UNICODE_STRING,*PUNICODE_STRING;


typedef struct _OBJECT_ATTRIBUTES {
    ULONG Length;//长度 18h
    HANDLE RootDirectory;//  00000000
    PUNICODE_STRING ObjectName;//指向对象名的指针
    ULONG Attributes;//对象属性00000040h
    PVOID SecurityDescriptor;        // Points to type SECURITY_DESCRIPTOR,0
    PVOID SecurityQualityOfService;  // Points to type SECURITY_QUALITY_OF_SERVICE,0
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;

typedef DWORD  (__stdcall *ZWOS)(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
typedef DWORD  (__stdcall *ZWMV)(HANDLE,HANDLE,PVOID,ULONG,ULONG,PLARGE_INTEGER,PSIZE_T,DWORD,ULONG,ULONG);
typedef DWORD  (__stdcall *ZWUMV)(HANDLE,PVOID);



// 此代码模块中包含的函数的前向声明:
int main()
{
        HACCEL hAccelTable;
        UNICODE_STRING struniph;
        OBJECT_ATTRIBUTES obj_ar;
        ZWOS ZWopenS;
        ZWMV ZWmapV;
        ZWUMV ZWunmapV;
        HANDLE hSection;
        HMODULE hinstLib;
        DWORD ba;
        LARGE_INTEGER so;
        so.LowPart=0x000F0000;//物理内存的基址,就是f000:0000
        so.HighPart=0x00000000;
        SIZE_T ssize;
        ssize=0xffff;
        wchar_t strPH[30]=L"\\device\\physicalmemory";
        FILE *f1;

        // 初始化全局字符串
        //变量初始化
    ba=0;//联系后的基址将在这里返回
    struniph.Buffer=strPH;
        struniph.Length=0x2c;//注意大小是按字节算
        struniph.MaximumLength =0x2e;//也是字节
    obj_ar.Attributes =64;//属性
        obj_ar.Length =24;//OBJECT_ATTRIBUTES类型的长度
        obj_ar.ObjectName=&struniph;//指向对象的指针
        obj_ar.RootDirectory=0;
        obj_ar.SecurityDescriptor=0;
    obj_ar.SecurityQualityOfService =0;
//读入ntdll.dll,得到函数地址
    hinstLib = LoadLibrary("ntdll.dll");
        ZWopenS=(ZWOS)GetProcAddress(hinstLib,"ZwOpenSection");
    ZWmapV=(ZWMV)GetProcAddress(hinstLib,"ZwMapViewOfSection");
        ZWunmapV=(ZWUMV)GetProcAddress(hinstLib,"ZwUnmapViewOfSection");
//调用函数,对物理内存进行映射
    ZWopenS(&hSection,4,&obj_ar);
        ZWmapV((HANDLE)hSection,(HANDLE)0xffffffff,&ba,0,ssize,&so,&ssize,1,0,2);
        printf("%s",(void*)ba);

f1=fopen("BIOS.MEM","wb+");
fwrite((void*)ba,ssize,1,f1);
fclose(f1);
        return 0;

}
发表于 2008-9-10 21:18:40 | 显示全部楼层
你还不如说这是干吗用的,要实现什么

不一定非得用带面“翻译”来解决问题,只要能达到目标不就行了!?
发表于 2008-9-10 22:21:14 | 显示全部楼层
不能,这不可能,au3不适合与底层打交道。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 13:59 , Processed in 0.077195 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表