外挂之路_第一个外挂

F2 下断点,
ctrl+g 表达式
ctrl+a 格式化代码


push 0
push 0
push 0
push 0
call 76A1FD1E

远程注入到进程中

关于OD不能附加正常的进程,点击xp兼容运行和管理运行就OK了

OD添加插件:
把CmdBar.dll 和 CmdBar.ini拷贝到plugin里面,重启OD

基址:010056A4

OD:
dd 010056A4 显示地址
下入内存访问断点,右键点数据

基址:
MOV DWORD PTR DS:[10056A4],ECX

利用spy++ 拦截COMMAND 菜单消息,获得菜单ID,
利用sendmessage,模拟单击菜单

 

 


读取其他进程的内存,
1.查找窗口句柄(FindWindow),
2.获得进程ID,GetWindowThreadProcessId(根据窗口句柄获得)
3.打开进程 OpenProcess

 

 

 

下面上代码:

    m_hSaoLei = ::FindWindow(NULL,_T("扫雷"));
    if(m_hSaoLei == 0){
            AfxMessageBox(_T("游戏未启动"));
    }

    // TODO: 在此添加额外的初始化代码

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void C第一个外挂Dlg::OnBnClickedButton1()
{
    ::SendMessage(m_hSaoLei,WM_COMMAND,521,NULL);
}

void C第一个外挂Dlg::OnBnClickedButton2()
{
    ::SendMessage(m_hSaoLei,WM_COMMAND,522,NULL);
}

void C第一个外挂Dlg::OnBnClickedButton3()
{
    ::SendMessage(m_hSaoLei,WM_COMMAND,523,NULL);
}

void C第一个外挂Dlg::OnBnClickedButton4()
{
    DWORD pId;
    ::GetWindowThreadProcessId(m_hSaoLei,&pId);//获得了进程的ID,
    HANDLE h_process = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,pId);//进程句柄
    INT buff;
    ::ReadProcessMemory(h_process,(LPCVOID)0x10056A4,&buff,4,NULL);

    CString str;
    str.Format(L"数据是%d",buff);
    AfxMessageBox(str);
    //关闭内核对象
    CloseHandle(h_process);
}

 

posted @ 2013-08-18 17:29  宝贝,我永远都在  阅读(436)  评论(1)    收藏  举报