[分享] WinHEX API函数解释

[复制链接]
  • TA的每日心情
    开心
    2014-4-2 21:30
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    534

    主题

    400

    回帖

    7742

    积分

    Intohard Team

    Rank: 7Rank: 7Rank: 7

    积分
    7742
    发表于 2012-4-13 20:54:57 | 显示全部楼层 |阅读模式
    函数一: int WHX_Init( int APIVersion);

    第一步,我们需要初始化这个dll,因此,我们需要调用 WHX_Init(1)函数,传递一个1,从返回值可以判断我们初始化的结果。
    其返回值可能为:
    2  初始化成功(功能受限)
    1  成功
    0  常规错误
    -1  安装不正确
    -2  API版本不正确

    因此,我们必须有一个非评估版的DLL,才能使用正常使用这些API,一般返回值为1.


    函数二:BOOL WHX_Done();

    此函数用于释放分配的资源,同时终止进程。一般在最后调用。


    函数三:BOOL WHX_Open(LPCSTR lpResName);

    打开指定的文件,也可以是磁盘,分区等,例子:

    C:\test.img  打开文件
    D:   打开本地磁盘
    00h   软驱
    80h   物理磁盘0
    81h   物理磁盘1
    82h   移动媒体
    9Eh   光驱


    函数四:BOOL WHX_Create(LPCSTR lpPathName,int Size);

    创建一个文件,创建是,需要传递文件路径文件名,以及将要创建的文件大小
    此函数可以支持最大创建2的 31次方 = 2 147 483 648字节。但实际我们使用中
    ,发现新版已经超过这个最大限制了。


    函数五:BOOL WHX_Save();

    保存修改的数据。经过分析发现,用winhex修改磁盘或文件,当修改范围小于20M(默认)时,winhex会将修改前的内容备份到自己创建的文件里面,(用于撤销编辑).当超过20M时,winhex会自动提示,此修改将不可逆。因此,当修改的内容超过20M时,也可以不调用此函数。


    函数六:BOOL WHX_SaveAll();

    保存所有打开并修改的文件,功能同上。


    函数七:BOOL WHX_Close();

    调用此函数将直接关闭打开的文件或磁盘,所有未保存的数据将丢失。因此,调用此函数前,根据需求,需要调用保存函数。


    函数八:BOOL WHX_CloseAll();

    功能同上,关闭所有打开的文件或磁盘,不保存修改的数据。


    函数九:BOOL WHX_SaveAs(LPCSTR lpNewFileName);

    另存为。需要传递完整的文件名和路径。



    函数十:BOOL WHX_OpenEx( LPCSTR lpResName,int Param);

    功能同WHX_Open(),但是增加了一个Param的参数。Param的目的主要是传递编辑模式,参数只能是以下三种之一:
    0x00000001: 只读方式
    传递只读方式后,文件或磁盘将无法写入操作,只能查看

    0x00000002: 替换方式
    之前介绍过,winhex写入的方式是先写入到自己创建的临时文件,在用户点击保存后再将文件写入到文件或磁盘。而这种方式是直接写入到磁盘,若写入错误,无法撤销,由于少了一个步骤,写入速度得到了很大提高,一般不建议新手使用。
    0x00000004: 取证方式
    此参数需要法政版才可以使用。

    函数十一:
    BOOL WHX_Read(LPVOID lpBuffer,int Bytes);
    从指定的偏移地址开始读取Bytes个字节到lpBuffer里面,读到内存后,我们可以对这里的数据执行任意的操作,比如查找0x55aa的结束标记,或对这段内容进行加密,然后保存到文件,又或者将这段内容替换用户指定的值等等。数据源可以是文件,也可以是磁盘。


    函数十二:
    BOOL WHX_Write(LPVOID lpBuffer,int Bytes);
    功能与上一个函数相反。此函数是将lpBuffer里面的内容写入到指定的偏移地址,写入长度为Bytes个字节。


    函数十三:
    BOOL WHX_GetSize(LPLONGLONG lpSize);
    获取从当前位置到指定偏移地址的字节数,返回值保存在lpSize。



    函数十四
    BOOL WHX_Move(LONGLONG Distance);
    移动当前文件指针的位置,共计移动Distance个字节,向后移动必须大于0,向前移动必须小于0。


    函数 十六:
    BOOL WHX_CurrentPos(LPLONGLONG lpOfs);
    获取当前的偏移值,获取成功后,值保存在lpOfs里面。


    函数十七:
    BOOL WHX_SetBlock(LONGLONG Ofs1,LONGLONG Ofs2);
    设置选块,开始偏移为Ofs1,结束偏移为Ofs2.设置选款后,我们可以对这段选块进行拷贝,或者“写入新文件”的操作。如果要清空当前的选择,则需要将Ofs1和Ofs2都设置为-1.


    函数十八:
    BOOL WHX_Copy();
    此函数是将选块内的数据拷贝到剪切板,由于内容容量有限,因此拷贝的数据量不能太大。


    函数十九:

    BOOL WHX_CopyIntoNewFile(LPCSTR lpNewFileName);
    由于WHX_Copy()的数据量有限,而我们需要将某一段区域内的数据都保存到新的文件里面,我们可以调用此函数,将选块内的数据保存,需要传递一个具体的保存路径和文件名。


    函数二十:
    BOOL WHX_Cut();
    剪切文件,注意,此功能只能针对文件,不能剪切磁盘扇区。


    函数二十一
    BOOL WHX_Remove();
    移除设定的选块内容,此功能也只能针对于文件有效,无法移除磁盘扇区。


    函数二十二:
    BOOL WHX_Paste();
    粘贴剪切板数据,此功能只针对文件有效,无法粘贴数据到磁盘扇区。对于磁盘扇区,需要调用“写入”功能。


    函数二十三:
    BOOL WHX_WriteClipboard();
    将当前剪切板的数据写入到文件或者磁盘,一般在调用WHX_Copy()后应立即调用此函数,以保证数据的正确性。


    函数二十四:
    BOOL WHX_Find(LPCSTR lpData,LPCSTR lpOptions);
    强大的搜索功能,从当前磁盘或者文件开始搜索lpData,lpOptions为搜索选项,可以设置为:向下搜索,向上搜索,大小写匹配,使用通配符等等。


    函数二十五:
    BOOL WHX_Replace(LPCSTR lpData1,LPCSTR lpData2, LPCSTR lpOptions);
    替换功能,设置方法同上,数据恢复中不建议使用。


    函数二十六:
    BOOL WHX_WasFound();
    如果在调用 WHX_Find 或者 WHX_Replace找到了数据,那么此函数将返回真。


    函数二十七:
    BOOL WHX_Convert(LPCSTR lpSrcFormat,LPCSTR lpDstFormat);编码转换函数,支持的编码有  “ANSI”, “IBM”, “EBCDIC”,“Binary”, “HexASCII”, “IntelHex”, “MotorolaS”, “Base64”, “UUCode”。

    函数二十八:
    BOOL WHX_Encrypt(LPCSTR lpKey,int Algorithm);
    按照指定的key和算法加密数据。

    函数二十九:
    BOOL WHX_Decrypt(LPCSTR lpKey,int Algorithm);
    按照设定的算法解密数据。


    函数三十:
    BOOL WHX_GetCurObjName(LPCSTR lpObjName);
    获取当前活动窗口的名称。


    函数三十一:
    BOOL WHX_SetFeedbackLevel(int Level);
    对于错误信息通知用户的方法。参数Level为界面的表示方式:
    0显示消息框和进度窗口
    仅1禁止消息框
    仅2禁止进度窗口
    3禁止消息框和进度窗口

    函数三十二:
    BOOL WHX_GetLastError(LPCSTR lpErrorMsg);
    获取当前错误码,比如当硬盘有坏道时,读取扇区失败,即可调用此函数获取错误代码,假错误代码为23,则会显示“磁盘冗余错误”。


    函数三十三:
    BOOL WHX_SetLastError(LPCSTR lpErrorMsg);
    设置一个错误消息。


    函数三十四:
    BOOL WHX_GetStatus(LPCSTR lpInstPath LPLONG lpWHXVersion LPLONG lpWHXSubVersion LPLONG lpReserved);
    获取当前使用的DLL的完整路径,以及版本,子版本等信息。



  • TA的每日心情
    奋斗
    2020-4-18 22:10
  • 签到天数: 1339 天

    [LV.10]一品大学士

    44

    主题

    2380

    回帖

    9955

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    9955
    发表于 2012-4-13 21:34:49 | 显示全部楼层
    支持下!!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-8-1 07:19
  • 签到天数: 15 天

    [LV.4]七品知县

    2

    主题

    954

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    14100
    发表于 2012-4-13 22:16:48 | 显示全部楼层
    严重支持[s:9]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-11-26 14:17
  • 签到天数: 5 天

    [LV.2]九品芝麻官

    3

    主题

    229

    回帖

    274

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    274
    发表于 2012-4-14 09:03:12 | 显示全部楼层
    感谢楼主的分享,支持!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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