昨天我看到看雪里一贴,说是编译器的问题,是比如我用VS2012,链接选项里有一个高级选项--取消掉”随机基址“,果然可以了。
我的问题,这样固然程序老实了。但是如果写游戏外挂就麻烦了,如果我写个补丁什么的,人家可不一定用这个选项编译链接。所以我得想个办法 弄到程序 映象 进入内存的首地址。我想到 GetModualHandle 了。
我是菜菜,请教一下:
1.GetModualHandle 如果获得一个应用程序 如 E:\vs2012pj\zonjipian\211\2-1-1\debug\2-1-1.exe 进入内存后 主模块的地址?
====================
//下面这个函数老是报 找不到模块名字
HMODULE FindIMAGEBASE()
{
//原形:HMODULE GetModuleHandle( LPCTSTR lpModuleName);
//char* p_game="2-1-1.exe";-------------------------------------------------A
//LPCTSTR lps ="E:\vs2012pj\zonjipian\211\2-1-1\debug\2-1-1.exe"; ----------B
// const char p[200] ="D:\\2-1-1.exe";后来实在没办法把文件拷到一个简单的目录也不行--C
const char* p ="E:\\vs2012pj\\zonjipian\\211\\2-1-1\\Debug\\2-1-1.exe";------D
HMODULE my_imageBase;
my_imageBase= GetModuleHandle(p);
//int q=GetLastError(); 不管是A B C D 全报126错误,找不到指定模块!
return my_imageBase;
}
不管是A B C D 全报126错误,找不到指定模块!求解
3 个解决方案
#1
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址? 今天下午问了一个群里的朋友,他的意思是这样。 他说除非注入别的程序。。。? 是不是这个意思?
#2
我现在用远程注入的方法解决了,但是有没有更简单的方法?
一句话
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址?
谢谢
一句话
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址?
谢谢
#3
版本不一样,基址也不同,32位和64位也有差异。
#1
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址? 今天下午问了一个群里的朋友,他的意思是这样。 他说除非注入别的程序。。。? 是不是这个意思?
#2
我现在用远程注入的方法解决了,但是有没有更简单的方法?
一句话
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址?
谢谢
一句话
getmoudlehander 这个函数 是不是 只能获得自己模块的地址,根本没有能力获得别的程序的模块地址?
谢谢
#3
版本不一样,基址也不同,32位和64位也有差异。