首页
社区
课程
招聘
看一下这个DLL的参数问题
发表于: 2006-7-31 18:01 3734

看一下这个DLL的参数问题

2006-7-31 18:01
3734
程序是用DELPHI编写的.
  
  .  8D85 EEF7FFFF lea     eax, [ebp-812]
  .  50            push    eax                   ;空内容;存放结果
  .  56            push    esi                   ;EAX长度
  .  8D85 EDF3FFFF lea     eax, [ebp-C13]        :ASCII'ABCD1234',这里是密钥;
  .  50            push    eax                    
  .  57            push    edi                   ;EAX长度
  .  8D85 EFFBFFFF lea     eax, [ebp-411]        ;ASCII'123456789'明文
  .  50            push    eax
  .  E8 8604FFFF   call    <jmp.&dll.myfunc>     这里是调用了DLL

我用DELPHI调用时,5个参数.是一个接一个
push edi
push esi
是样的格式.
能不能帮忙看看,这个DLL的参数是什么类型的啊.DLL是用VC写的,调用程序是DELPHI的.

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
如果是vc的话,多半是__cdecl
2006-7-31 18:23
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
3
Delphi的话 也有可能是Fastcall 他是默认的
2006-7-31 20:32
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
4
函数原型大致如此:
myfunc(char* szPlantext,int iLen_in,char* szKey, int iLen_out, char* szCiphertext)
第一个参数是明文字符串的地址指针,第二个参数是要加密的明文的长度,第三个是密钥字符串的地址指针,第四个是输出密文的长度,第五个参数是保存加密后的字符串的缓冲区地址。
2006-8-1 00:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
重新写了一个,发现调用前的参数是一个接一个的PUSH的。
|.  50            push    eax
|.  8B45 F0       mov     eax, [ebp-10]
|.  50            push    eax
|.  56            push    esi
|.  57            push    edi
|.  53            push    ebx                           

是不是有可能是在delphi的调用方式上出的错?
function myfunc(min:pchar; mi:integer;key:pchar; ki:integer; s:pchar):pchar ;stdcall; external 'mydll.dll'
编译通过的。
2006-8-2 13:51
0
游客
登录 | 注册 方可回帖
返回
//