一天一天学做外挂@第三天-实现人物飞天效果[武林外传]

 

是不是很期待今天的内容呢?上次我们已经可以在我们的小软件中显示人物的血量了,那真气值你是不是也会做了!

学习目的:
1.复习上次内容,显示人物名称
2.利用VB实现简单飞天功能


内容:

1.好,下面图片所示的内容你是否做到了,是不是人物名称不知道该怎么显示。




将上次代码中的Timer1_Timer()替换成以下内容
Private Sub Timer1_Timer()
Dim base As Long '存放人物基地址
Dim hp As Long '存储生命值
Dim hpmax As Long '存储生命最大值
Dim mp As Long '存储真气值
Dim mpmax As Long '存储真气最大值
Dim name(31) As Byte ’存放人名字符串
Dim name_temp As Long ‘存放人物值

hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
   ReadProcessMemory hProcess, ByVal &H8C9E54, base, 4, 0&
   ReadProcessMemory hProcess, ByVal base + &H24, base, 4, 0& '得到为人物基地址,方便以后使用
   ReadProcessMemory hProcess, ByVal base + &H254, hp, 4, 0& '得到生命值
   ReadProcessMemory hProcess, ByVal base + &H26C, hpmax, 4, 0& '得到生命最大值
   ReadProcessMemory hProcess, ByVal base + &H258, mp, 4, 0& '得到真气值
   ReadProcessMemory hProcess, ByVal base + &H270, mpmax, 4, 0& '得到真气最大值
   ReadProcessMemory hProcess, ByVal base + &H390, name_temp, 4, 0& ‘得到人名的值
   ReadProcessMemory hProcess, ByVal name_temp, name(0), 32, 0& ‘转换字符串
  
   CloseHandle hProcess
End If
Label1.Caption = name ‘显示人名
Label2.Caption = "生命值:" & hp & "/" & hpmax '显示生命值
Label3.Caption = "真气值:" & mp & "/" & mpmax '显示真气值
End Sub


2.今天我们学习的重点是简单修改游戏,实现飞天功能。
我想你已经在论坛中看到过飞天修改的文章,没错就是
00459199    6A 0A      push 0A
这个地址,要飞天时需要把0A改01。那么你是否在CE中验证了这个功能呢?

2.1.我们开好CE和游戏,单击[查看内存]按钮


2.2.在[内存察看器]中,在(1)显示的位置上单击鼠标右健,选择[跳转到地址]命令


2.3.在对话框中输入地址:00459199


2.4.(1)显示的就是我们要找的地址,我们要把(2)的0A改为01


2.5.看结果,我们已经修改好啦!修改后:00459199    6A 0A      push 01,在游戏中一直按住空格,是不是很爽(找个人少的地方,小心被...)



3.接下来,我们要在用VB实现这一功能。首先我要做一个工作,还是利用上次内容中的代码加以改进。
模块添加新的声明:
'存储进程内存的函数
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Timer1_Timer()中的内容:
Private Sub Timer1_Timer()
Dim h As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
   ReadProcessMemory hProcess, ByVal &H459199, h, 4, 0& ‘显示459199这个地址的值
   CloseHandle hProcess
End If

Label1.Caption = h ‘输出459199地址的值
End Sub



我们得到的值是:-846525846,这是人物不能飞天时的值


4.我们再来看看人物可以飞天时的值。首先用刚才的方法用CE修改达到飞天的功能,再次运行我们的程序,这时的值显示为:-846528150



5.好了,我们只要利用VB改变00459199内的值-846525846或-846528150就可以达到改变是否飞天的功能。我们要添加一个按钮,用来改变00459199内的值。以下是按钮Command的代码:
Private Sub Command1_Click()
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
   WriteProcessMemory hProcess, ByVal &H459199, -846528150, 4, 0& ‘写入内存-846528150这个值实现飞天功能。
   CloseHandle hProcess
End If
End Sub


运行我们的程序,单击[飞天]按钮,00459199的值被改变了,游戏人物实现飞天功能,CE中的代码也改了,成功!

6.好了,我们实现了简单的飞天功能,但是并没有把这个功能做的更完善,比如飞天与正常的转换,因为我知道你是可以做到的。


### 回答1: 可以使用 Python 的 datetime 模块来获取时间前一天的日期。 首先,需要导入 datetime 模块: ```python import datetime ``` 然后,可以使用 datetime 模块中的 datetime.datetime.now() 函数获取当前日期时间,并使用 timedelta 函数将其减去一天: ```python yesterday = datetime.datetime.now() - datetime.timedelta(days=1) ``` 最后,可以使用 strftime 函数将日期格式化为字符串: ```python yesterday_str = yesterday.strftime("%Y-%m-%d") ``` 这样就可以得到时间前一天的日期了。 你还可以使用 date 对象来获取日期,例如: ```python today = datetime.date.today() yesterday = today - datetime.timedelta(days=1) ``` 或者使用 date 对象的 replace 方法来获取指定日期的前一天: ```python date = datetime.date(2022, 12, 20) yesterday = date.replace(day=date.day-1) ``` 希望这些信息对你有帮助。 ### 回答2: 要获取前一天的日期,可以使用Python中的datetime模块。以下是一个示例代码: ```python import datetime # 获取当前日期和时间 now = datetime.datetime.now() # 获取前一天的日期 previous_day = now - datetime.timedelta(days=1) # 输出前一天的日期 print("前一天的日期是:", previous_day.strftime("%Y-%m-%d")) ``` 在这个示例中,我们首先使用`datetime.datetime.now()`获取当前的日期和时间。然后,使用`datetime.timedelta(days=1)`创建一个时间间隔为1天的timedelta对象。最后,使用计算得到的时间间隔对象减去现在的日期和时间,即可得到前一天的日期。 通过`strftime("%Y-%m-%d")`方法,我们可以以YYYY-MM-DD的格式将日期转换为字符串,并将其输出。 你也可以根据自己的需求进行修改,例如更改输出日期的格式,或者自定义时间间隔进行前一天的计算。 ### 回答3: 在Python中,你可以使用`datetime`模块来获取前一天的时间。具体步骤如下: 首先,你需要导入`datetime`模块: ``` python import datetime ``` 然后,你可以使用`datetime.datetime.now()`函数来获取当前的日期和时间: ``` python current_date = datetime.datetime.now() ``` 接下来,你可以使用`timedelta`函数来计算前一天的时间差: ``` python one_day = datetime.timedelta(days=1) previous_date = current_date - one_day ``` 最后,你可以使用`strftime`函数来格式化前一天的日期,以满足你的需要: ``` python previous_date_formatted = previous_date.strftime('%Y-%m-%d') ``` 这样,你就可以通过`previous_date_formatted`变量来获取前一天的日期了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值