首页
社区
课程
招聘
利用修改版本的loaddll.exe限制DLL装入到指定地址[分享]
发表于: 2005-9-15 15:20 8856

利用修改版本的loaddll.exe限制DLL装入到指定地址[分享]

2005-9-15 15:20
8856

利用修改版本的loaddll.exe限制DLL装入到指定地址

    原始版本的loaddll.exe只是简单的LoadLibrary, 地址由系统指定, 对于同一个DLL,
你会发现每次装入的地址是一致的, 而使用DLL重定位向修复工具ReloX需要两个不同的
ImageBase的Dump, 因此将DLL限制装入到指定地址是有必要的.
    这个修改版本的loaddll.exe可以帮你玩成这个工作.

//======================================================================
//=>如何使用?
//  
1. 第一次装入
   第一次装入DLL, 这个时候我们可以在OEP出做第一Dump, Dump_1.dll;
我们此时看一下DLL的ImageBase(Alt+E), 记为ImageBaseA;

2. 修改loaddll.exe.
   修改RVA=00010084(VA=00410084,Offset=00000684)处的值, 将ImageBaseA按低位在前的顺序填入.
   (例如,ImageBaseA=01770000,则一次填入 00 00 77 01), 保存修改.
   
3. 第二次装入
   第二次装入DLL, 我们做第二次Dump, Dump_2.dll;
   很显然, Dump_1.dll, Dump_2.dll不一样; 这是可以利用ReloX进行重定位修复.

4. 平时工作
   平时可以将那个值使用一个特别的值, 比如kernel.dll的ImageBase或者其他也许会好一点,
   你也可以不管它.

//======================================================================
//=>限制原理?
//
利用VirtualAlloc将指定的虚拟内存区域分配出来, 让系统重新找一块地址给要装入的DLL,
并在DLL装入完成后释放分配的虚拟内存.

Patch函数我们暂且称为LoadDllEx, 函数原型为
_stdcall HMODULE LoadDllEx(lpMem: LPVOID);//C++描述
function LoadDllEx(lpMem: Pointer): HINSTANCE; stdcall;//Delphi描述
完成内存分配和释放并在中间装入DLL.

为了便于函数描述, 还将原LoadDll.exe中的Load部分定义为LoadDll; 函数原型描述为
_stdcall HINSTANCE LoadDll();//C++描述
function LoadDll(): HINSTANCE;stdcall;//Delphi描述
完成命令行解析和DLL装入.

函数描述:
//C++描述
_stdcall HMODULE LoadDllEx(lpMem: LPVOID);
{
  LPVOID pMem;
  HMODULE hDll;
  pMem = VirtualAlloc(lpMem,0x1000,MEM_RESERVE,PAGE_READONLY);
  hDll = LoadDll();
  VirtaulFree(pMem,0,MEM_RELEASE);
  return hDll;
}

//Delphi描述
function LoadDllEx(lpMem: Pointer): HINSTANCE; stdcall;
var
  pMem: Pointer;
begin
  pMem := VirtualAlloc(lpMem,$1000,MEM_RESERVE,PAGE_READONLY);
  Result := LoadDll();
  VirtaulFree(pMem,0,MEM_RELEASE);
end;

//======================================================================
//=>如果OD自身本来就提供这个参数就更方便了
//

附件:loaddll.rar


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

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
支持。。。。。。。。。
2005-9-15 15:57
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶一下
2005-9-15 16:03
0
雪    币: 260
活跃值: (86)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
庆祝一下某某找回帐号
2005-9-15 17:19
0
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
把妖怪都引来了
2005-9-15 18:16
0
雪    币: 136
活跃值: (135)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
6
呵呵!!!!
收下了!!
2005-9-15 19:05
0
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
7
下了试看。多谢,支持一下
2005-9-15 20:36
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
yo xi e!
2005-9-15 21:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很快就可以成为高级会员的
2005-9-16 08:52
0
雪    币: 3841
活跃值: (4412)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
10
BS老妖怪潜水
2005-9-16 09:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
收下 学习 谢谢
2005-9-16 20:06
0
游客
登录 | 注册 方可回帖
返回
//