首页
社区
课程
招聘
[讨论]自定义LoadLibrary
发表于: 2013-10-14 11:29 10168

[讨论]自定义LoadLibrary

2013-10-14 11:29
10168
我也不知道这算不算是定义LoadLibrary 目的只是抛砖引玉 希望大大们写一篇完美实现LoadLibrary的文章 
代码呈上 
参考文章 http://bbs.pediy.com/showthread.php?t=85910

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
代码看了,但没有看懂有什么用,
MyLoadLibrary proc pDllName : dword
LOCAL @dKernelBase : dword

;;获得 kernel32.dll的基址
xor eax, eax
assume fs : nothing
mov eax, fs : 30h
;add eax, 30h
mov ebx, [eax] ; Get PEB
mov eax, [eax + 0ch] ; Get _PEB_LDR_DATA
mov eax, [eax + 1ch] ; Get InInitializationOrderModuleList
mov eax, [eax]
mov eax, [eax + 08h] ;Kernel32.dll的imageBase
mov @dKernelBase, eax
;;获得LoadLibrary的地址
invoke MyGetProcAddress,@dKernelBase, addr g_szLoadLibrary
;;调用LoadLibrary
push pDllName
call eax
ret
MyLoadLibrary endp
2013-10-14 11:33
0
雪    币: 80
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
看来是真没什么用 那就权当是对知识的总结吧
2013-10-14 11:47
0
雪    币: 1392
活跃值: (5212)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
获取loadLibrary的地址然后调用?这有什么用?

2楼的意思是 自己实现LoadLibrary这个函数。
2013-10-14 11:50
0
雪    币: 297
活跃值: (265)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
5
楼主的意思可能就是导入表中隐藏掉loadlibary吧。。。。
2013-10-14 12:04
0
雪    币: 14
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好吧,我路过,我看标题进来了
2013-10-14 12:33
0
雪    币: 11
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
楼主标题党了。。
2013-10-14 12:47
0
雪    币: 357
活跃值: (3468)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
8
改成自定义 GetProcAddress 更适合
2013-10-14 12:54
0
雪    币: 218
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵,我是向老师们学习的,非常感谢老师分享
2013-10-14 13:56
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
lz好无聊!

FARPROC CommonObject::MyGetProcAddress(CString dllName, CString funName)
{
        FARPROC lp = NULL;
        HMODULE dll = LoadLibrary(dllName);
        if (!dll)
        {
                showLogEx(false,"LoadLibrary:%s 错误",(LPSTR)(LPCTSTR)dllName);
        }
        else
        {
                //showLogEx(false,"LoadLibrary:%s 成功",(LPSTR)(LPCTSTR)dllName);
                FARPROC tmp = GetProcAddress(dll,funName);
                if (tmp)
                {
                        //showLogEx(false,"GetProcAddress:%s 成功",(LPSTR)(LPCTSTR)funName);
                        lp = tmp;
                }
                else
                {
                        showLogEx(false,"GetProcAddress:%s 错误",(LPSTR)(LPCTSTR)funName);
                }
                //FreeLibrary(dll);
        }
        return lp;
}
2013-10-14 20:07
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
lz是想自己实现这两个函数的实现方法吧,虽然很简单,许多人都会,但实现一下对汇编编程应用还是有好处的。。
2013-10-14 20:20
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
reload  = =
2013-10-15 13:09
0
雪    币: 80
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
-------------------------------
2013-10-15 14:02
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
路过,留个脚印
2013-10-15 14:34
0
游客
登录 | 注册 方可回帖
返回
//