首页
社区
课程
招聘
[已解决] 求一个32程序调用64位dll例程,最好用delphi,易语言也可以 300雪币
发表于: 2024-7-20 17:22 3378

[已解决] 求一个32程序调用64位dll例程,最好用delphi,易语言也可以 300雪币

2024-7-20 17:22
3378
收藏
免费 0
支持
分享
最新回复 (57)
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
楼主把易语言实现LoadLibraryEx64函数代码发出来看一下?没装易语言看不到其源码
2024-7-23 15:40
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
.版本 2

.子程序 LoadLibraryEx64, 长整数型, 公开, 加载本地 64 位 DLL 链接库,与 32 位实现不同,这个无法加载内存链接库,但可以加载本地 64 位的 DLL 已经能干太多的事儿了。
.参数 Reserved0, , , 该参数暂时无用,输入 0 即可,用于后期扩展(其实是给外部进程加载模块的,只是没写完,累了,下次再说吧)
.参数 lpLibFile, 文本型, , 必须是本地 DLL 文件名(除了系统 DLL 之外必须是完整路径,即使在运行目录下)
.参数 dwFlags, , 可空, LOAD_* 常量之一或组合,不支持 LOAD_TYPE_* 常量
.局部变量 fs
.局部变量 pMods

fs = 0
pMods = g_Mods
置入代码 (#X64_SaveFs)
置入代码 (#X64_Start)
置入代码 ({ 72, 129, 196, 224, 252, 255, 255, 72, 137, 92, 36, 64, 103, 139, 93, 248, 139, 91, 4, 72, 141, 76, 36, 48, 103, 139, 85, 12, 103, 139, 18, 72, 139, 131, 136, 0, 0, 0, 255, 208, 72, 141, 84, 36, 48, 72, 15, 183, 2, 72, 133, 192, 116, 126, 72, 209, 224, 72, 61, 208, 2, 0, 0, 119, 122, 72, 51, 201, 72, 137, 76, 36, 32, 72, 141, 76, 36, 32, 102, 137, 1, 72, 141, 64, 2, 102, 137, 65, 2, 72, 141, 68, 36, 80, 72, 137, 65, 8, 77, 51, 192, 72, 139, 131, 168, 0, 0, 0, 255, 208, 133, 192, 120, 78, 76, 141, 76, 36, 48, 76, 141, 68, 36, 32, 103, 139, 85, 16, 72, 137, 84, 36, 56, 72, 141, 84, 36, 56, 72, 51, 201, 72, 139, 131, 32, 1, 0, 0, 255, 208, 133, 192, 120, 38, 72, 139, 68, 36, 48, 72, 139, 208, 72, 193, 234, 32, 72, 139, 92, 36, 64, 72, 129, 196, 32, 3, 0, 0, 235, 20, 184, 123, 0, 0, 0, 235, 5, 184, 206, 0, 0, 0, 72, 51, 210, 72, 255, 202, 235, 222 })
置入代码 (#X64_End)
置入代码 (#X64_RestoreFs)
置入代码 ({ 133, 210, 121, 40, 139, 200, 133, 201, 121, 16, 139, 69, 248, 139, 0, 139, 128, 16, 1, 0, 0, 81, 255, 208, 139, 200, 139, 69, 248, 139, 0, 139, 128, 24, 1, 0, 0, 81, 255, 208, 51, 192, 51, 210, 139, 229, 93, 194, 16, 0 })
返回 (0)
2024-7-23 16:46
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
.版本 2

.子程序 GetProcAddress64, 长整数型, 公开, 取 64 位函数调用地址
.参数 hModule, 长整数型, , 本模块 GetModuleHandle64* 函数返回值,一般的只能传递 ntdll.dll 的基址
.参数 lpProcName, 文本型, , 直接调用 64 API 实现而不是取哈希查询,所以区分大小写
.局部变量 fs
.局部变量 pMods

fs = 0
pMods = g_Mods
置入代码 (#X64_SaveFs)
置入代码 (#X64_Start)
置入代码 ({ 72, 51, 210, 103, 72, 139, 69, 8, 72, 133, 192, 116, 97, 72, 131, 196, 192, 103, 139, 85, 16, 103, 139, 18, 72, 141, 76, 36, 48, 103, 139, 69, 248, 103, 139, 64, 4, 103, 72, 139, 128, 136, 0, 0, 0, 255, 208, 76, 141, 76, 36, 32, 77, 51, 192, 72, 141, 84, 36, 48, 103, 72, 139, 77, 8, 103, 139, 69, 248, 103, 139, 64, 4, 103, 72, 139, 128, 184, 0, 0, 0, 255, 208, 72, 51, 210, 72, 255, 202, 133, 192, 120, 12, 72, 139, 68, 36, 32, 72, 139, 208, 72, 193, 234, 32, 72, 141, 100, 36, 64 })
置入代码 (#X64_End)
置入代码 (#X64_RestoreFs)
置入代码 ({ 133, 210, 121, 19, 139, 200, 139, 85, 248, 139, 2, 139, 128, 164, 1, 0, 0, 255, 208, 51, 192, 51, 210, 139, 229, 93, 194, 12, 0 })
返回 (0)
2024-7-23 16:49
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
#X64_SaveFs={140,101,252,184,43,0,0,0,102,142,224,131,228,240}
 #X64_Start= {106,51,232,0,0,0,0,131,4,36,5,203}
#X64_End={232,0,0,0,0,199,68,36,4,35,0,0,0,0,131,4,36,13,203}
#X64_RestoreFs={102,140,217,102,142,209,139,77,252,102,142,225}
2024-7-23 17:04
0
雪    币: 71
活跃值: (920)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
我和好奇  x86的寄存器是如何转换成 x64的
2024-7-23 17:38
0
雪    币: 30050
活跃值: (2457)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
31
别浪费时间了,32位进程是无法加载64位的DLL的。wow64ext其实是因为wow64进程内部加载了两个ntdll.dll:一个32位的,一个64位的,所以使用wow64ext,仅可以调用加载的ntdll64,当然,如果操作系统本身已经帮你加载的64位DLL比如说wow64cpu.dll,你也可以调用。其它的不要想了。如果你非要在32位进程使用其它64位的dll,可以写成COM的形式试试,或者进程间通信了。结帖吧。
2024-7-23 18:00
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
可以加载64位Dll并调用,别人早实现了!
2024-7-23 18:32
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
这些天也在看com方面的资料
2024-7-23 20:45
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34

易语言的资料相对于delphi的多很多,网上资料说32位进程可以调用 64位的dll,我不懂易语言,不知道可不可以。

最后于 2024-7-23 20:53 被JJGuo编辑 ,原因:
2024-7-23 20:50
0
雪    币: 30050
活跃值: (2457)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
35

https://github.com/gaojs/ComAddDemo

https://github.com/DarthTon/Xenos/tree/master


最后于 2024-7-23 21:22 被bestbird编辑 ,原因:
2024-7-23 21:10
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
@JJGuo
你发的源码数据有错误, g_Mods定义没找到,不如你把该易语言编译后exe文件发出来。
2024-7-24 11:02
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
tDasm @JJGuo 你发的源码数据有错误, g_Mods定义没找到,不如你把该易语言编译后exe文件发出来。

编译前的和编译后的都打包上传

上传的附件:
2024-7-24 15:09
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
g_Mods是全局变量:整数型
2024-7-24 15:11
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
怎么给你自己修改版的exe?要原版编译的exe。
你这个exe残缺了其它功能,GetProcAddress64都没有看到。
放心好了,肯定会搞出delphi版,这没有什么难度的
2024-7-24 15:32
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40

多谢,这个好象可以看到易语言源码

上传的附件:
2024-7-24 17:59
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41

要exe你给什么源码?不需要易语言源码!网上有源码下载但是没有编译成exe。对我来说看exe比看源码容易。

最后于 2024-7-24 19:14 被tDasm编辑 ,原因:
2024-7-24 19:09
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42

好的,

上传的附件:
2024-7-24 20:08
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
JJGuo 好的,

delphi版已经写完了,晚上再测试测试就可以给你了

最后于 2024-7-26 15:49 被tDasm编辑 ,原因:
2024-7-26 15:48
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
好的
2024-7-26 16:10
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45

32位和64位代码混合编写,测试可以加载64位DLL并调用。

最后于 2024-7-26 20:33 被tDasm编辑 ,原因:
上传的附件:
2024-7-26 20:30
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46

win10 64位系统用D7的编译,点加载并调用后,程序退出了,
用D11.3编译,调用后也退出。
大佬用的什么编译器
2024-7-26 21:26
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
在win7  64位系统上运行,调用也退出
2024-7-26 21:37
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
你可以在dephi里面调试,所有64位调用都正常执行并返回结果。你那个DLL问题?你说在易语言程序调用你DLL也异常
2024-7-26 22:48
0
雪    币: 14865
活跃值: (6088)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
JJGuo 在win7 64位系统上运行,调用也退出

你那个dll有问题,用我这个DLL测试什么问题都没有。

上传的附件:
2024-7-27 07:09
0
雪    币: 62
活跃值: (2052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
tDasm 你那个dll有问题,用我这个DLL测试什么问题都没有。
你的dll确实可以,大佬真是厉害,光是那么多汇编,都要搞好久,可以发一个私信我你的联系方式
2024-7-27 09:24
0
游客
登录 | 注册 方可回帖
返回
//