kings12333 发表于 2022-9-12 19:21

WriteProcessMemory

已使用 WriteProcessMemory 成功将字符串写入到内存的目标指针,但是该指针所关联的控件不会显示字符串,必须在这个控件上随意敲几下(有几个字符敲几下),字符串才会更新到控件上来...在控件上随意敲几下应该是占位,这在改写内存里专业术语叫什么??? 写入的数据类型是Byte数组

Huanghousec 发表于 2022-9-13 02:32

你放这段的控件的代码我看你怎么写的

tl;dr 发表于 2022-9-13 07:12

kings12333 发表于 2022-9-13 08:11

tl;dr 发表于 2022-9-13 07:12
得看看代码

代码是VB写的.
Sub WriteSet_2()
    Dim 窗口句柄 As Long
    Dim 标识符 As Long
    Dim 进程句柄 As Long
    Dim Ret As Long, BaseAddress As Long, x As Long

    窗口句柄 = FindWindow(vbNullString, "EliteSpy+ 枕善居收集整理")
    GetWindowThreadProcessId 窗口句柄, 标识符       '
    进程句柄 = OpenProcess(&H1F0FFF, False, 标识符)    '

    If (进程句柄 = 0) Then Exit Sub
    BaseAddress = Val("&H" & "0026DA90") '目标指针
   
    '//数据类型:Byte数组
    Dim s As String, b() As Byte
    s = "T5ABS" & vbNull
    b = StrConv(s, vbFromUnicode) & vbNull
   
   '// 写入内存数据
    Ret = WriteProcessMemory(进程句柄, ByVal BaseAddress, b(0), UBound(b) + 1, 0&)
    x = CloseHandle(进程句柄)

End Sub

kings12333 发表于 2022-9-13 08:12

Huanghousec 发表于 2022-9-13 02:32
你放这段的控件的代码我看你怎么写的

大佬,帮看看,

kings12333 发表于 2022-9-13 08:35

录了一个GIF,演示了两点:
1.演示了指针关联的那个文本框控件,如果不在上面任意占几个字符的位置,它不显示写入指针的数据;
2.演示了文本框你敲了2次占用两个字符的位置,那么无论你对指针写入多少位的数据,它始终只显示两位

kings12333 发表于 2022-9-13 08:36

不支持GIF文件,没法上传,哎

plauger 发表于 2022-9-13 10:19

写完数据你需要刷新那个文本框,比如发WM_PAINT消息,或者调用WINAPI:InvalidateRect ,UpdateWindow之类的

kings12333 发表于 2022-9-13 17:55

plauger 发表于 2022-9-13 10:19
写完数据你需要刷新那个文本框,比如发WM_PAINT消息,或者调用WINAPI:InvalidateRect ,UpdateWindow之类 ...

点击窗体或控件与WM_PAINT应该是一样的,所以与这个的 关系不大,现在主要的问题是文本框不占有字符它就不显示,占几个字符它就显示几位.
页: [1]
查看完整版本: WriteProcessMemory