这里开发了一个CrackMe实例,源码打包下载如下:

https://github.com/fengfanchen/Qt/tree/master/CrackMe_1

程序是这个样子的:

程序从10s开始倒计时:

到0s后提示Game over

这里的倒计时的数在代码中是这样体现的:

resource,并且为static,进程在计算机中有4个空间,一个是代码区负责逻辑相关的功能,一个是常量区,如HelloWord字符串都在那里面资源文件等,静态区,就这些静态资源和全局变量了。耳环就是堆区和栈区。

这里我们就不用CE查找了。直接qDebug()打印出来:

这个0x404008就是这个变量的地址,内存地址一般是这样编排的,最小的是代码区,然后是常量区,然后去静态区,随后是堆区和栈区。

这里的0x404008就是在静态区,在程序员中他叫静态变量,在逆向中这样的数一般称为静态基址。

下面用C++写个程序,去获取进程的句柄,然后获取其进程ID,使用OpenProcess将开发的C++程序注入进去。修改0x404008地址的值,代码如下:

#include <iostream>
#include <Windows.h>
using namespace std;int main(int argc, char *argv[]) {HWND h = FindWindow(NULL, L"crackMe_1");if (!h) {cout << "The hwnd is null" << endl;return -1;}DWORD processId = 0;GetWindowThreadProcessId(h, &processId);if (processId == 0) {cout << "The processId is 0" << endl;return -1;}HANDLE hProcess = 0;hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);if (hProcess == 0) {cout << "The hProcess is 0" << endl;return -1;}DWORD resourceAddr = 0x404008;DWORD newValue = 99999;BOOL ret = WriteProcessMemory(hProcess, (LPVOID)resourceAddr, &newValue, 4, 0);cout << "Thre ret is " << ret << endl;getchar();return 0;
}

程序运行截图如下:

这里就将值修改99999。

Windows破解逆向-CrackMe_1实例(使用OpenProcess修改内存中的值)相关推荐

  1. Windows破解逆向-CrackMe_1实例(使用IDA Pro修改静态区资源)

    这里开发了一个CrackMe实例,源码打包下载如下: https://github.com/fengfanchen/Qt/tree/master/CrackMe_1 程序是这个样子的: 程序从10s开 ...

  2. 汇编语言 修改内存中的过时数据

    题目要求 编程,修改内存中的过时数据 运行过程 改之前 改数字之后 改字母之后 代码 ;编程,修改内存中的过时数据 ;存放ascii码用db,存放数据用dw assume cs:codesg,ds:d ...

  3. MATLAB入门教程(6):修改矩阵中的值

    前言 代码粘贴后并不好看,故使用图片粘贴如下. 代码部分是我在MATLAB里面加的注释版本(使用版本为MATLAB R2022a) 一.单元素赋值 上一讲中提到了如何使用索引,那我们很简单的思路就是对 ...

  4. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型

    今天和大家分享下本人也说不清楚的一个C#基础知识,我说不清楚,所以我才想把它总结一下,以帮助我自己理解这个知识上的盲点,顺便也和同我一样不是很清楚的人一起学习下.  一说起来C#中的数据类型有哪些,大 ...

  5. C++类实例以及子类在内存中的分配

    关于结构体和C++类的内存地址问题 今天终于有时间写点 东西了~ 太爽了  *_*  很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的. ...

  6. string 引用没有设置为 string 的实例。 参数名: s_Java中的值传递和引用传递,看完这篇终于终于明白了!...

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数 ...

  7. mysql alter auto increment_修改mysql中Auto_increment值的例子

    要求: 修改mysql中某张表的下一条记录的Auto_increment值. 操作方法: 查看db.table表的下一条记录auto_increment的值: show table status fr ...

  8. 使用debug工具修改寄存器中的值

    学习任何一门高级语言都会好奇计算机内部到底如何进行操作的,在win10系统下,想直接操作cpu内部的各类寄存器可以使用debug加dosbox软件进行操作,首先安装好他们,随后进入调试阶段: 输入一些 ...

  9. php如何修改xml中element值,php修改xml节点的值

    今天刚刚实现的功能,找了很多资料,本来想用xpath,但是由于对xpath不甚了解.绕了个大圈后还是决定用DOMDocument来做. 在此做一个标记,以后找资料的时候也不用太辛苦. 先从数据库读取数 ...

最新文章

  1. c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
  2. 【Qt】Qt中的快捷键汇总
  3. linux nfs共享目录集群,CentOS7通过NFS共享文件夹,主要用于集群部署时候,文件的共享...
  4. 新研究:长寿又健康的秘诀
  5. 内固定取出术后护理_“钢铁侠“们注意了——身体内的钢板或内固定需要取出吗?...
  6. Netty工作笔记0079---Log4j整合到Netty
  7. wps表格数字和名字分开_WPS表格怎么把一串数字用句号分?
  8. Eclipse之智能提示 actionscript javascript java开发环境智能提示
  9. 在Windows系统上安装PHP工作环境
  10. 使用RateLimiter完成简单的大流量限流
  11. 冗余代码检查工具Simian
  12. 数字信号处理--FFT与蝶形算法
  13. linux 查看链接文件,Linux下的链接文件详解
  14. mysql 服务无法启动
  15. 360校招 求立方体表面积
  16. 平年和闰年c语言程序,C语言平年,平年闰年问题
  17. App Links(APP关联)
  18. Pandas - 5.缺失值处理
  19. eclipse安卓 DDMS中打不开Sdcard文件夹的问题
  20. Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题

热门文章

  1. ORA-29807: specified operator does not exist
  2. PHP正则表达式函数用法
  3. 主机路由在计算机中的应用
  4. 如何做好会员用户画像分析,比消费者本身更懂自己?
  5. 超过3000赞的「机器学习路线图」,教你升级打怪全攻略
  6. 只有单杀技能的飞鸽传书
  7. 出现在海马#30524;前的c++
  8. 虚函数表 对C++ 了解的人都应该知道虚函数
  9. 六大加密工具让数据传送安然无恙
  10. Visual C++中的ODBC编程实例