我找到一个游戏程序的基址,但在游戏重新启动后仍然会有变化, 但xxx.dll+5778 这个偏移是不变的.
xxx.dll的基址+5778 这个地址就可以得到这个游戏基址.
问题:
基址会根据这个dll的载入点不同变化? 如何取得这个xxx.dll的基址? 希望给出代码!
5 个解决方案
#1
var
hLib: THandle;
tInf: TModuleInfo;
begin
hLib:= LoadLibray('xxx.dll');
if hLib <> 0 then
begin
GetModuleInformation(GetCurrentProcess, hLib, @tInf, SizeOf(tInf));
// 这个就是你想要的:
// tInf.lpBaseOfDll^
end;
//...
end;
#2
谢谢,菜鸟就是麻烦,多理解!
#3
uses
psapi;
//不好意思,写错一个单词: LoadLibrary
edit1.Text:= Format('%d', [DWORD(tInf.lpBaseOfDll)]);
psapi;
//不好意思,写错一个单词: LoadLibrary
edit1.Text:= Format('%d', [DWORD(tInf.lpBaseOfDll)]);
#4
太感谢了,对你的仰慕之情......
#5
你好,怎么我用不了?读不出这个DLL的基址?
#1
var
hLib: THandle;
tInf: TModuleInfo;
begin
hLib:= LoadLibray('xxx.dll');
if hLib <> 0 then
begin
GetModuleInformation(GetCurrentProcess, hLib, @tInf, SizeOf(tInf));
// 这个就是你想要的:
// tInf.lpBaseOfDll^
end;
//...
end;
#2
谢谢,菜鸟就是麻烦,多理解!
#3
uses
psapi;
//不好意思,写错一个单词: LoadLibrary
edit1.Text:= Format('%d', [DWORD(tInf.lpBaseOfDll)]);
psapi;
//不好意思,写错一个单词: LoadLibrary
edit1.Text:= Format('%d', [DWORD(tInf.lpBaseOfDll)]);
#4
太感谢了,对你的仰慕之情......
#5
你好,怎么我用不了?读不出这个DLL的基址?