Assembly 汇编-将DWORD转换为宽字符(Unicode)

Assembly 汇编-将DWORD转换为宽字符(Unicode),assembly,Assembly,我已经通过静态注入(代码洞)将dll加载到程序中。我已经调用了一个没有参数的dll函数,所以没关系,但我想调用一个内存地址作为参数之一的函数。 例如:MyDllFunction(…,LPCWSTR MemoryAddress) 内存地址(如027B02A3)位于局部变量[EBP-8]中。 我猜(相当肯定)我不能只是:推[EBP-8]? 我该怎么做才能做到这一点? 或者重写dll函数以获取DWORD而不是LPCWSTR并在那里进行转换更容易吗?我想我在某处看到了一个使用swprintf_的示例 我

我已经通过静态注入(代码洞)将dll加载到程序中。我已经调用了一个没有参数的dll函数,所以没关系,但我想调用一个内存地址作为参数之一的函数。
例如:
MyDllFunction(…,LPCWSTR MemoryAddress)

内存地址(如027B02A3)位于局部变量[EBP-8]中。
我猜(相当肯定)我不能只是:
推[EBP-8]

我该怎么做才能做到这一点? 或者重写dll函数以获取DWORD而不是LPCWSTR并在那里进行转换更容易吗?我想我在某处看到了一个使用swprintf_的示例


我还没有汇编方面的经验(或C/C++),以前只使用过硬编码字符串。

您希望
MemoryAddress
包含
L“027B02A3”
还是指向
027B02A3
处的
WCHAR
字符串?如果是后一个
push[ebp-8]
应该可以工作(为了在堆栈上获取该值,可能还有其他问题)。是的,我希望MemoryAddress包含L“027B02A3”。感谢您帮助我澄清。如果您知道如何使用
swprintf_
(或
swprintf
),只需先走一步就可以了。否则,请查看如何创建包含十六进制值的ascii字符串。当然,您必须添加额外的0字节才能使其成为宽字符字符串。(即“12”{0x31,0x32,0x00}->L“12”{0x31,0x00,0x32,0x00,0x00,0x00})我通过在dll文件中使用swprintf_s解决了这个问题。不过,您给了我一个有趣的选择。您希望
MemoryAddress
包含
L“027B02A3”
还是指向
027B02A3
中的
WCHAR
字符串?如果是后一个
push[ebp-8]
应该可以工作(为了在堆栈上获取该值,可能还有其他问题)。是的,我希望MemoryAddress包含L“027B02A3”。感谢您帮助我澄清。如果您知道如何使用
swprintf_
(或
swprintf
),只需先走一步就可以了。否则,请查看如何创建包含十六进制值的ascii字符串。当然,您必须添加额外的0字节才能使其成为宽字符字符串。(即“12”{0x31,0x32,0x00}->L“12”{0x31,0x00,0x32,0x00,0x00,0x00})我通过在dll文件中使用swprintf_s解决了这个问题。不过你给了我一个有趣的选择。