|
本帖最后由 rainshine 于 2014-9-6 14:22 编辑
首先说明,这个库是给大家用来写自身进程内存的= =不是写别的进程的内存神马的、不要误会,
只是调用WindowsAPI的时候偶尔有指针啥的用这个很方便。过几天写那个window操作库,封装各种api也是基于这个库的。
实际上我写这个就是为了支持window操作= =。。
不多废话了,博客还没发,打算等完善一下再发到博客去。
www.c2014.cc,www.rblog.cc【新版:0.43,9月6日更新】
版本号0.41,tc4.430生成的,tll下载地址:金币拿来~
函数列表和空间名都在上边了,然后我“选择性”解释一部分函数。。。。。
memalloc:分配内存
getprocessheap得到当前进程堆栈。
heapalloc,从堆中分配内存,返回内存地址。第一个参数可以填上面函数的返回值。参数2,填8,表示自动清零分配的内存(也可以写1,不使用连续存取),参数3是分配字节数。
heapfree,清空内存。第一个参数可以写第一个函数的返回值,参数2,写0,参数3是你申请的内存地址。
【以上两个函数必须成对使用!!】
globalalloc:功能类似heapalloc,参数1写0(暂没封装globallock等)(或者40,清零),参数2字节数。
free:类似heapfree,直接写globalalloc返回值。
【必须成对使用!】
bit:位操作
hiword,在c++里是个宏,所以我这也用了全大写命名,取dword类型高16位。
loword,取低16位。
makelong,两个16位组合成32位dword
剩下的从上到下分别是:
按位取反,位或,位与,按位右移,按位左移,十进制转2进制,2禁止转10进制。
readmem:读内存。
readprocessmem:读进程内存,参数1,进程句柄,参数2,来源地址,参数3,读出来放到哪的缓冲区,参数4,读多少字节,参数5,返回实际读了多少字节。
剩下的全是读本进程内存,并转换成需要的数据类型的函数。我不多说了。就是需要说的是,读字符串分为A和W,A是ANSI,W是Unicode,看你读的字符串是什么编码方式的,就用什么函数。易语言程序字符串【变量】全是ansi,tc字符串【变量】全是unicode。然后还有就是iMaxLength是最大的长度,包含字符串最后的结束符!也就是说,比如一个字符串rainshine,调用readstringexa(lp,9)=="rainshin",调用readstringexa(lp,3)=="ra"。
writemem:
writeprocessmem:参数跟read差不多,只不过是写。。
rtlmovememory,等效于memcpy,复制内存,参数1是复制到哪去,参数2,来源,参数3,长度。
fillmemory,填充内存,参数1填充到的内存区域首地址,参数2,长度,参数3,填充的字节数据。
其他的都是写本进程内存的函数,根据需要的类型选择需要的函数。强调的在readmem里都说了。
终于tmd写完了,本来以前还有想法要精简帖子的内容。。。。结果越弄越长了 = =。。。。。。。。。。。
求评分求支持求回复。求访问:www.c2014.cc,www.rblog.cc。谢支持。
=============================================================
新版:
做了以下调整:
1、新增了一些函数
2、hiword、loword、makelong宏(其实。。。是函数- -)弄到了新的命名空间:byte
===
新函数解释:
1、rtlzeromemory,根据美丽大神的建议,新增的函数,清零内存区域。参数1内存区域首地址,参数2长度。等效于:rtlfillmemory(dest,len,0)
2、Byte.DecIntToStr,用winapi做的常用进制转换,稍后博客开源。十进制数据转其他进制字符串。
3、Byte.StrToDecInt,其他进制字符串转int。(tc方面的限制,此函数和上面那个函数支持的最大数是2^31-1)
4、Byte.RtlCompareMemory,比较内存区域,额不对,翻译成对比内存区域更准确。。参数1、2都是地址,参数3是要比较的长度,返回两段内存从首地址往后 相等的长度。
5、MemAlloc.HeapReAlloc,根据美丽大神的建议,新增的函数,重新分配大小,不懂就不要用了。。。参数3是原内存区域首地址。
6、HeapSize,获得大小。例:lp=heapalloc(getprocessheap(),0,8); heapsize(getprocessheap(),0,lp)返回值为8.
7、GlobalReAlloc,类似于heap...
8、globalsize,类似。。
9、globalhandle,lpMem转成hMem,后边我会出例子。
10、globallock和globalunlock我后面也会出例子,如果你alloc的时候dwFlags你写的0那这俩函数根本用不到。
好了就说这些,预计下个版本在博客发布。谢谢支持。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|