找回密码
 加入
搜索
查看: 11043|回复: 18

读取内存,获得显示在桌面上的任何数据(试验)

 火.. [复制链接]
发表于 2011-11-23 19:57:03 | 显示全部楼层 |阅读模式
自学贴
内容待更新
 楼主| 发表于 2011-11-23 20:39:07 | 显示全部楼层
做点东西真难,找些资料又没钱
发表于 2011-11-23 21:16:43 | 显示全部楼层
期待楼主成功
 楼主| 发表于 2011-11-24 01:52:53 | 显示全部楼层
#include <WinAPI.au3>
Global $title="######"
Global $Address=0x#######
$Mem=WinGetProcess($title)
$handle=_MemoryOpen($Mem)
$wtext=_MemoryRead("0x"&Hex($Address),$handle, "double")
MsgBox(0, "", $wtext)
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
Func _MemoryWrite($iv_Address, $ah_Handle, $v_Data, $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
        Else
                DllStructSetData($v_Buffer, 1, $v_Data)
                If @error Then
                        SetError(6)
                        Return 0
                EndIf
        EndIf
        DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
        If Not @error Then
                Return 1
        Else
                SetError(7)
                Return 0
        EndIf
EndFunc   ;==>_MemoryWrite

评分

参与人数 1金钱 +20 收起 理由
dyll8 + 20 分享源码

查看全部评分

 楼主| 发表于 2011-11-24 01:54:04 | 显示全部楼层
可惜找不到基址
发表于 2011-11-28 21:15:02 | 显示全部楼层
终于知道A版为什么把这帖移这区来了..........
原来,楼主是在吹牛B的啊!
发表于 2011-11-30 14:13:01 | 显示全部楼层
刚开始,不能能想干么就干么
发表于 2011-12-20 23:41:55 | 显示全部楼层
显示在桌面上的内容?那是显存吧?操作读内存能读到显存吗?
发表于 2012-1-11 16:42:08 | 显示全部楼层
做个外挂把
发表于 2012-1-19 13:05:49 | 显示全部楼层
慢慢来,总有一天会的。。。。。
发表于 2012-3-17 23:43:01 | 显示全部楼层
神贴顶一下
发表于 2012-3-18 09:47:02 | 显示全部楼层
桌面上的任何数据,是指那些?? 桌面?? 很模糊吧?
发表于 2012-8-27 00:17:07 | 显示全部楼层
真的不错, 谢了楼主
发表于 2012-8-27 08:02:21 | 显示全部楼层
读取内存,这个确实不懂,不知有没相关资料
发表于 2012-8-30 09:25:23 | 显示全部楼层
谢谢分享。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 19:59 , Processed in 0.087111 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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