鱼C论坛

 找回密码
 立即注册
查看: 833|回复: 2

[作品展示] 使用PyMem库通关Cheat Engine Tutorial (除最后一关)

[复制链接]
发表于 2023-5-1 21:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Cheat Engine的版本是7.4,之前有看到过对PyMem库的推荐,于是就写了这个来练一下手。
但我暂时没想明白如何用PyMem alloc 一片新的内存,所以就没有完成最后一关。
代码如下:

  1. from pymem import Pymem

  2. tutorial = Pymem("Tutorial-x86_64.exe")
  3. base = tutorial.base_address


  4. def first():
  5.     pointer = tutorial.read_int(base + 0x325A70)
  6.     address = pointer + 0x7F8
  7.     tutorial.write_int(address, 1000)
  8.     print("第一关修改成功")


  9. def second():
  10.     pointer = tutorial.read_int(base + 0x325A80)
  11.     address = pointer + 0x7F8
  12.     tutorial.write_int(address, 5000)
  13.     print("第二关修改成功")


  14. def third():
  15.     pointer_health = tutorial.read_int(base + 0x325AA0)
  16.     address_health = pointer_health + 0x818
  17.     tutorial.write_float(address_health, 5000.0)

  18.     pointer_ammo = tutorial.read_int(base + 0x325AA0)
  19.     address_ammo = pointer_ammo + 0x820
  20.     tutorial.write_double(address_ammo, 5000.0)
  21.     print("第三关修改成功")


  22. def fourth():
  23.     address = base + 0x2CB88
  24.     tutorial.write_bytes(address, b'\x90\x90', 2)  # nop nop
  25.     print("第四关修改成功")


  26. def fifth():
  27.     pointer = base + 0x325AD0
  28.     address = tutorial.read_int(pointer)
  29.     tutorial.write_int(address, 5000)
  30.     print("第五关修改成功")


  31. def sixth():
  32.     address = base + 0x2DB57
  33.     # add dword ptr [rsi+000007E0],02
  34.     tutorial.write_bytes(address, b'\x83\x86\xe0\x07\x00\x00\x02', 7)
  35.     print("第六关修改成功")


  36. def seventh():
  37.     pointer_1 = base + 0x325B00
  38.     pointer_2 = tutorial.read_int(pointer_1) + 0x10
  39.     pointer_3 = tutorial.read_int(pointer_2) + 0x18
  40.     pointer_4 = tutorial.read_int(pointer_3)
  41.     address = tutorial.read_int(pointer_4) + 0x18
  42.     tutorial.write_int(address, 5000)


  43. def main():
  44.     while True:
  45.         step = input("请输入关卡数(输入b以停止):")
  46.         match step:
  47.             case "1":
  48.                 first()
  49.             case "2":
  50.                 second()
  51.             case "3":
  52.                 third()
  53.             case "4":
  54.                 fourth()
  55.             case "5":
  56.                 fifth()
  57.             case "6":
  58.                 sixth()
  59.             case "7":
  60.                 seventh()
  61.             case "b":
  62.                 break
  63.             case _:
  64.                 print("未实现!")


  65. if __name__ == "__main__":
  66.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-1 22:07:40 | 显示全部楼层
CE修改器?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-2 23:04:24 | 显示全部楼层
是的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 06:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表