402179187 发表于 2015-5-16 08:12:52

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

.版本 2
.支持库 spec

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

' WriteProcessMemory (,,,,)

CloseHandle (进程句柄)

guisong 发表于 2015-5-16 13:00:26

:D学习~~进步进步

ffwihyy 发表于 2015-5-18 02:12:34

坐等大神来解答

web11234 发表于 2015-5-18 20:01:41

void CCALLDlg::OnButton1()
{
        DWORD pRocessid;
        TCHAR w,p,r;
        // 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:
//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写到这个地址就行了

ffwihyy 发表于 2015-5-21 16:51:35

.版本 2
.支持库 spec

ReadProcessMemory (进程句柄, 7837084, 缓存区, 4, 0)
ReadProcessMemory (进程 ...
402179187 发表于 2015-5-16 08:12 http://www.kanliuxing.com/images/common/back.gif


    我也是新手,你这个问题我也遇到了,我终于琢磨出了,其实读写可以和到一起如:
ReadProcessMemory (进程句柄, 7837084, 缓存区, 4, 0)
ReadProcessMemory (进程句柄,缓冲区+2152(这个一级偏移要换成十进制),缓冲区,4,0)
WriteProcessMemory(进程句柄,缓冲区+21880(这个二级偏移也要换成十进制),缓冲区(这个缓冲区改你要写的数值100或500或99999等),4,0)
这样就可以实现了写内存,希望可以帮到你。
页: [1]
查看完整版本: 怎么把值写入动态内存地址呀