吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1724|回复: 13
收起左侧

[求助] 64位的动调32位的dll 能成立否?

[复制链接]
冥界3大法王 发表于 2021-4-10 17:20
64位的动调32位的dll 能成立否?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lyl610abc 发表于 2021-4-10 17:32
本帖最后由 lyl610abc 于 2021-4-10 17:35 编辑

64位可执行文件不能调用32位dll,反之亦然。除非您实际上需要应用程序为64位,否则最简单的选择是将其设置为目标x86。这仍将允许它在32位和64位版本的Windows上运行。

如果由于某种原因这不适用,则可能的解决方案是创建一个单独的32bit进程,该进程将加载32bit dll,并使您的64bit应用程序与其他进程进行通信,可能使用IPC(在某些情况下,重定向标准输入输出也可以工作,甚至只是检查过程的返回值)。无论如何,这会导致一些额外的工作;我建议您先准确地审查您的要求

以上回答 翻译自 微软社区:https://social.msdn.microsoft.co ... forum=csharpgeneral


正常来说就是:不能直接调用,也不建议你这么做。除非你的应用场景一定得要是64位的。如果实在想要这么搞,得创建一个单独的32位的进程,然后用32位的进程去加载32位的dll,之后用32位的进程和64位的程序进行通信
 楼主| 冥界3大法王 发表于 2021-4-10 18:03
lyl610abc 发表于 2021-4-10 17:32
64位可执行文件不能调用32位dll,反之亦然。除非您实际上需要应用程序为64位,否则最简单的选择是将其设置 ...

@lyl610abc
是不是就是这页面中说的注入线程
https://stackoverflow.com/questi ... orted-language-feat

或QQ群说的封装成activeX来实现?
klamauk 发表于 2021-4-10 18:09
利用长跳转跳到32位代码段然的调用应该可以吧。
 楼主| 冥界3大法王 发表于 2021-4-10 18:13
klamauk 发表于 2021-4-10 18:09
利用长跳转跳到32位代码段然的调用应该可以吧。

@klamauk 请教,能改否?
[Delphi] 纯文本查看 复制代码
//function TForm1.GetSerialMotherBoard: string;     //获取主板ID
//var
//  a, b, c, d: LongWord;
//begin
//  asm
//        push    EAX
//        push    EBX
//        push    ECX
//        push    EDX
//        mov     eax, 1
//        db      $0F, $A2
//        mov     a, EAX
//        mov     b, EBX
//        mov     c, ECX
//        mov     d, EDX
//        pop     EDX
//        pop     ECX
//        pop     EBX
//        pop     EAX
//  end;
//  result := inttohex(a, 8) + '-' + inttohex(b, 8) + '-' + inttohex(c, 8) + '-' + inttohex(d, 8);
//end;
lyl610abc 发表于 2021-4-10 18:13
冥界3大法王 发表于 2021-4-10 18:03
@lyl610abc
是不是就是这页面中说的注入线程
https://stackoverflow.com/questions/30716643/delphi-xe ...

不是很懂你发的网站的内容
想要实现64位程序加载32位DLL,需要先创建一个32位的进程,用32位进程加载32位DLL,然后使用COM实现64位程序和32位进程的通信,间接地调用32位的DLL
相关博客:https://blog.csdn.net/nie2314550441/article/details/49867735
苏紫方璇 发表于 2021-4-10 18:14
我觉得是可以的,只不过没见有人造轮子,32位调用64位的是有的,wow64ext
不太建议混合着来,兼容性不会很好

点评

又想了一下,应该不可以/非常难调用32的dll,64位进程不会去加载32的ntdll  详情 回复 发表于 2021-4-10 18:47
klamauk 发表于 2021-4-10 18:17
就是搜wow64ext,看源码吧。

点评

wow64ext是32调64吧,楼主问的64调32  详情 回复 发表于 2021-4-10 18:19
苏紫方璇 发表于 2021-4-10 18:19
klamauk 发表于 2021-4-10 18:17
就是搜wow64ext,看源码吧。

wow64ext是32调64吧,楼主问的64调32
klamauk 发表于 2021-4-10 18:22
所以我也是说个"吧"字,只是提供一下思路。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 05:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表