鱼C论坛

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

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

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

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

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

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

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


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


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


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

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


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


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


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


def seventh():
    pointer_1 = base + 0x325B00
    pointer_2 = tutorial.read_int(pointer_1) + 0x10
    pointer_3 = tutorial.read_int(pointer_2) + 0x18
    pointer_4 = tutorial.read_int(pointer_3)
    address = tutorial.read_int(pointer_4) + 0x18
    tutorial.write_int(address, 5000)


def main():
    while True:
        step = input("请输入关卡数(输入b以停止):")
        match step:
            case "1":
                first()
            case "2":
                second()
            case "3":
                third()
            case "4":
                fourth()
            case "5":
                fifth()
            case "6":
                sixth()
            case "7":
                seventh()
            case "b":
                break
            case _:
                print("未实现!")


if __name__ == "__main__":
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-1 22:07:40 | 显示全部楼层
CE修改器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-2 23:04:24 | 显示全部楼层
是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 18:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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