学习逆向知识之用于游戏外挂的实现.第一讲,通过游戏外挂.学习逆向技术指超级马里奥.
通过游戏外挂.学习逆向技术指超级马里奥.
一丶前言
1.什么是逆向.
逆向就是在没有源代码的情况下.通过汇编.反汇编来逆向一个成品的Exe(也可以是别的.举例是EXE)这样叫做逆向.
2.逆向的用途
逆向技术可以用于 反病毒.反外挂. 破解. ...... 等等.当然反病毒反外挂的前提就是你要对外挂或者病毒写法了解. 才可以进行.所以逆向的高度取决于开发的水平.
3.这篇博客的作用.
这篇博客不是教授外挂的.而是以外挂为切入点.讲解逆向技术.并了解逆向技术可以做什么.
二丶超级马里奥
想必超级玛丽大家都玩过.
那么我们可以对它做点什么.
1.血值.可以修改为无限血量
2.子弹个数.可以修改无限子弹.
3.生命个数.可以修改为无限生命
4.子弹状态. 使马里奥可以发送普通子弹. 登山镐子弹. 以及忍者飞镖子弹. CTRL+Z键还可以开启大招.
三丶逆向工具准备
我们要做外挂的前提需要有逆向工具.
Cheat_Engine 简称CE 一款可以搜索内存的工具. 也可以看反汇编.
那么我们可以用CE做切入点.
1.使用CE 附加超级马里奥进程.
2.搜索子弹个数. 依次减少.然后继续搜索.这样可以搜索到子弹的个数的基址.
3.基址就是保存信息的一个全局变量地址.就是不会变动的地址.这样超级马里奥重新启动也会是这个地址.
1.搜索子弹个数
2.子弹个数更改.点击再次扫描.
当我们再次扫描之后会发现还有两个地址.根据经验.绿色的是基地址.
当然我们可以关掉游戏.重新启动.然后看看地址还是不是这个.如果是这个.(0x00428292) 那么这个地址就是个静态地址.我们可以认为这个地址是不变的了.
3.下拉到下面.CTRL +B 键观察附近内存. 然后CTRL + 2 以字节的10进制显示.
观察附近内存. 可以看到92上面的82地址是个6. 而看我们当前的血值也是6 可以猜想这个变量存放的是血值.
我们可以减血看一下.
我们可以修改一下血值.看看是否是.
修改之后发现是.所以82就是血的基址. 然后通过我们马里奥不断的进行不同的操作.
可以看出这块内存会更改.
当然这个操作需要手动去做.步骤我就不做了.
所以我们可以得出.
0x00428282 = 血的基址
0x00428292 = 子弹个数基址.
0x004282A2 = 生命个数的基址.
四丶编程实现外挂编写.
C++ : 如果是C++ 我们需要熟悉几个API. OpenProcess 打开进程句柄. ReadProcessMemory(); 读内存. WriteProcessMemory() 写内存.
易语言: 易语言可以使用模块. 我用的是超级模块.
要熟悉的易语言命令.
1.取进程ID(进程名) 返回进程ID (跟OpenProcess 一样.只不过是封装的一个)
2.十六到十 在易语言当中.我们操作的地址需要转化成10进制.可以用这个命令.
3.写内存整数型 跟WriteProcessMemory一样的. 只不过封装了一下.
具体代码可以在博客中下载. 一个是 VS2015 版本MFC的. 一个是易语言编写的. 附加模块.
成品图演示
MFC
易语言:
资料下载: 链接:https://pan.baidu.com/s/1AaRAuw7uUcxhxCL_nCrYMQ 密码:i2xt (超级马里奥 + CE 工具 + 易语言.e代码文件 + 成品 + MFC 代码 + 成品)
坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功. 想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。
详情请点击链接查看置顶博客 https://www.cnblogs.com/iBinary/p/7572603.html
本文来自博客园,作者:iBinary,未经允许禁止转载 转载前可联系本人.对于爬虫人员来说如果发现保留起诉权力.https://www.cnblogs.com/iBinary/p/9502761.html
欢迎大家关注我的微信公众号.不定期的更新文章.更新技术. 关注公众号后请大家养成 不白嫖的习惯.欢迎大家赞赏. 也希望在看完公众号文章之后 不忘 点击 收藏 转发 以及点击在看功能. QQ群: