dll中函数引用问题,帮帮忙

lance09 2002-06-03 11:34:31
a.dll中有函数声明:
init_dev(int comport):boolean


如何在delphi中声明引用????
...全文
31 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhboy 2002-06-04
  • 打赏
  • 举报
回复
这得看你这个函数里面做了些什么东西,例如有什么对象或者指针没有释放等等都会出现异常。
lance09 2002-06-04
  • 打赏
  • 举报
回复
如何解决呢????
lance09 2002-06-04
  • 打赏
  • 举报
回复
PROJECT1 在 0167:bff76737 的模块
KERNEL32.DLL 中导致无效页错误。
Registers:
EAX=00590024 CS=0167 EIP=bff76737 EFLGS=00010246
EBX=00000000 SS=016f ESP=00590000 EBP=0059000c
ECX=0059010c DS=016f ESI=85016734 FS=4fff
EDX=00000000 ES=016f EDI=00590024 GS=0000
Bytes at CS:EIP:
68 14 00 2a 00 e8 93 ac ff ff 8b 55 08 8f 82 b0
Stack dump:
00000000 00590024 00000000 005900f4 bff767b3 00590024 005900f4 00000004 00590190 ffffffff 00000000 00000000 00000000 00000000 00000000 00000000
winglion 2002-06-04
  • 打赏
  • 举报
回复
init_dev(int comport):boolean;stadcall;external 'a.Dll';
对阿!就是这样使用静态调用,看看delphi5开发指南就有了!
怎么个错法!
lance09 2002-06-04
  • 打赏
  • 举报
回复
hehe,运行这个函数返回值成功,但会提示错误
wrlj 2002-06-03
  • 打赏
  • 举报
回复
如果你要频繁使用这些导出函数
你可在单元啊unit1.pas中定义:
init_dev(int comport):boolean;stadcall;external 'a.Dll';
然后再其他单元中用uses unit1 将此单元引用就行;
当你在网络上抓到一些数据包,想知道这些包是哪个进程发出来的时候, 怎么办?这个小工具也许能帮一些忙。 这个工具采用的是HOOK进程的winsock API,把一些数据记录下来。 HOOK API在《windows核心编程》提到的有两种, 1.1 修改IAT。缺点:象shellcode常用的那种根据DLL输出表来计算函数 地址的方法,修改IAT就无法HOOK到目标函数了。 1.2 修改目标函数的前几字节,跳转到我们的函数,我们的函数里面再把那 几个字节还原,调用原函数。重复。缺点:多线程环境下这种方法并不 健壮。 29A杂志里面的文章《挂钩Windows API》也提到了几种办法: (译文见http://www.xfocus.net/articles/200403/681.html) 2.1 patch静态文件,即运行前挂钩. 2.2 也是修改IAT,跟1.1一样. 2.3 修改目标函数的前几个字节,跳转到新的函数,但不再调用原始函数,无 实际意义,作者只是做演示? 2.4 这种方法(3.2.3 保存原始函数)很COOL,其的亮点和难点就是“获取任意 地址的指令长度”。 之前我也想用2.4这种办法,但卡在如何“获取任意地址的指令长度”上面了:( 在看到《挂钩Windows API》这篇文章之前,我取了一个比较简单有效的办法: 3.1 把目标函数DLL COPY一份到内存,修改原目标函数的前几字节,跳转 到我们的函数,在我们的函数调用原函数新的COPY。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧