胖胖与瘦瘦 發表於 2018-1-2 10:34:00

C#又能出来装个B了。一步一步微信跳一跳自动外挂

<h2>&nbsp;</h2>
<h2><span style="color: rgba(255, 0, 0, 1)">PS:语言只是载体。思维逻辑才是王道</span></h2>
<p>  前天看见了个python的脚本。于是装python。配置环境变量。装pip。折腾了一上午,最终<span style="color: rgba(255, 0, 0, 1)">装逼失败</span>。</p>
<p>于是进入博客园,顶部有篇文章吸引了我&nbsp;.NET开发一个微信跳一跳辅助程序。于是download下来测试一把。</p>
<p>  <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102090619471-1846278072.png"></p>
<p>&nbsp;</p>
<p>  不过博主的是<span style="color: rgba(255, 0, 0, 1)">半自动外挂。<span style="color: rgba(0, 0, 0, 1)">需要左键点击小人,右键点击需要跳的点。点了几十次之后不耐烦了。</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  那又怎样?又不开车?又不会装逼?食屎啦你!</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  手动玩到了2018。。。</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  </span></span></p>
<p>&nbsp;</p>
<h2><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"> 发现</span></span></h2>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    原来还可以通过<span style="color: rgba(255, 0, 0, 1)">C#连接安卓发送shell命令</span>进行操控。新姿势!新姿势!</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    通过42楼发现,从图片中<span style="color: rgba(255, 0, 0, 1)">搜索小人</span>。咦?这怎么实现呢?</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    百度百度百度。。好吧很少用google。。可能我是菜鸟程序员吧</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    喜出望外。</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    “<span style="color: rgba(255, 0, 0, 1)">图片像素遍历</span>”</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102093130956-313408225.png"></span></span></p>
<p>&nbsp;</p>
<h2> 实现思路</h2>
<p>    一、找到小人坐标</p>
<p>    二、找到要跳的坐标</p>
<p>    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。。。。。没毛病</p>
<p>  </p>
<h3>   如何找到小人坐标?</h3>
<p>&nbsp;</p>
<p>&nbsp;      -- &nbsp;小人颜色固定,取底部rgb扫描像素对比</p>
<p>       -- &nbsp;没毛病</p>
<p>    代码:</p>
<p>    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102094430346-832800520.png"></p>
<p>    效果:</p>
<p>    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102094310471-179857247.png"><img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102094319956-947591011.png"></p>
<p>    完美?完美!!</p>
<p>    弱水三千只取一瓢。<span style="color: rgba(255, 0, 0, 1)">我要最底下那个!!</span></p>
<p>    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102094750331-507493992.png"></p>
<p>    到此,小人底部坐标取到。是不是很简单粗暴??</p>
<p>&nbsp;</p>
<h3>   如何找到要跳的坐标?</h3>
<p>    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102095657846-1111914007.png"><img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102095916003-1388092212.png"></p>
<p>      </p>
<p>      -- <span style="color: rgba(255, 0, 0, 1)">取到要跳的顶点和最右边。取顶点的 x 和右边点的 y 作为要跳的点</span></p>
<p>      -- 怎么取顶点?</p>
<p>      -- 从上到下,从左到右,<span style="color: rgba(255, 0, 0, 1)">与背景对比,第一个碰到的颜色不一样的为顶点</span></p>
<p>      -- 不行 背景是渐变的</p>
<p>      -- 噗。。。 &nbsp;那把r g b 设置相差10 以上为准吧</p>
<p>        if (bpixel.R - pixel.R &gt; 10 || bpixel.R - pixel.R &lt; -10 || bpixel.G - pixel.G &gt; 10 ||&nbsp;<em id="__mceDel">bpixel.G - pixel.G &lt; -10 || bpixel.B - pixel.B &gt; 10 || bpixel.B - pixel.B &lt; -10)</em></p>
<p><em>      -- 第一点是右上角那个&nbsp;<img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102100606159-1478986387.png"></em></p>
<p>      -- 像素遍历从高度*30%的坐标点开始</p>
<p>&nbsp;</p>
<p>      -- 行是行,有时候与背景色相近识别不到</p>
<p>      -- 把 bpixel 设置成当前像素的 y-1 位置的像素 &nbsp;bpixel = MyBitmap.GetPixel(x, y - 1);</p>
<p>      -- 嗯 <span style="color: rgba(255, 0, 0, 1)">上下对比</span>,背景渐变差异不大,<span style="color: rgba(255, 0, 0, 1)">第一个差异大的点就是要跳的顶部</span>,完美</p>
<p>      -- 怎么取右边点呢?</p>
<p>      -- 遍历到顶部以后像素的时候<span style="color: rgba(255, 0, 0, 1)">与顶部颜色对比,颜色一致设置红色,取 x 最大的为最右边</span></p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102101011706-1434023412.png"></p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102101130784-1153258794.png"></p>
<p>      -- 成功啦 &nbsp;有时候会有bug,多个块颜色一致的时候,最右边不是最后要跳的块</p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102101405456-18257141.png"></p>
<p>&nbsp;</p>
<p>      -- &nbsp;对比右坐标的时候,如果大于150像素 就放弃。</p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102101505487-392918401.png"></p>
<p>      -- &nbsp;顶部也会有bug,有时候<span style="color: rgba(255, 0, 0, 1)">小人头超过要跳的小方块</span>,导致计算顶部位置会是小人头</p>
<p>      -- &nbsp;那就在小人坐标 x 左右30不计入顶部识别</p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102101905659-894204420.png"></p>
<p>      -- &nbsp;哇塞 &nbsp;!好像没有什么bug了 ,再加上定时器,或者死循环,或者递归就可以实现自动跳转啦。一会儿就两千多分啦!</p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102102014581-966187466.png"></p>
<p>&nbsp;</p>
<p>      -- &nbsp; 其实取到顶点之后,扫描 y 值相等 颜色一样的。然后取中间值,会更精准</p>
<p>        <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102102205471-849761024.png"></p>
<p>&nbsp;</p>
<p>      -- &nbsp;艹 ! 刚才想啥去了?</p>
<p>      -- &nbsp;<span style="color: rgba(255, 0, 0, 1)">慢慢试嘛 。其实别人还有更好的算法。颜色相似的,点集合取平均坐标值, 没经历过,总要经历笨方法。起码源于自己的思维</span></p>
<p>&nbsp;</p>
<h2>    <img src="http://images2017.cnblogs.com/blog/751127/201801/751127-20180102103003174-890051925.png"></h2>
<p>&nbsp;</p>
<h2><span style="color: rgba(255, 0, 0, 1)">      祝大家新年快乐</span></h2>
<h2><span style="color: rgba(255, 0, 0, 1)">&nbsp;      2018 &nbsp;888 !!!</span></h2>
<p>&nbsp;</p>
<p>没想到这么多人看。加个群交流下吧? 企鹅群:170501545。</p><br><br>
来源:https://www.cnblogs.com/lggggg/p/8176033.html
頁: [1]
查看完整版本: C#又能出来装个B了。一步一步微信跳一跳自动外挂