16,551
社区成员
发帖
与我相关
我的任务
分享
int res;
int myeax;
int myebx;
int myecx;
int myedx;
int myesp;
int myebp;
int myedi;
int myesi;
CString callinf;
CString callstr;//以上是一些全局对象
void ( * Target_CI_HYGameMapData__CI_HYGameMapData)()=0;//目标函数地址
void Detour_CI_HYGameMapData__CI_HYGameMapData()//我自己的函数
{
_asm
{
mov myecx,ecx
mov myesp,esp
}//myecx 记录了此对象的地址,应该没有错吧?
Target_CI_HYGameMapData__CI_HYGameMapData();
_asm
{
mov myeax,eax
}
/////////////////////////通知窗口,已经HOOK到数据了///////////////////////
callinf.Format("CI_HYGameMapData::CI_HYGameMapData address:%d",myecx);
RecordArr.Add(callinf);
if(MainDlg)
::PostMessage(MainDlg->m_hWnd,IDC_ShowNewInf,0,0);
//////////////////////////////////////////////////////////////////////////
_asm
{
mov ecx,myecx
// mov esp,myesp
mov eax,myeax
}
}
void CFileWatchDlg::OnBnClickedtestbutton()
{
// TODO: 在此添加控件通知处理程序代码
int x=0,y=0;
_asm
{
mov ecx,myecx
call CI_HYGameMapData__GetScaleX
mov x,eax
mov ecx,myecx
call CI_HYGameMapData__GetScaleY
mov y,eax
}
CString str;
str.Format("%d %d %d",myecx,x,y);
MessageBox(str);
}
void CFileWatchDlg::OnBnClickedtestbutton()
{
// TODO: 在此添加控件通知处理程序代码
int x=0,y=0;
int *MD=(int *)myecx;
/* _asm
{
mov ecx,myecx
call CI_HYGameMapData__GetScaleX
mov x,eax
mov ecx,myecx
call CI_HYGameMapData__GetScaleY
mov y,eax
}*/
x=MD[0x40/4];
y=MD[0x44/4];
CString str;
str.Format("%d %d %d",myecx,x,y);
MessageBox(str);
}public: int __thiscall CI_HYGameMapData::GetScaleX(void) proc near
mov eax, [ecx+40h]
retn
public: int __thiscall CI_HYGameMapData::GetScaleX(void) endp
public: int __thiscall CI_HYGameMapData::GetScaleY(void) proc near
mov eax, [ecx+44h]
retn
public: int __thiscall CI_HYGameMapData::GetScaleY(void) endp