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

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

2004-8-3 06:54
5160
通过调用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;

这样能行得通吗????

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 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
雪    币: 3758
活跃值: (3337)
能力值: ( 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
雪    币: 3758
活跃值: (3337)
能力值: ( 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
雪    币: 3758
活跃值: (3337)
能力值: ( 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
楼主去wwww.microsoft.com/research查下就能查到的,肯定适合你这个目的
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
游客
登录 | 注册 方可回帖
返回
//