我的汇编函数推送数据两次

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,这将自动完成。