关于程序基址改变问题
来源:互联网 发布:苏宁淘宝预售靠谱吗 编辑:程序博客网 时间:2024/06/02 03:20
windows vista开始有动态基地址的功能,只要pe头Dll Characteristics有0x40每次加载时基地址都不一样
自己的程序:
要想基址固定,在链接器中去掉/DYNAMICBASE加上/FIXED
#pragma comment(linker,"/BASE:0x500000"),然后属性--链接器--高级--随机基址 禁用
别人的程序:
去掉IMAGE_OPTIONAL_HEADER.DllCharacteristics的IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
定位到DllCharacteristics后用位运算
win7下动态获取基址的函数:
void C获得基址Dlg::OnBnClickedButton1(){CString strCaption;GetDlgItemText(IDC_EDIT1,strCaption);HWND hwnd=::FindWindow(NULL,strCaption);DWORD Pid;::GetWindowThreadProcessId(hwnd,&Pid);DWORD dwBaseAddr=GetBaseAddr(Pid);strCaption.Format(_T("0x%X"),dwBaseAddr);SetDlgItemText(IDC_EDIT1,strCaption);}DWORD GetBaseAddr(DWORD pid){HANDLE hModuleSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid); if (hModuleSnap==INVALID_HANDLE_VALUE) { AfxMessageBox(_T("创建进程模块失败!")); } MODULEENTRY32 me; me.dwSize=sizeof(MODULEENTRY32); Module32First(hModuleSnap,&me); DWORD dwBaseAddr; dwBaseAddr=(DWORD)me.modBaseAddr; CloseHandle(hModuleSnap); return dwBaseAddr; }
参考:http://msdn.microsoft.com/zh-cn/library/f7f5138s.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.vcprojectengine.vclinkertool.baseaddress.aspx
CSDN 列宁的回复贴
- 关于程序基址改变问题
- win7下反汇编程序程序基址改变问题
- 关于单机游戏动态内存基址问题
- 关于基址的含义
- norflash &nandflash基址问题
- 关于虚拟打印机会改变程序目录的问题
- 关于微信小程序动态改变底部导航栏问题
- 去除程序 Asrl基址固定
- 基址
- 程序中变量自动改变的问题
- 关于ItemRenderer刷新改变值的问题
- 关于android应用图标没有改变问题。
- 关于Radiobutton 改变字体颜色问题
- 关于程序编码问题
- 关于程序耦合问题
- 内核程序中通过KPCR获取内核模块基址
- 关于“物理地址=段基址x16+段内偏移地址”
- 关于内核重载中基址重定位的一点解释
- C# 函数
- mysql root 用户密码修改
- 使用NetBox测试ASP网站
- C# 基础学习笔记
- 关于heartbeat的bug
- 关于程序基址改变问题
- 一种上传图片立即回显的解决方案
- 这样做UIView的动画
- STL算法 unique的用法
- 宏定义( 转自《Linux C编程一站式学习》)
- C#中byte 和 string 的相互转换
- 聊聊网站验证码的安全问题
- 线性表的链式存储结构之单链表结点类的实现_Java
- C++的内存管理