首页
社区
课程
招聘
怎样把一个dll中的导出函数移植到另一个dll中?
发表于: 2005-5-31 19:42 7787

怎样把一个dll中的导出函数移植到另一个dll中?

2005-5-31 19:42
7787
请教各位高手,怎样才能把一个dll中的导出函数移植到另一个dll中,使它成为另一个dll的内部函数?说明一下,没有源代码,只有dll文件。请教各位讨论一下用什么样的方法可以,或者这样的想法能否实现。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 58782
活跃值: (21931)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
如果其代码不是太复杂,有实现可能。将DLL中的内部函数汇编代码提取出来,再修正一下,在高级语言中用嵌入汇编编译即可。以前论坛中一些注册机就是用这思路重复利用程序中的某段汇编代码的。
2005-5-31 20:12
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢看雪兄的回复,感谢提供的方法。函数代码有点复杂,一共10几个函数,并且在函数中又调用了其它的dll函数。
2005-5-31 20:25
0
雪    币: 302
活跃值: (415)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
4
例如:
    已知A.DLL中有20个函数,B.DLL中有10个函数,将A.DLL转换成A.LIB,重写B.DLL连接A.LIB,重写的B.DLL中应该有30个函数。这个过程有点复杂,但是有实现的可能性。我这样改造过的两个DLL:A.DLL有24个函数,B.DLL有18个函数,改造完成后的B.DLL有42个函数。
    麻烦之处是要分析两个DLL中各个函数的入口参数,入口参数弄明白了,实现起来就十分简单了。关于怎样重写B.DLL,我以前有过这样的简单说明。
    不妨试试看吧。
2005-5-31 21:49
0
雪    币: 275
活跃值: (466)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
我觉得不用那么麻烦。B.DLL中的函数调用A.DLL中的导出函数就行了,只要保持参数传递就OK了。
2005-5-31 22:13
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
试试这个Function Replacer by DEATH of Execution. 16.VII.2000
e83K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8J5L8%4c8G2L8$3I4K6i4K6u0W2M7X3g2$3k6i4u0K6k6g2)9J5k6r3g2F1k6$3W2F1k6h3g2J5K9h3&6Y4i4K6u0W2L8X3g2@1i4K6u0r3k6X3W2D9k6i4y4Q4x3V1k6#2N6r3W2D9K9i4c8A6k6i4y4Q4x3V1k6W2P5q4)9J5k6r3k6J5i4K6u0W2P5X3W2H3
This program will replace any export from a DLL with another DLL's export, it performs an automatic loading of the DLL + getting the function's address, then calling it. Could be useful sometimes.
2005-5-31 22:21
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
7
用pebound可以么?
2005-5-31 22:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
利用转向器原理~~~KERNEL32。DLL里面很多导出函数就是转向到了ntdll.dll里面
2005-6-1 03:37
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢各位大侠提供方法,我会逐个去试的。如果成功了,我就把过程贴上来。先谢谢大家!
2005-6-1 18:27
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请教 huoshan 哪里有“转向器原理” 资料 这个我不懂
2005-6-1 20:50
0
雪    币: 111
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
function dllA.ProcXXX(Arg1, Arg2)
{
  call DllB.ProcXXX(Arg1, Arg2)
}

这就是转向器原理了,8楼的你说对不?
2005-6-1 21:11
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
A和B的函数参数必须一致才可以吧?

是这样的 a.dll 中的函数调用b.dll中函数,我现在的想法是 把a.ll从b.dll中调用的函数移植到a.dll中,这样就可以减少一个dll。  我刚试过了 fly说的那个软件,不能实现我的想法。
2005-6-1 21:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
VC下面实现导出转向很容易实现
#pragma comment(linker,"/export:Myfunc=YouDll.Youfunc")
2005-6-2 00:55
0
游客
登录 | 注册 方可回帖
返回