第一课 CALL的概念,实战CALL的查找

33 阅读1分钟

1、先写一个假想的游戏客户端.

图片.png

1.1、首先讲一下CALL的基本知识,在VC里新建一个窗口,并增加编辑框,关联一个控件类型的变量m_edit

图片.png

1.2、然后添加如下代码

//血量
int BooldValue = 3000;
HWND edit_hwnd;
void addBlood()
{
	BooldValue += 22;
	CString strValue;
	strValue.Format(_T("%d"), BooldValue); // 自动适配 ANSI/Unicode
	::SetWindowText(edit_hwnd, strValue);
}
void CmyGameDlg::OnBnClickedBtnAddBlood()
{
	// TODO: 在此添加控件通知处理程序代码
	addBlood();
	
	

}
void decBlood()
{
	BooldValue -= 22;
	CString strValue;
	strValue.Format(_T("%d"), BooldValue); // 自动适配 ANSI/Unicode
	::SetWindowText(edit_hwnd, strValue);

}
void CmyGameDlg::OnBnClickedBtnDecBlood()
{
	// TODO: 在此添加控件通知处理程序代码
	decBlood();
	
}

2、用工具找CALL

2.1、用CE扫描血量,找到血量的基址,找到血量的基址是01193008,绿色的表述基址

图片.png

2.2、用OD附加进程

图片.png

2.3、用dd命令找到这个地址,下一个内存写入断点。

图片.png

2.4、找到方法头部,

图片.png

009F87E0    55              push ebp

2.5、使用代码注入器,向进程中注入call 009F87E0

图片.png

总结:我们就实现了一个简单CALL的查找 关注公众号玄涅,有更多惊喜等着你。

qrcode_for_gh_9a5b865444f7_1280.jpg