忆魂丶天雷 发表于 2023-8-15 23:18

易语言汇编动态调用API问题

想汇编动态调用下GetThreadContext获取线程上下文,但是没效果,是call调用有问题吗?



相关附件:https://wwi.lanzouk.com/iLfom15hunmj

Bszk 发表于 2023-8-15 23:18

易语言存在4字节对齐问题,如果你是用易语言dll命令,没记错的话,他会给你自动按照其他编程语言的标准复制一份数据出来重新对齐,然后再把新内存地址传进api调用(大概是这样,有点忘了)

代码可以看看,就是自己申请一块内存构建数据结构
.版本 2
.支持库 spec

.子程序 线程_取线程环境_汇编
.参数 线程句柄, 整数型
.参数 esi, 整数型, 参考
.参数 esp, 整数型, 参考
.局部变量 API地址, 整数型
.局部变量 ret, 整数型

API地址 = 汇编_取API函数地址 (“kernel32.dll”, “GetThreadContext”)
ret = 申请内存 (204, 真)
写到内存 (65567, ret, )' ret.环境标志 = 65567
Call (API地址, 线程句柄, ret, , , , , , , , , , , , , )
esi = 指针到整数 (ret + 160)
esp = 指针到整数 (ret + 196)

调试输出 (指针到字节集 (ret, 204))' 全部数据,自己计算偏移

忆魂丶天雷 发表于 2023-8-16 09:31

Bszk 发表于 2023-8-16 01:48
易语言存在4字节对齐问题,如果你是用易语言dll命令,没记错的话,他会给你自动按照其他编程语言的标准复制 ...

那么像这种结构套结构的是连同嵌套的结构也要自己申请内存构建吗

YQSH 发表于 2023-8-16 10:24

易语言调试台难了

Bszk 发表于 2023-8-16 16:08

忆魂丶天雷 发表于 2023-8-16 09:31
那么像这种结构套结构的是连同嵌套的结构也要自己申请内存构建吗

没必要,嵌套只是让你结构更清晰
页: [1]
查看完整版本: 易语言汇编动态调用API问题