看流星社区

 找回密码
 注册账号
查看: 2417|回复: 4

怎么把值写入动态内存地址呀

[复制链接]

该用户从未签到

发表于 2015-5-16 08:12:52 | 显示全部楼层 |阅读模式
.版本 2
.支持库 spec

ReadProcessMemory (进程句柄, 7837084, 缓存区, 4, 0)
ReadProcessMemory (进程句柄, 缓存区 + 2152, 缓存区, 4, 0)
ReadProcessMemory (进程句柄, 缓存区 + 21880, 缓存区, 4, 0)
调试输出 (缓存区)

' WriteProcessMemory (,,,,)

CloseHandle (进程句柄)
  • TA的每日心情
    开心
    2023-11-21 20:18
  • 发表于 2015-5-16 13:00:26 | 显示全部楼层
    :D学习~~进步进步
  • TA的每日心情
    擦汗
    2020-11-21 12:43
  • 发表于 2015-5-18 02:12:34 | 显示全部楼层
    坐等大神来解答

    该用户从未签到

    发表于 2015-5-18 20:01:41 | 显示全部楼层
    void CCALLDlg::OnButton1()
    {
            DWORD pRocessid;
            TCHAR w[12],p[12],r[12];
            // TODO: Add your control notification handler code here
            HWND hWnd=::FindWindow("AskTao","");
            _itot((int)hWnd,w,10);
            //GetDlgItem(IDC_EDIT1)->SetWindowText(w);
            m_mytext+="窗口句柄:";
            m_mytext+=w;
            m_mytext+="\r\n";       

            ::GetWindowThreadProcessId(hWnd,&pRocessid);
            _itot((int)pRocessid,p,10);
            m_mytext+="PID:";
            m_mytext+=p;
            m_mytext+="\r\n";       


            HANDLE h = OpenProcess(PROCESS_ALL_ACCESS,false,pRocessid);
            _itot((int)h,r,10);
            m_mytext+="进程句柄:";
            m_mytext+=r;
            m_mytext+="\r\n";       

            UpdateData(FALSE);

            LPVOID callMemorynum =VirtualAllocEx(h,NULL,0x1500,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);

            if(!WriteProcessMemory(h,callMemorynum,discardeditems,0x1500,NULL)){
          MessageBox(_T("写内存失败!"),_T("错误信息"),MB_OK);
    }
            DWORD Theadid;
            CreateRemoteThread(h,NULL,0,(LPTHREAD_START_ROUTINE)callMemorynum,0,0,&Theadid);
           
            VirtualFreeEx(h,callMemorynum,1500,MEM_RELEASE);

            CloseHandle(h);
    }

    //005EDE96   .  51            PUSH ECX                                 ;  数量
    //005EDE97   >  8B95 F4020000 MOV EDX,DWORD PTR SS:[EBP+2F4]
    //005EDE9D   .  52            PUSH EDX                                 ;  位置
    //005EDE9E   .  68 2CBAAE00   PUSH asktao.00AEBA2C                     ;  ASCII "pos = %d, amount = %d"
    //005EDEA3   .  68 48200000   PUSH 2048
    //005EDEA8   .  E8 D3EF0A00   CALL asktao.0069CE80
    //005EDEAD   .  83C4 10       ADD ESP,10

    VOID discardeditems()
    {
            _asm
            {
                    pushad
                    mov ecx,0x1
                    push ecx
                    mov edx,0x66
                    push edx
                    push 0x00AEBA2C
                    push 0x2048
                    mov esi,0x0069CE80
                    call esi
                    add esp,0x10
                    popad

            }
    }
    这是问道丢掉物品远程写入函数  
    你可以根据这个ReadProcessMemory 这个函数读取内存 基址+偏移  找到地址 直接用WriteProcessMemory写到这个地址就行了
  • TA的每日心情
    擦汗
    2020-11-21 12:43
  • 发表于 2015-5-21 16:51:35 | 显示全部楼层
    .版本 2
    .支持库 spec

    ReadProcessMemory (进程句柄, 7837084, 缓存区, 4, 0)
    ReadProcessMemory (进程 ...
    402179187 发表于 2015-5-16 08:12



        我也是新手,你这个问题我也遇到了,我终于琢磨出了,其实读写可以和到一起如:
    ReadProcessMemory (进程句柄, 7837084, 缓存区, 4, 0)
    ReadProcessMemory (进程句柄,缓冲区+2152(这个一级偏移要换成十进制),缓冲区,4,0)
    WriteProcessMemory(进程句柄,缓冲区+21880(这个二级偏移也要换成十进制),缓冲区(这个缓冲区改你要写的数值100或500或99999等),4,0)
    这样就可以实现了写内存,希望可以帮到你。
    点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 注册账号

    本版积分规则

    小黑屋|手机版|Archiver|看流星社区 |网站地图

    GMT+8, 2024-3-28 23:20

    Powered by Kanliuxing X3.4

    © 2010-2019 kanliuxing.com

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