首页
社区
课程
招聘
[旧帖] [原创]修改dll导出函数 0.00雪花
发表于: 2012-9-10 19:39 4450

[旧帖] [原创]修改dll导出函数 0.00雪花

2012-9-10 19:39
4450

今天新发现了一种修改dll导出函数的方式,可以混淆导出函数名称,希望对还不知道这个方法的童鞋有点帮助,测试的编译器是VS,其他的编译器为测试。

举例说明,实现并导出一个函数

#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif

EXPORT void ExportFunc();

void ExportFunc(){} //这里什么也没做只是为了测试

1.通常的修改dll导出函数的方式

MSDN的介绍/EXPORT:entryname[=internalname][,@ordinal[,NONAME]][,DATA]

#pragma comment(linker,"/EXPORT:Ob688b8bc2a7426de66df8e77b152fc05=_ExportFunc")

使用depends工具查看效果

这里共导出了两个函数,名称不同,函数地址一样,起不到混淆的作用

2.新发现的方法,使用#define 重定义函数名称

#define  ExportFunc Ob688b8bc2a7426de66df8e77b152fc05

EXPORT void ExportFunc();

使用depends工具查看效果

这里我们只看到了Ob688b8bc2a7426de66df8e77b152fc05这样一个函数了


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (20)
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习,路过
2012-9-10 20:09
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
挂机的话我就没增长过,发现只有在这个版块回复才能赚K。
2012-9-12 14:18
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错的混淆方式。。
2012-9-12 17:58
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
改名函数可以调用么,给个例子呀
2012-9-12 21:52
0
雪    币: 111
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
这个混淆针对的是外部工具查看猜出函数功能,内部开发直接使用原始函数名

例如
#define  ExportFunc Ob688b8bc2a7426de66df8e77b152fc05
内部开发可以显式调用dll导出函数,包含dll的头文件,直接调用ExportFunc
非显式调用的话,你只能通过GetProcAddress API,动态获取Ob688b8bc2a7426de66df8e77b152fc05这个函数名称的地址了

也就说对内开发来讲,直接使用原始函数名,没有任何影响
混淆的概念是对外部的
2012-9-15 11:21
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
感谢分享,你己转正。
2012-9-15 12:43
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你在编译的时候就改了啊!
2012-9-19 16:38
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
有点像系统dll 中
name     hint
N/A        0x12345678
2012-9-19 17:59
0
雪    币: 120
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哇,原来有这样好的功能啊,学习了
也就是说,我只要知道这个函数的原本名字, 使用原本名字,依旧可以调用?
2012-9-19 18:22
0
雪    币: 104
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
路过,学习!
2012-9-21 08:44
0
雪    币: 220
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
路过,学习了
2012-9-21 09:39
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
= =,这也行么
直接用def文件,然后写入

EXPORTS
ExportFunc @ 1 NoName

连名字都不给他看,但是自己程序可以很好的调用ExportFunc 函数,因为咱有lib文件啊。
2012-9-21 16:44
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢,学习....................
2012-9-21 23:56
0
雪    币: 243
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习一下,没有关注过这块
2012-9-22 08:49
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享,谢谢楼主
2012-9-23 10:06
0
雪    币: 17
活跃值: (3783)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习一下。。。。。。。。。。
2012-9-28 13:00
0
雪    币: 17
活跃值: (3783)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习学习。。。
2012-10-10 08:02
0
雪    币: 274
活跃值: (30)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
有点像 GetModuleHandle,
2012-10-11 10:11
0
雪    币: 6566
活跃值: (4526)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
22
学习一下,以后用的上
2012-10-11 12:41
0
雪    币: 266
活跃值: (44)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
zhuan kekekekeke
2012-10-11 17:30
0
游客
登录 | 注册 方可回帖
返回
//