自绘DLL函数查看器

易语言 2020-08-14 15:42:31

自绘DLL函数查看器

.如果真 (IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory [1].Size > 0)
移动读写位置 (文件号, #文件首, IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory [1].VirtualAddress - 计算偏差 (IMAGE_NT_HEADERS32.OptionalHeader.DataDirectory [1].VirtualAddress))
tmp = 读入字节集 (文件号, 40)
.如果真 (取字节集长度 (tmp) = 40)
RtlMoveMemory_IMAGE_EXPORT_DIRECTORY (IMAGE_EXPORT_DIRECTORY, 取变量数据地址 (tmp), 40)
.如果真 (IMAGE_EXPORT_DIRECTORY.Name ≠ 0)
移动读写位置 (文件号, #文件首, IMAGE_EXPORT_DIRECTORY.Name - 计算偏差 (IMAGE_EXPORT_DIRECTORY.Name))
读入数据 (文件号, str)
偏差1 = 计算偏差 (IMAGE_EXPORT_DIRECTORY.AddressOfNameOrdinals)
偏差2 = 计算偏差 (IMAGE_EXPORT_DIRECTORY.AddressOfFunctions)
.计次循环首 (IMAGE_EXPORT_DIRECTORY.NumberOfNames, i)
移动读写位置 (文件号, #文件首, IMAGE_EXPORT_DIRECTORY.AddressOfNameOrdinals - 偏差1 + i × 2 - 2)
读入数据 (文件号, Ordinal)
移动读写位置 (文件号, #文件首, IMAGE_EXPORT_DIRECTORY.AddressOfFunctions - 偏差2 + Ordinal × 4)
读入数据 (文件号, Function)
移动读写位置 (文件号, #文件首, IMAGE_EXPORT_DIRECTORY.AddressOfNames - 计算偏差 (IMAGE_EXPORT_DIRECTORY.AddressOfNames) + i × 4 - 4)
读入数据 (文件号, Name)
移动读写位置 (文件号, #文件首, Name - 计算偏差 (Name))
读入数据 (文件号, str)
函数索引 = ListBox.插入表项 (, 格式化文本 (“%.4X”, 到整数 (Ordinal + 1)), , , )
ListBox.标题 (函数索引, 1, str)
ListBox.标题 (函数索引, 2, 格式化文本 (“%.8X”, Function))
ListBox.标题 (函数索引, 3, 格式化文本 (“%.8X”, 到整数 (Function - 计算偏差 (Function))))
.计次循环尾 ()