我的汇编函数推送数据两次
My assembly function push data twice
所以我一直在调试它并制作了一个向服务器发送数据包的函数
这里是函数
Naked void CB::Send_To_Server(CHARARRAY Buffer, int Length)
{
__asm
{
PUSH ESI
LEA EAX, Length
MOVZX ECX, DWORD PTR DS : [Buffer]
PUSH ECX
PUSH EAX
MOV ECX, NetworkClass
CALL Send_Packet_Original_Address
POP ESI
RET
}
}
这里的问题首先出现在我调试我的应用程序时,它显示
该函数有 3 个参数而不是 2 个(缓冲区、长度、长度)和
当我使用它时,它实际上第一次将长度推了两倍是
第二次正确的长度是一些奇怪的负长数,比如
-29470056 <---- 不是一个仅向我展示的示例的值
所以你可能会看到我对 c++ 和 asm 都不好所以如果有人有
关于如何解决这个问题的想法或者这可能是正常的我非常感谢你的帮助:)
为了通过名称引用参数 EBP
必须在函数入口处设置为 ESP
的值,如果函数未声明为 naked,这将自动完成。
所以我一直在调试它并制作了一个向服务器发送数据包的函数
这里是函数
Naked void CB::Send_To_Server(CHARARRAY Buffer, int Length)
{
__asm
{
PUSH ESI
LEA EAX, Length
MOVZX ECX, DWORD PTR DS : [Buffer]
PUSH ECX
PUSH EAX
MOV ECX, NetworkClass
CALL Send_Packet_Original_Address
POP ESI
RET
}
}
这里的问题首先出现在我调试我的应用程序时,它显示 该函数有 3 个参数而不是 2 个(缓冲区、长度、长度)和 当我使用它时,它实际上第一次将长度推了两倍是 第二次正确的长度是一些奇怪的负长数,比如 -29470056 <---- 不是一个仅向我展示的示例的值
所以你可能会看到我对 c++ 和 asm 都不好所以如果有人有 关于如何解决这个问题的想法或者这可能是正常的我非常感谢你的帮助:)
为了通过名称引用参数 EBP
必须在函数入口处设置为 ESP
的值,如果函数未声明为 naked,这将自动完成。