📄 vc中写外挂.txt
字号:
1.问题:最近看到很多人在玩 大家来找茬,于是自己也下载玩了一下,但是由于基础太差,经常都是输多赢少。于是我想到了用OpenCV写个外挂,说干就干。
2.分析:大家来找茬游戏规则简单,只需找出两幅图像的不同点,由此,可以将左右两幅图进行对比,用异或运算将不同点找出。这部分不难,难的主要是定位两幅图的位置,经实验,游戏是两幅图的y方向不边,x方向会随机发生改变,故如果确定两幅图的位置成了这个程序的难点。
3.编程:
第一步,将当前屏幕截取下来。
第二步,分析图像,找出两幅图的具体位置。这里需要点技巧,我是用两幅图像相减去除背景,通过图像处理,将两幅图像
的位置找出。
//两图像相减
cvSub( t,pImg, d, NULL );
//双重循环进行像素操作,找到相减后图像的两幅图像的起始位置
for(int i=304;i<400;i++){
if(x1!=0)
break;
for(j=180;j<(793+179-7);j++){
s=cvGet2D(temp1,i,j);
if(s.val[0]==255)
{
if(xx!=0)
{
x1=j;
break;
}
xx=j;
yy=i;
j=573;
}
第三步,通过找到的坐标进行左右两幅图像的异或运算,产生我们要的结果。
找到坐标后截取到左边的图像
右边的图像
输出结果
cvXor( right,left, left, NULL ); //异或运算
第四步,将异或后的图像显示在游戏中的图像上。
void CGameDlg::OnTimer(UINT nIDEvent) //用定时器不断对图像进行刷新显示
{
CBitmap bmp;
bmp.Attach(bitmap);
CDC dcMemory;
CWnd* pwnd = GetDesktopWindow();
//获取当前桌面的设备上下文
CDC* pDC = pwnd->GetWindowDC();
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&bmp);
pDC->BitBlt(xx,yy,381,286,&dcMemory,0,0,SRCCOPY);
ReleaseDC(pDC);
CDialog::OnTimer(nIDEvent);
}
到此大功告成!
最后我想说的是,玩游戏是种乐趣,做外挂也是种乐趣,但是不到情非得已的时候,请不要随便使用外挂,破坏游戏的公平性。
此文章只供参考,转载请注明:本文作者:longlongago 博客地址:http://blog.csdn.net/longlongago2000
有问题可留言或发邮件讨论。
文章出处:http://www.diybl.com/course/3_program/vc/vc_js/2008520/117201.html
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -