vc++教程之win7下基址定位处理

作者:无名  邮箱:coolmoonf($#)163.com  博客:http://blog.csdn.net/nnsword

处理目标程序如下:

里面有二个方法,一个加血,一个是减血。由于系统是win7,寻到的Call基址,会改变,所以不能通过固定基址来远程调用这二个方法。所以我们只能变通了。

首先我们知道,编译后程序相对于模块基址的偏移量是不变的,所以我们可以按这个思路来处理。

首先分析寻找二个方法的基址(怎么分析,在这不多说明),如下:

加方法基址:012F35B0

减方法基址:012F36A0

当前模块基址:012e0000

根据刚才思路我们计算出二个方法的偏移,如下:

计算公式:基址偏移=基址-模块基址

加方法基址:135b0

减方法基址:136a0

根据思路我们调用时的正确基址计算公式应该如下:

基址=模块基址+基址偏移

下面是实例代码片段:

//远程执行代码
//iaddress  基址偏移 计算公式:基址-模块基址
void RemoteCall(int iaddress){
	HWND hwnd=::FindWindow(NULL,_T("WyHelperTest"));
	if (!hwnd)
	{
		return;
	}
	DWORD pid;
	::GetWindowThreadProcessId(hwnd,&pid);

	HANDLE hModuleSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);
	if (hModuleSnap==INVALID_HANDLE_VALUE)
	{
		AfxMessageBox(_T("创建进程模块失败!"));
	}
	MODULEENTRY32 me;
	me.dwSize=sizeof(me);
	Module32First(hModuleSnap,&me);
	int dwBaseAddr;
	//memcpy(&dwBaseAddr,me.modBaseAddr,4);
	dwBaseAddr=(int)me.modBaseAddr;
	char ch[MAX_PATH];
	itoa(dwBaseAddr,ch,16);

	iaddress+=dwBaseAddr;

	HANDLE hdl=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
	DWORD tid;
	HANDLE rhdl=::CreateRemoteThread(hdl,NULL,0,(LPTHREAD_START_ROUTINE)iaddress,NULL,0,&tid);
	CloseHandle(rhdl);
	CloseHandle(hdl);
}

调用加方法实例:

void CWyHelperDemo1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码

	RemoteCall(0x0135b0);
	//013C3570  01387B60 00387B60 00387C20  00EC7C20
	//00387B60 00387C20
	//00f700e8 00F67B60
	//         013835B0 013836A0
	//012e0000 012F35B0 012F36A0
	//         135b0    136a0
}

此实例测试环境win7  64

vc++教程之win7下基址定位处理,布布扣,bubuko.com

时间: 2024-08-04 06:19:55

vc++教程之win7下基址定位处理的相关文章

vc++教程之CreateRemoteThread

作者是:无名   QQ:16349023  Email:[email protected] 要实现线程的远程注入必须使用Windows提供的CreateRemoteThread函数来创建一个远程线程该函数的原型如下: HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddre

Linux入门基础教程之Linux下软件安装

Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc APT(Advanced Packaging Tool), 包括apt-get, apt-cache, apt-cdrom等工具,APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程,Ubuntu是Debian的发行版.Debian使用的包管理工具是dpkg

Intellij idea史上最简单的教程之Linux下安装与破解Intellij idea2017

一.前言 这一节我们介绍在Linux下如何安装与破解Intellij idea2017.现在有很多公司开发环境都是Linux,所以掌握在Linux环境下使用Idea办公也是咱们必须得掌握的技能. 下载地址:https://www.jetbrains.com/idea/download/#section=linux 记住我们下载的是Ultimate(旗舰版),不是Community(社区版).Ultimate(旗舰版)是收费的版本,本文主要是针对这个版本的安装与破解的教程.所以各位童鞋别下错了哟.

解决Win7下VC++6.0与Office不兼容的问题

在Windows7下安装Visual C++ 6.0后,如果同时安装了Microsoft Office就会出现打开文件的时候出现异常,而导致VC6崩溃. 微软已经为我们解决了问题,开发出一个插件(FileTool.dll)来帮我们解决这个问题.http://support.microsoft.com/kb/241396/en-us#appliesto 具体方法: 1.下载FileTool.exe,并解压.下载地址http://support.microsoft.com/kb/241396/en-

Win7下vc++6.0打开项目出现问题的解决方案

Win7下vc++6.0打开项目出现Microsoft(R) Developer Studio以及Unable to register this add-in because its DLLRegist问题的解决方案 产生原因:在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打开文件的时候出现异常而导致VC6崩溃, 解决办法:微软已经为我们解决了问题,开发出一个插件(FileTool.dll)来帮我们解决这个问题. 解决此问题的步骤如下: 1.下载FileTool.ex

解决Win7下一个VC++6.0您不能直接打开多个project问题

于Win7操作系统,只需双击打开多个VC ++6.0的project当文件,前方和后方的工作区将关闭工作区,这项.VC++6.0仅仅通过文件-->开放式工作区-->找到磁盘project档,才干打开多个工作区.在xp下,我们能够设置文件打开的默认方式中去掉DDE选项.这样能够使得VC6能够直接打开多个project.但在win7下,却没有办法找到这个设置窗体.只是,经实践.能够用下面办法解决: 打开cmd: 1)输入assoc .dsp回车,确认后缀为.dsp的文件类型为dspfile. 2)

解决Win7下VC++6.0不能直接打开多个工程的问题

在Win7操作系统下,直接双击打开多个VC ++6.0的工程文件时,后打开的工作区会将前一个工作区关掉,这样,VC++6.0只能通过文件-->打开工作区-->找到磁盘中的工程文件,才能打开多个工作区.在xp下,我们可以设置文件打开的默认方式中去掉DDE选项,这样可以使得VC6可以直接打开多个工程,但在win7下,却没有办法找到这个设置窗口.不过,经实践,可以用以下办法解决: 打开cmd: 1)输入assoc .dsp回车,确认后缀为.dsp的文件类型为dspfile: 2)输入assoc .d

记录一次cefsharp1输入法在win7下异常解决定位

最近几天都被基于cefSharp封装的浏览器控件搞疯了!对于cefSharp基本满足当前所做项目的需求,但是有一个问题一直困扰我,那就是系统中偶尔会出现输入法不能转换到中文.而且这个问题似乎没有什么规律. [项目需求] 先说一下项目对浏览器控件的需求,如果没有需要做听音这个功能,其实项目可以是一个B/S架构.但是由于现在需要听音功能,所以决定使用C/S的架构.其中客户端采用浏览器控件来实现网页加载.客户端主窗口内嵌一个浏览器控件,然后页面有需要听音的时候可以点击听音然后弹出听音窗口.听音窗口又是

Win7下VC++6.0打开文件报错导致其崩溃的解决办法

原文:http://blog.csdn.net/wanghaihao_1/article/details/39005771 在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打开文件的时候出现异常而导致VC6崩溃. 如下图所示: 微软针对这个问题发布了一个补丁,原补丁是未编译的VC++6工程(FileTool),大家可以手动在VC++6.0环境下编译一下. 为了方便使用,我在这里还提供了一个已编译的版本FileTool.dll_已编译.zip 这里提供下载:FileToo