guland 发表于 2010-12-10 20:54:11

[已解决] 如何修改内存中的数据?

本帖最后由 guland 于 2010-12-11 12:44 编辑

如题,在论坛中翻了半天也没找到相关资料.....

其实我只是想要在一个固定的内存地址中写入一个66字节的数据

my788521 发表于 2010-12-10 21:56:07

http://www.autoitx.com/thread-3735-1-1.html

我这个贴可能对你有点帮助

guland 发表于 2010-12-11 08:32:21

回复 2# my788521


    这篇文章早就拜读过了,一直都是写入失败,不知道是什么原因

piaorou 发表于 2010-12-11 09:42:47

调用例子
        $kernel32 = DllOpen('kernel32.dll')
        $pid = Run(@ScriptDir & '\SRO_Client.exe 0 /4 1 0')
        $mid = memopen($pid)
        memwrite($mid, 0x65F33C, '8B0D5C79D3008B118B4214FFD05F83C410C3')
        memclose($mid)
        $kernel32 = DllOpen('kernel32.dll')
        DllClose($kernel32)
相关函数
Func memopen($pid)
        Local $mid = DllCall($kernel32, 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', 1, 'int', $pid)
        Return $mid
EndFunc   ;==>memopen

Func memread($mid, $adress, $type = 'dword')
        Local $struct = DllStructCreate($type)
        DllCall($kernel32, 'int', 'ReadProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', '')
        Return DllStructGetData($struct, 1)
EndFunc   ;==>memread

Func memwrite($mid, $adress, $hex)
        Local $struct = DllStructCreate('byte[' & BinaryLen('0x' & $hex) & ']')
        For $i = DllStructGetSize($struct) To 1 Step -1
                DllStructSetData($struct, 1, BinaryMid('0x' & $hex, $i, 1), $i)
        Next
        Local $x = DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $mid, 'ptr', $adress, 'int', DllStructGetSize($struct), 'dword', 0x40, 'dword*', 0)
        DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', 0)
        DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $mid, 'ptr', $adress, 'int', DllStructGetSize($struct), 'dword', $x, 'dword*', 0)
EndFunc   ;==>memwrite

Func memclose($mid)
        DllCall($kernel32, 'int', 'CloseHandle', 'int', $mid)
EndFunc   ;==>memclose

lixatom 发表于 2011-2-2 13:54:02

不太懂,先收藏,慢慢读

netgogo 发表于 2013-9-11 09:56:27

挺麻烦,论坛里好像有个红色警戒修改器,就这个

yalong486 发表于 2013-11-14 03:36:26

测试过,对于我来说,lanfeng的不能用,这个可以用。
页: [1]
查看完整版本: [已解决] 如何修改内存中的数据?