Win32汇编WG系列教程1——《植物大战僵尸5211314》
开篇语:
WG,一个很刺眼的名词,市面上大部分的挂都是使用VB/Delphi/C++或者E语言来写的,我之前也是使用Delphi和VB,这些语言的好处就是编写简单,容易入门!尤其是E语言,基本上说都实现了WG模块化...很多新手开始学的时间,都是跟着视频教程,一步一步操作,最后成功了都不知道为什么成功!这些都语言封装度太强,直观性不是很好!对于入门的话,我还有建议使用偏底层点的语言,如:Win32Asm,C这类语言...虽然编写繁琐,但原理能很清晰的表达出来,对于日后使用高级语言编写打下牢固的基础!
建议:有8086/Win32汇编语言的基础,熟悉C语言或者其他一门高级语言,了解PE结构和Win程序的原理运行机制,以及后期过保护要用到的内核编程知识等!本系列教程都使用Win32汇编语言和OD动态调试!
——————————————————————————————————————————————
OK,从最简单的开始上菜...(高手越过吧)
游戏:《植物大战僵尸中文版》
目的:使游戏的阳光光值达到5211314,我爱你一生一世!
思路:单机游戏吗!简单的修改下游戏内存数据就OK
工具:RadASM,CE,Spy++ 关于工具的使用,下次我列专版来说!大家也可谷歌!
步骤:
1.使用CE找到游戏阳光值的内存地址,Spy++获得游戏窗口标题
2.使用Win32汇编语言实现
涉及几个简单的API:
FindWindow
GetWindowThreadProcessId
OpenProcess
WriteProcessMemory
为了更直观的表达思路,代码可能过于繁琐!但十分容易理解!
————————————————————————————
源码:
.386
.model flat,stdcall
option casemap:none
;***********************************************************
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
;***********************************************************
.data
h0 db '提示',0
h1 db '植物大战僵尸中文版',0 ;游戏窗口标题
t0 db'使用前请先进入游戏,如已准备完毕,请点击确定!',0
t1 db'未获取窗口句柄',0
t2 db'未获取进程ID',0
t3 db'未获取进程句柄',0
t4 db'内存写入失败',0
t5 db'修改成功',0
ww dd ? ;用来存放进程ID
gg dd 5211314 ;我们要修改阳光的值
;***********************************************************
.code
start:
invoke MessageBox,0,offset t0,offset h0,MB_OK
;**********************************************************
;获取窗口的句柄,并判断是否成功
invoke FindWindow,0,offset h1
.if eax==0
invoke MessageBox,0,offset t1,offset h0,MB_OK
.endif
;***********************************************************
;获取进程的ID,并判断是否成功
invoke GetWindowThreadProcessId,eax,offset ww
.if eax==0
invoke MessageBox,0,offset t2,offset h0,MB_OK
.endif
;***********************************************************
;获取进程句柄,并判断是否成功
invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,ww
.if eax==0
invoke MessageBox,0,offset t3,offset h0,MB_OK
.endif
;**********************************************************
;向内存写入数据,并判断是否成功
invoke WriteProcessMemory,eax,10F58418H,addr gg,4,0
.if eax==0
invoke MessageBox,0,offset t4,offset h0,MB_OK
.else
invoke MessageBox,0,offset t5,offset h0,MB_OK
.endif
;*********************************************************
invoke ExitProcess,0
end start
————————————————————————————————
总结:新手需要注意的几点:
1.区分模块句柄,窗口句柄!区分线程ID和进程ID
2.GetWindowThreadProcessId的返回值是线程ID,而进程ID是存放在第二个
参数当中,本例为ww变量
3.OpenProcess函数的权限问题
4.使用WriteProcessMemory函数时,注意写入数据的尺寸问题!
5.为了教程需求,本阳光值的地址为动态基地址,每次启动都会变化,请注意!
————————————————————————————————
注:由于水平有限,编写仓促,如有错误或不足,请指出!谢谢
——小生
=================
invoke WriteProcessMemory,eax,10F58418H,addr gg,4,0
eax 是进程句柄
10F58418H 是要改阳光值的内存首地址
addr gg 指向要写的数据的指针 也就是要修改的值5211314(16进制)
4 要写入4个字节数.
最后一个参数 填0 估计没什么用。
问题:每次都要重新使用CE找到游戏阳光值的内存地址吗?
Win32汇编WG系列教程1——《植物大战僵尸5211314》相关推荐
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇
目录 1.单卡片无CD 1.1 思路一 1.2 思路二 2.全卡片无CD 3.豌豆射手射速修改(修改植物射速) 4.实现豌豆射手发射"玉米加农炮"(思路) 上一期教程中,我们学习了 ...
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇
目录 1.跳关(任意选择关卡) 2.修改金币值 3.实现自动收集阳光 上一期教程中,我们学习了寻找植物大战僵尸僵尸距离基址.实现"秒杀"僵尸的方法.PS:上篇链接:[CE入门教程] ...
- 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址
32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之僵尸篇
目录 1.寻找僵尸位置基址 2.实现"秒杀"僵尸(修改僵尸血量) 上一期教程中,我们学习了修改植物大战僵尸的单卡片无CD.全卡片无CD.豌豆射手射速修改以及实现豌豆射手发射&quo ...
- 植物大战僵尸2平安时代全新玩法
说到益智策略类塔防御战游戏,那植物大战僵尸绝对是不二之选,开创了益智策略类塔防御战的新纪元,植物大战僵尸系列包含了全明星.西游版.长城板.原版等众多版本,而最受欢迎的无疑是新添的:植物大战僵尸2平安时 ...
- 基于python开发植物大战僵尸
目录 摘要 2 一, 引言 3 1.1中国游戏产业的现状 3 1.2中国游戏产业的未来发展局势 4 1.3植物大战僵尸游戏的发展状况 4 二.系统结构 5 2.1 Python3.8.2 IDLE 简 ...
- 植物大战僵尸android4版本,植物大战僵尸4
植物大战僵尸4是一款经典的策略塔防游戏,游戏关卡众多,操作简单,老少皆宜,游戏初始有200个种子可以打僵尸.每消灭一个僵尸,根据僵尸的等级,将会奖励不同数量的种子,感兴趣的小伙伴赶紧下载体验吧. 植物 ...
- 针对“扫雷“和“植物大战僵尸“游戏,分析,扫描,阳光值,植物,金币,僵尸的分析逆向
<软件逆向分析> 2022年9月 目录 {#目录 .TOC-Heading} [一.实验工具介绍 3](#一实验工具介绍) [二.针对"扫雷"游戏 3](#二针对扫雷游 ...
- 使用Cheat Enginee(CE)修改“植物大战僵尸”子弹类型
使用Cheat Enginee(CE)修改"植物大战僵尸"子弹类型 单击查看内存 右键转到地址,输入4672a5 点击确定 自动汇编该语句,注入CT表框架代码,代码注入,分配到当前 ...
最新文章
- 平时用电脑的一些技巧
- 20. 邮件提醒(接收邮件)
- python知识:opencv下的轮廓和区域
- 杰奇linux伪静态,常用的13个.htaccess重写URL的伪静态规则
- 蓝桥杯-01字串(java)
- cubic-bezier_带CSS中的示例的cube-bezier()函数
- 果园机器人作文开头_易学好用的万能开头—热点事件引入式
- php当前完整url的写法
- python线程按照顺序执行_Python3多线程之间的执行顺序问题
- [转载] python数据类型转换
- 字典攻击ssh弱口令
- k8s之liveness and readness
- windows 下删除EFI分区方法
- 计算机网络-字符编码的由来(为什么会有乱码,ASCII、Unicode、GBK和UTF-8字符编码区别)
- 安卓手机与Linux同步后,搜索文件内的内容
- Word粘贴参考文献格式问题
- 项目经验 需求评审与技术评审
- 基于Oracle的SQL编程
- 空气动力学基础课堂笔记
- 大闹天竺里的机器人_数字看清王宝强《大闹天竺》里的植入