之前写的基于内存修改的扫雷程序,现在分享一下,有疑问可以互相交流,代码注释也很清晰

由于win10没有扫雷,先要下载安装扫雷,winmine.exe,可以在网上搜

打开运行扫雷后,再运行python程序就可以自动扫雷了

# 一键扫雷
import win32gui
import win32process
import win32api
import ctypes
import win32con
import time# 获取窗口句柄
window_handle = win32gui.FindWindow(None, "扫雷")# 获取窗口坐标
left, top, right, bottom = win32gui.GetWindowRect(window_handle)
#print("窗口坐标:")
#print(str(left)+' '+str(right)+' '+str(top)+' '+str(bottom))# 点击窗口函数
def click(x,y):win32api.SetCursorPos([x, y])win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#time.sleep(0.5)left = left + 6
top = top + 107# 获取进程ID
process_id = win32process.GetWindowThreadProcessId(window_handle)[1]# 获取进程句柄
process_handle = win32api.OpenProcess(0x1F0FFF, False, process_id)# 调用系统内核
kernel32 = ctypes.windll.LoadLibrary(r"C:\Windows\System32\kernel32.dll")# 读取内存
# 获取区域高度
height = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle), 0x01005338, ctypes.byref(height), 4, None)
#print(height)# 获取区域宽度
width = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle), 0x01005334, ctypes.byref(width), 4, None)
#print(width)# 打印每个格子的地址
def print_address(list):print('格子内存地址如下:')for i in list:print(i)# 起始地址
s = 16798561 #Ox1005361
n = 0
lei = 0
list = []for y in range(0,height.value):a = []for x in range(1,width.value+1):# 获取当前内存的值m = s + (x-1) + y*32n += 1#print("0x0%02x" % m)data = ctypes.c_long()kernel32.ReadProcessMemory(int(process_handle), m, ctypes.byref(data), 4, None)#print(hex(data.value))#print(hex(data.value)[-2:])a.append(hex(data.value))# 点击不是雷的if(hex(data.value)[-2:] != '8f' and hex(data.value)[-2:] != '8a' and hex(data.value)[-2:] != '71'):pass#print(hex(data.value))click(left + x*16, top + y*16)#print('点击了第{}行{}列'.format(y+1,x),hex(data.value))else:lei += 1list.append(a)print_address(list)
print('扫雷结束')
print('共有{}个块,{}个雷'.format(n,lei))
1.首先通过自定义,查找高度和宽度的基地址2.通过查看高度地址相关内存区域,查看左上角第一个区域的地址,和下方一个区域的地址,相减获得一行的空间大小
1005861
1005881
相减得20,换成10进制为32得到最大高度24,所以最大内存空间为24*32=768经过测试,得知8f,8a,71都是雷

Python修改内存(扫雷)相关推荐

  1. python观察内存和修改内存

    例如:在不改变内存地址的情况下,修改变量的值. 观察内存和修改内存其实是操作系统提供的能力. 对于理解python里面数据结构很有帮助. 例如python里面的int类型.为什么int类型是变长的,为 ...

  2. 用python写的修改内存值的一代代码(举例植物大战僵尸中文版)

    需要先找到要修改的值的内存地址,推荐用CE // 植物大战修改内存 import win32process import win32con import win32api import win32gu ...

  3. python多线程内存越要越大_Python 面试:这9个问题你一定要掌握!

    作为一个程序员,可能或多或少经历过一些技术面试,有些是编程语言本身的问题,有些是跟工程相关的问题. 笔者自己被面试过或者面试过别人,今天我们来总结关于Python程序员面试的时候经常被问到的9个问题, ...

  4. python中内存管理机制一共分为多少层_python 内存管理机制

    内存管理机制 ​python中万物皆对象,python的存储问题是对象的存储问题,并且对于每个对象,python会分配一块内存空间去存储它 ​Python的内存管理机制:引入计数.垃圾回收.内存池机制 ...

  5. 变量 常量 Python变量内存管理 赋值方式 注释

    目录 变量 1.什么是变量 2.为什么有变量? 3.定义变量 4.变量的组成 5.变量名的命名规范 6变量名的两种风格 常量 Python变量内存管理 1.变量存哪儿? 2.Python垃圾回收机制 ...

  6. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  7. python 的内存回收,及深浅Copy详解

    一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...

  8. python 读取内存_python内存读写

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 也就是说,所有的解释器可以同时读写数据,在一个解释器中对数据做出的修改会自动反映 ...

  9. python的内存模型

    在传统的编程语言中,变量通常会被认为是被命名的内存位置.如果把这个想法应用于Python的话,你可能就会认为Python里的变量是某种小型的.与计算机内存中可以存储对象的位置相对应的东西.这种思维方式 ...

最新文章

  1. Colly源码解析——框架
  2. Java封装OkHttp3工具类
  3. IF10+的数据库文章!生物信息数据库承建!
  4. CentOS6.3.x86_64安装Trac
  5. java jdk工具
  6. java的import和python的import对比_import导入的是什么
  7. linux g++ undefined reference to `dlopen'类问题
  8. java sendredirect 参数_使用response.sendRedirect()传递隐藏参数
  9. shell中算术运算、相加减
  10. win10计算机共享在哪,快速共享电脑文件,win10的“就近共享”功能了解一下!...
  11. 使用grep命令抓取报: memory exhausted(内存耗尽)
  12. swagger2报错Illegal DefaultValue null for parameter type integer
  13. 可数集合与不可数集合的理解(准大学生初学者)
  14. 百度SEO高端软装设计装修设计公司网站源码
  15. java递归把list菜单列表转为菜单树
  16. shell脚本 sh shebang “#!/bin/sh“
  17. 计算机哪所民办学校好,哪所民办高校计算机软件方面好?
  18. linux内核自旋锁的代码分析
  19. STM32F0/F1/F2/F3/F4/F7编程数据中英文手册(所有型号中文参考手册)
  20. 商务演讲培训Winning Keynote笔记

热门文章

  1. Qt中设置删除提示框
  2. 帮我用python画一个单车
  3. 1947-08-21 00:00:00从数据库返回到前台为何少了一个小时
  4. GitHub 断供危机来了!权威解读程序员应对指南
  5. 华为路由器密码恢复方法(含各版本BootROM操作方法)
  6. 静态HTML CSS传统节日网页作业源代码 七夕情人节日大学生个人网页设计模板 html学生节日网页成品 简单节日介绍网站作品
  7. imx6q 板子ping win7主机 Ubuntu14.04主机
  8. 小度在家会成为国民AI产品吗?我们亲自体验了一下
  9. Activity那些不为人知的秘密
  10. Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)