TC官方合作论坛

 找回密码
 立即注册
查看: 32192|回复: 149

[其他] 更新:内存操作库 更加强大

  [复制链接]
发表于 2014-8-22 17:40:56 | 显示全部楼层 |阅读模式
本帖最后由 rainshine 于 2014-9-6 14:22 编辑

首先说明,这个库是给大家用来写自身进程内存的= =不是写别的进程的内存神马的、不要误会,
只是调用WindowsAPI的时候偶尔有指针啥的用这个很方便。过几天写那个window操作库,封装各种api也是基于这个库的。
实际上我写这个就是为了支持window操作= =。。
不多废话了,博客还没发,打算等完善一下再发到博客去。
www.c2014.ccwww.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.ccwww.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

评分

参与人数 4威望 +30 金币 +40 收起 理由
kk1304231990 + 10 + 10
b44412545 + 10 + 10 好屌的操作
如此美丽。 + 10 前排混脸熟
cylhb + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-8-23 00:01:55 | 显示全部楼层
支持一下, 慢慢 看
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-22 18:03:17 | 显示全部楼层
有两个函数还是可以对外部进程操作的...
回复 支持 反对

使用道具 举报

发表于 2014-8-22 18:06:20 | 显示全部楼层
看到这么多函数,不管3721,mark再说。

评分

参与人数 1金币 +1 收起 理由
如此美丽。 + 1 为啥一定要 3721 不能2816? ..

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 18:09:13 | 显示全部楼层
cylhb 发表于 2014-8-22 18:06
看到这么多函数,不管3721,mark再说。

谢啦、哈哈。其实不算多。后续还得增加。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 18:09:26 | 显示全部楼层
sam7894604 发表于 2014-8-22 18:03
有两个函数还是可以对外部进程操作的...

0.0不要说的这么~~明显~~~
回复 支持 反对

使用道具 举报

发表于 2014-8-22 18:20:04 | 显示全部楼层
牛逼!谢谢楼主
回复 支持 反对

使用道具 举报

发表于 2014-8-22 18:23:44 | 显示全部楼层
{:soso_e122:}   你那么屌   你让男人怎么活
回复 支持 反对

使用道具 举报

发表于 2014-8-22 18:41:04 | 显示全部楼层
{:soso_e122:}  目测发现没 RtlZeroMemory    HeapReAlloc   GlobalReAlloc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 21:35:22 | 显示全部楼层
如此美丽。 发表于 2014-8-22 18:41
目测发现没 RtlZeroMemory    HeapReAlloc   GlobalReAlloc

所以我说后续还得增加。。。。。。这几个不怎么常用我不打算弄了 就是globallock神马的我觉得还得加上
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 21:43:42 | 显示全部楼层
如此美丽。 发表于 2014-8-22 18:23
你那么屌   你让男人怎么活

你说的这话很有含义。。。。。。哈哈哈哈
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-21 00:00 , Processed in 0.045556 second(s), 28 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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