模块基础信息: 有38个子程序 有8个数据类型 有6个类{ Heap(堆处理)//11个类方法
Local(局部内存操作)//9个类方法
进程//11个类方法
内存操作API(内存操作)//10个类方法
Global(全局内存操作)//11个类方法
Virtual(虚拟内存操作)//7个类方法
} 有58个DLL命令 有48个常量 更新:{
加入未公开常量 2 个
加入【内存操作】类DLL<
IsBadCodePtr
GetCurrentThread
GetCurrentThreadId
并且在对应 类 中加入了命令!
> 未公开DLL 2 个 共未公开DLL 2 个
加入汇编函数<
R_类型到字节集()
R_字节集到数据类型()
R_取自模块句柄()//考虑到本模块可能经常用于 主程序 和 DLL之间。所以加入这个函数
R_十到十六进制()
R_十六到十进制()
R_取自程序句柄()
R_取自进程ID()
R_取子程序入口()
R_模块_从内存加载()
R_模块_取句柄()
R_模块_取函数地址()
R_模块_取函数地址2()
R_模块_从文件取自句柄()
R_模块_从文件加载()
R_模块_取Kernel32句柄()
R_取文本型指针()
R_置入汇编()
>未公开汇编函数 5 个 共未公开汇编函数 5 个
}
本次对例程也进行了更新~
至于DLL和主程序之间的传递可以看我的作品:Relative-RZJ 通用IDE V2.2.78.3中的代码 主程序中:
DLL中:
等等......
那么使用本模块可以有哪些作用? 你有想过把自定义的数据结构变量保存到硬盘吗? 你有想过给DLL传自定义的数据结构变量吗? 你想跳出现有的变量限定吗? 你想为所欲为吗? ......Emmm搞错了,不能为所欲为...... 你想跳出限定吗? 你想强制进行任意类型数据转换吗? 也许它能满足你的愿望! R_取通用数据类型() !!注:经测试该函数不是很准确 有可能会误判 仅供参考 请慎用
自定义类型 或 函数指针 这两种判定得比较准确 因为内存中的特征较多 文本型可能会被误判为数组或数值 传来参数如果实际为的数值类型 但其如果恰表示一个指针 则也容易被误判为其他类型
Global.取结构体尺寸()
注意结构中不能嵌套再其他结构或含有数组,同时不能含有字节型、短整数型、字节集型的成员,否则会出问题;并且也都不能直接传字节集。
因为E中自定义数据类型嵌套结构或数组使用的是指针,发布到坛论易精与C/C++中直接为数据体不同;并且E的自定义数据类型里小于4字节的成员会被扩展为4字节,以实现对齐
如果结构像平时那样直接声明为结构时,E会自动把结构转换为C/C++中的标准的那种,但结构写为通用型时E只简单传递结构指针不做转换
R_指针到数据_变量()
【本质是将源数据的值写入目标变量,源数据不是基本类型的时候就是传指针了(注意如果源数据与目标变量类型不能兼容的话,程序就会崩溃)[还可实现父类到子类向下转型等]】
下载链接: https://t00y.com/file/20110282-445239211
|