// m6.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<windows.h>
#include<iostream.h>
#include<stdio.h>
HANDLE g_hProcess;
DWORD dwGoalAddr[1024],count;
int CompareAPage(DWORD dwBase,DWORD goal)
{
DWORD i;
BYTE arBytes[4096];
if(!::ReadProcessMemory(g_hProcess,(LPVOID)dwBase,arBytes,4096,NULL))
{
return FALSE;
}
DWORD * lpDw;
for(i=0;i<4096-3;i++)
{
lpDw=(DWORD*)&arBytes[i];
if(count>=1024) return FALSE;
if(*lpDw==goal)
dwGoalAddr[count++]=dwBase+i;
}
return count;
}
int FirstFind(DWORD goal)
{
const DWORD dwOneGB=1024*1024*1024;
const DWORD dwOnePage=4*1024;
DWORD dwBaseAddr;
OSVERSIONINFO vi;
::GetVersionEx(&vi);
if(vi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
dwBaseAddr=4*1024*1024;
else
dwBaseAddr=64*1024;
count=0;
for(;dwBaseAddr<2*dwOneGB;dwBaseAddr+=dwOnePage)
{
CompareAPage(dwBaseAddr,goal);
}
return 0;
}
int ShowAddr(int k)
{
int i;
for(i=0;i<k;i++)
printf("%08lX\n",dwGoalAddr[i]);
return 1;
}
int FindNext(DWORD goal)
{
int i,k=0;
LPVOID lpAddr;
DWORD gValue;
for(i=0;i<(int)count;i++)
{
lpAddr=(LPVOID)dwGoalAddr[i];
::ReadProcessMemory(g_hProcess,(LPVOID*) dwGoalAddr[i],&gValue,sizeof(DWORD),NULL);
if(gValue==goal) dwGoalAddr[k++]=dwGoalAddr[i];
}
return k;
}
int main()
{
DWORD goal;
// char fileName[]="D:\\VC\\02testor\\Debug\\main.exe";
char fileName[] = "E:\\miao\\VC6\\MyProjects\\01test\\Debug\\01test.exe";
STARTUPINFO si={sizeof(STARTUPINFO)};
PROCESS_INFORMATION ps;
if(!::CreateProcess(NULL,fileName,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&ps))
{
printf("创建进程失败!\n");
return 0;
}
::CloseHandle(ps.hThread);
g_hProcess=ps.hProcess;
if(g_hProcess==INVALID_HANDLE_VALUE)
{
printf("进程创建失败!\n");
return 0;
}
printf("请输入你要查找的值:");
scanf("%ld",&goal);
FirstFind(goal);
//ShowAddr(count);
while(count>1)
{
printf("本次查找有%d个目标,请输入下一次要查找的值:",count);
scanf("%ld",&goal);
count=FindNext(goal);
}
if(count==0)
{
printf("没有查找到目标!\n");
return FALSE;
}
else
{
printf("请输入你要修改的值:");
scanf("%ld",&goal);
}
if(!::WriteProcessMemory(g_hProcess,(LPVOID)dwGoalAddr[0],&goal,sizeof(DWORD),NULL))
{
printf("修改内存失败!\n");
return FALSE;
}
::ReadProcessMemory(g_hProcess,(LPVOID)dwGoalAddr[0],&goal,sizeof(DWORD),NULL);
printf("最种修改为:%ld\n",goal);
//DWORD exitCode;
//GetExitCodeProcess(g_hProcess,&exitCode);
//TerminateProcess(g_hProcess,exitCode);
::CloseHandle(g_hProcess);
return 0;
}
上面需要的
#include<iostream>
#include<windows.h>
int g_nNum;
int main()
{
int i;
g_nNum=1003; i=0;
while(1)
{
printf("i=%d, &i=0X%08lX, g_nNum=%d, &g_nNum=0X%08lX\n",i++,&i,++g_nNum,&g_nNum);
getchar();
}
return 0;
}
分享到:
相关推荐
LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3LINUX学习学习3
python强化学习3.zip
"神经网络与深度学习" 本资源摘要信息涵盖了神经网络与深度学习的基础概念、机器学习、神经网络类型、优化方法、泛化错误、PAC学习理论等方面的知识点。 机器学习概述 机器学习是人工智能的一个分支,旨在让机器...
sql学习 分区类型学习3_hash单字段分区.sql
重现奥斯汀项目,学习3年
在机器学习领域,这三篇综述文章涵盖了关键的话题,包括机器学习的挑战、深度学习的原理以及稀疏表示的应用。这些主题都是当前研究的热点,对于理解和掌握机器学习技术至关重要。 首先,让我们来深入探讨机器学习...
sql学习 获取执行计划各方法学习3_(你够真实吗).sql
学习3-6岁儿童学习与发展指南语言领域心得体会.doc
机器学习 一、概述 1.什么是机器学习? 人工智能:通过人工的方法,实现或者近似实现某些需要人类智能处理的问题,都可以称为人工智能。 机器学习:一个计算机...3)基于实例的学习和基于模型的学习 4.机器学习的流程
这是三维地址绘图软件3DMINE的学习手册,对刚接触此软件的学习者应该比较有用。
在本文中,我们将深入探讨"3天入门Python机器学习"这一主题,这是一份压缩包文件,包含了关于机器学习基础知识的教程。通过这份资源,初学者可以在短短三天内建立起对机器学习的基本理解,并掌握一些核心算法的实现...
声明:使用本方法学习所产生的后果由学习者自己承担,本文档生产者不承担任何责任。...3、 根据你的网速你所有的课程能在10分钟内学完,神吧,试试吧 4、 本浏览器用.Net 2.0开发,需要2.0的运行时
《3ds MAXScript脚本语言完全学习手册》是一本针对有程序基础或3D知识的读者的专业教程。3ds MAXScript是Autodesk 3ds Max软件内置的一种强大的脚本语言,它允许用户自定义工作流程,创建插件,以及自动化各种任务,...
turtlebot3强化学习避障,包括DQN, DDPG,PPO,SAC。 转载地址 https://github.com/Crawford-fang/ROS_pytorch_RL/tree/main/DQN 我就用过DQN,里面有很多需要修改的地方。主要是包括路径的代码,改成自己的路径。...
机器学习实战源代码(内含测试数据、以及Python3的源代码)
H3C的 CCNA基础学习文档,
李宏毅老师深度学习PPT的发布,为深度学习的学习者提供了一套全新的学习资源,这套资源不仅涵盖了深度学习的基础知识,还包括了诸如元学习、终身学习和强化学习等前沿技术。 元学习的概念,被誉为“学习的学习”,...
3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够...
1、本资源为台大李宏毅深度学习课程作业数据集。 2、训练集内含课程所需数据集 3、提供下载便利
3. 训练模型:使用训练数据对模型进行迭代优化,调整权重以最小化预测误差。 4. 验证与调整:在验证数据集上测试模型性能,根据结果调整模型参数或网络结构。 5. 应用模型:将训练好的模型集成到Halcon应用中,实现...