|
函数一: 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的完整路径,以及版本,子版本等信息。
|
|