首页
社区
课程
招聘
如何获取模块的入口地址.
发表于: 2008-12-14 15:59 4890

如何获取模块的入口地址.

2008-12-14 15:59
4890
A.exe加载了module.dll,如何获取module.dll的入口地址(初始地址)?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 184
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
ntdll!_IMAGE_OPTIONAL_HEADER
   +0x000 Magic            : Uint2B
   +0x002 MajorLinkerVersion : UChar
   +0x003 MinorLinkerVersion : UChar
   +0x004 SizeOfCode       : Uint4B
   +0x008 SizeOfInitializedData : Uint4B
   +0x00c SizeOfUninitializedData : Uint4B
   +0x010 AddressOfEntryPoint : Uint4B
   +0x014 BaseOfCode       : Uint4B
   +0x018 BaseOfData       : Uint4B
   +0x01c ImageBase        : Uint4B
   +0x020 SectionAlignment : Uint4B
   +0x024 FileAlignment    : Uint4B
   +0x028 MajorOperatingSystemVersion : Uint2B
   +0x02a MinorOperatingSystemVersion : Uint2B
   +0x02c MajorImageVersion : Uint2B
   +0x02e MinorImageVersion : Uint2B
   +0x030 MajorSubsystemVersion : Uint2B
   +0x032 MinorSubsystemVersion : Uint2B
   +0x034 Win32VersionValue : Uint4B
   +0x038 SizeOfImage      : Uint4B
   +0x03c SizeOfHeaders    : Uint4B
   +0x040 CheckSum         : Uint4B
   +0x044 Subsystem        : Uint2B
   +0x046 DllCharacteristics : Uint2B
   +0x048 SizeOfStackReserve : Uint4B
   +0x04c SizeOfStackCommit : Uint4B
   +0x050 SizeOfHeapReserve : Uint4B
   +0x054 SizeOfHeapCommit : Uint4B
   +0x058 LoaderFlags      : Uint4B
   +0x05c NumberOfRvaAndSizes : Uint4B
   +0x060 DataDirectory    : [16] _IMAGE_DATA_DIRECTORY
可根据红色部分获取到
2008-12-14 16:08
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
俺德天啊!这是什么语言.

入口地址是一直固定的吗?
2008-12-14 16:12
0
雪    币: 184
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
去看下WINPE结构,你就清楚了。
2008-12-14 16:13
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
《加密与解密》第三版里面有吗?
2008-12-14 16:15
0
雪    币: 184
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
有的。
123456
2008-12-14 16:16
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还得再绕一圈,但不知最终是否能明白,呵呵
2008-12-14 16:27
0
雪    币: 215
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是要这个吗?或者是下面代码里定义了没用上的ModInfo.EntryPoint?忘了怎么获取ModInfo了,网上到处抄VC改的

uses psapi;
Function GetModuleBase(mName: String):Dword;
var
Mods: array [0..1024] of HMODULE;
ModInfo: TModuleInfo;
cbNeeded, i: Dword;
ModName: array[0..254] of char;
begin
  if EnumProcessModules(hProcess, @Mods[0], SizeOf(Mods), cbNeeded) then
  begin
    for i := 0 to cbNeeded - 1 do
    begin
      if (Mods[i]<>0)and(GetModuleBaseName(hProcess, Mods[i], @ModName, SizeOf(ModName))>0) then
      begin
        GetModuleInformation(hProcess, Mods[i], @ModInfo, SizeOf(ModInfo));
        if POS(LowerCase(mName),LowerCase(ModName))>0 then
        begin
          result := Mods[i];
          Exit;
        end;
      end;
    end;
  end;
  result := 0;
end;
2008-12-14 18:54
0
游客
登录 | 注册 方可回帖
返回
//