找回密码
 加入
搜索
查看: 22765|回复: 19

[求购] 50RMB求购一个内存搜索的源码

[复制链接]
发表于 2010-12-5 00:31:24 | 显示全部楼层 |阅读模式
悬赏1金钱已解决
搜索指定进程内存中是否含有某个字符串,比如搜索QQ进程,搜索内容为www.****************.com  
把QQ进程里包含www.***.com的网址都搜索出来。
可以先看编译好的EXE程序,满意后给钱拿源码。
下面提供 搜索一个内存地址的 源码, 只要做个循环搜索指定进程的内存就可以了。
内存开始位置:StartAddress= $10000  结束位置   EndAddress = $7FFEFFFF
$Handle = _MemoryOpen(4024)  ;4024 为进程ID号 
$MEM = _MemoryRead(0x040BA7F0, $Handle,"byte[255]")  ;0x040BA7F0 为要搜索的地址, 这里怎么改成搜索整个进程的内存呢?然后能否做个循环,如果搜索到www则输出到文本中呢???
$bbb = BinaryToString($MEM)
_MemoryClose($Handle)
MsgBox(0,0,$bbb)
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)
        If Not ProcessExists($iv_Pid) Then
                SetError(1)
                Return 0
        EndIf
        Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
        If @error Then
                SetError(2)
                Return 0
        EndIf
        Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $if_InheritHandle, 'int', $iv_Pid)
        If @error Then
                DllClose($ah_Handle[0])
                SetError(3)
                Return 0
        EndIf
        $ah_Handle[1] = $av_OpenProcess[0]
        Return $ah_Handle
EndFunc   ;==>_MemoryOpen
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
        If Not IsArray($ah_Handle) Then
                SetError(1)
                Return 0
        EndIf
        Local $v_Buffer = DllStructCreate($sv_Type)
        If @error Then
                SetError(@error + 1)
                Return 0
        EndIf
        DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
        If Not @error Then
                Local $v_Value = DllStructGetData($v_Buffer, 1)
                Return $v_Value
        Else
                SetError(6)
                Return 0
        EndIf
EndFunc   ;==>_MemoryRead
Func _MemoryClose($ah_Handle)
        If Not IsArray($ah_Handle) Then
                SetError(1)
                Return 0
        EndIf
        DllCall($ah_Handle[0], 'int', 'CloseHandle', 'int', $ah_Handle[1])
        If Not @error Then
                DllClose($ah_Handle[0])
                Return 1
        Else
                DllClose($ah_Handle[0])
                SetError(2)
                Return 0
        EndIf
EndFunc   ;==>_MemoryClose

最佳答案

查看完整内容

我有一个写好的搜索的例子 不知道符合不符合你的要求 你加我QQ吧 188885008 补充一下: 我是写来搜索QQ进程 ClientKey 的 已经用了很长时间了 从 0x00100000 到 0x04FFFFFF 大概也就5-10秒
发表于 2010-12-5 00:31:25 | 显示全部楼层
本帖最后由 xingkekeli 于 2010-12-30 19:04 编辑

我有一个写好的搜索的例子 不知道符合不符合你的要求 你加我QQ吧 188885008

补充一下: 我是写来搜索QQ进程 ClientKey 的 已经用了很长时间了
从 0x00100000 到 0x04FFFFFF 大概也就5-10秒
发表于 2010-12-5 15:36:57 | 显示全部楼层
本帖最后由 manlty 于 2010-12-5 16:42 编辑

我有这个程序,你给我充50到手机吧13671471937 ,不过如果按照每个地址都搜一下循环下去,大概要3万多小时才能搜完
 楼主| 发表于 2010-12-5 17:27:48 | 显示全部楼层
怎么可能搜那么久呢。 我用ce搜也就3-4秒钟的事啊。 还有能否先看一下编译好的exe文件呢,如果可以用的话就直接交易了。
 楼主| 发表于 2010-12-13 09:24:14 | 显示全部楼层
怎么没人知道吗?还是50太少啦。要是50太少了,100也可以啦。求高手帮忙,谢谢。
发表于 2010-12-30 19:20:36 | 显示全部楼层
调用的是API的VirtualQueryEx  可以完成搜索。
 楼主| 发表于 2011-1-15 09:46:15 | 显示全部楼层
已经完成,非常感谢 5 楼提供的代码,谢谢。
发表于 2011-1-25 17:57:15 | 显示全部楼层
虽然我不会,但我感觉50也太少了,怎么也的几百吧
发表于 2011-1-28 09:48:10 | 显示全部楼层
不错嘛,就是有点太便宜了吧
发表于 2011-1-28 09:48:41 | 显示全部楼层
还是支持你!!
发表于 2011-3-4 03:48:38 | 显示全部楼层
50是有点少了
发表于 2011-3-4 21:36:57 | 显示全部楼层
强人一个~~~~~~~~~
发表于 2011-3-4 21:37:02 | 显示全部楼层
强人一个~~~~~~~~~
发表于 2011-4-7 09:37:04 | 显示全部楼层
高手就是高手呀
发表于 2011-4-21 13:45:43 | 显示全部楼层
好奇啊。为什么一段段的源代码是怎么写来的呢?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-28 17:39 , Processed in 0.075025 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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