首页
社区
课程
招聘
通过调用DLL文件来增加程序的功能??
发表于: 2004-8-3 06:54 5263

通过调用DLL文件来增加程序的功能??

2004-8-3 06:54
5263
通过调用DLL文件来增加程序的功能??

    这样可能吗???

例如..
1、建立一个DLL工程myDLL。
    2、输入如下代码:
    type TMyProc = function(n:Integer): Integer;
     
    function CallMyProc(SProc:TMyProc):String;
    begin
     CallMyProc := IntToStr(SProc(2));
    end;
     
    exports CallMyProc;
     
    这里,CallMyProc的参数是一个函数,函数的参数和返回值的类型由TMyProc定义。
    3、编译为DLL。
    4、打开一个EXE工程MyPrj。
    5、用123112---为delphi程序添加N个功能按钮!的方法来.添加一个按钮Button1。
    6、输入如下代码:
    type TMyProc = function(n:Integer): Integer;
    function CallMyProc(SProc:TMyProc):String;external 'mydll.dll';
     
    function Square(n:integer):integer;
    begin
     Square := n * n;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ShowMessage(CallMyProc(Square));
    end;
    这里调用了DLL的CallMyProc并将Square函数传递给DLL 。
    需要说明的是:这里的Square函数不是TForm的成员函数。如果定义为:
    function TForm1.Square(n:integer):integer;
    则MyPrj和MyDLL中的定义都要修改:
    type TMyProc = function(n:Integer): Integer of object;

这样能行得通吗????

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

收藏
免费 1
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么会这么费事啊,去研究下microsoft的detour吧,人家detouer个圈子就做出来了,我知道很多搞破解的人是知道,但是没人愿意提detour,是不是怕别人知道啊/啊?啊?中国人心眼就是小啊
2004-8-3 08:49
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
detouer??

  是什么呀??

我还是新手。。不了解。。

  给我讲讲好吗??
2004-8-3 12:51
0
雪    币: 3750
活跃值: (3572)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
4
楼主这个跟Detour完全是两码事,Detour是替换函数流程,楼主是要加.
别无缘无固扯到什么骂中国人

如exe程序有这2个API,可以LoadLibrary + GetProcAddress来调你写的mydll,也可以在exe导入表加入你dll里面导出的function,
当然dll写的建议时候用stdcall修饰,然后用标准的WinAPI入栈
但是在dfm窗体中输入function的定义这个是行不通的.

至于你举的例子,你新建一个exe工程那当然是可以的,但是对成品的exe,方法和有源码编译是完全不一样的.
2004-8-3 13:08
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Detour是替换函数流程

    替换函数流程是什么意思。。

讲详细点好么?

又问这些#¥%#$%^&*的问题。。汗。。。本人太菜了。。讲讲吧
2004-8-3 13:13
0
雪    币: 3750
活跃值: (3572)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
6
最初的Detour是将系统同名dll来欺骗电脑,使电脑装入这个假的dll,假的dll里面有针对真的dll的导出功能,都会调用真的dll来执行,在调用前当然可以对数据做手脚,也可以不去调用真的dll.
不过,不能保证一定有效,我在2K3上用微软的例子,系统就会优先使用System32目录,而不是使用当前目录的假dll了.
所以我认为这个假dll的方法,没有实打实修改程序来的实在.
后来这种方法用的多了,也用了在假dll载入时候延时修改程序,但是假dll不一定会载入.
2004-8-3 13:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
胡说8道吧,再仔细研究下detour吧,不要没有对detour进行仔细研究,甚至都没仔细理解它给出的power point, word 等document就乱说话
2004-8-3 13:52
0
雪    币: 3750
活跃值: (3572)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
8
那请你回答楼主问题,表现出你不是中国人的一面
2004-8-3 14:26
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
什么跟什么嘛??
2004-8-3 16:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主去w318K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5c8Y4u0W2M7$3g2S2M7X3y4Z5i4@1f1$3i4K6W2r3i4@1p5#2i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1#2i4@1t1H3i4@1t1I4i4@1f1^5i4K6R3K6i4@1u0p5i4@1f1$3i4K6W2r3i4@1p5#2i4@1f1#2i4K6R3^5i4@1t1H3i4@1f1%4i4K6W2m8i4K6R3@1i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1^5i4K6R3J5i4@1q4r3i4@1f1#2i4@1q4q4i4K6W2m8i4@1f1&6i4K6R3H3i4K6R3J5i4@1f1#2i4K6V1H3i4K6R3^5i4@1f1@1i4@1u0p5i4@1p5H3i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1%4i4K6W2n7i4@1q4q4i4@1f1%4i4K6W2m8i4K6R3@1
2004-8-3 18:55
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
11
不管怎么讲曾大哥的关于楼主的问题的回答和热情是值得肯定的

至于那个什么"破解的人是知道"的detour,俺不搞破解,不晓得
2004-8-3 23:07
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不管怎么说。。还是谢谢各位了。

本人・#¥%#$%^得很。。。:D
2004-8-4 06:56
0
游客
登录 | 注册 方可回帖
返回